1#![allow(non_upper_case_globals, non_camel_case_types)]
2pub mod trade {
3 pub mod di;
4 pub mod idx;
5 pub mod inter;
6 pub mod ticker;
7 pub(crate) mod version;
8
9 pub mod prelude {
10 pub use super::{di::*, idx::*, inter::*, ticker::*};
11 }
12}
13
14pub mod idct {
15 pub mod calc;
16 pub mod dcon;
17 pub mod fore;
18 pub mod macros;
19 pub mod part;
20 pub mod pms;
21 pub mod ta;
22
23 pub mod prelude {
24 pub use super::{
25 calc::*,
26 dcon::{Convert::*, *},
27 fore::*,
28 part::*,
29 pms::*,
30 ta::{Max as maxta, Min as minta, *},
31 };
32 }
33}
34
35pub mod sig {
36 pub mod bt;
37 pub mod cond;
38 pub mod distra;
39 pub mod livesig;
40 pub mod pnl;
41 pub mod posi;
42
43 pub mod prelude {
44 pub use super::{
45 bt::*,
46 cond::*,
47 distra::*,
48 livesig::*,
49 pnl::*,
50 posi::{Dire::*, *},
51 };
52 pub const and: LogicOps = LogicOps::And;
53 pub const or: LogicOps = LogicOps::Or;
54 }
55}
56
57pub mod live {
58 pub mod order_types;
59 pub mod live_ops;
60 pub mod match_ops;
61 pub mod algo;
62 pub mod thread_manger;
63 pub mod live_run;
64 pub mod cross;
65 pub mod trend;
66 pub mod bt;
67
68 pub mod prelude {
69 pub use super::{
70 bt::*,
71 order_types::*,
72 live_ops::*,
73 match_ops::*,
74 algo::*,
75 live_run::*,
76 cross::prelude::*,
77 trend::prelude::*,
78 };
79 }
80}
81
82pub mod std_prelude {
83 pub use std::{
84 fmt::Debug,
85 ops::{Add, Div, Mul, Sub},
86 path::Path,
87 sync::{Arc, Condvar, Mutex, RwLock},
88 thread::{self, sleep, spawn},
89 time::{Duration as dura, Instant},
90 };
91}
92
93pub mod prelude {
94 pub use crate::{
95 gen_inter,
96 idct::prelude::*,
97 msig,
98 sig::prelude::*,
99 trade::prelude::*,
100 loge,
101 live::prelude::*,
102 };
103 pub use qust_ds::prelude::*;
104 pub use serde::{Deserialize, Serialize};
105 pub const pct: RollTa<KlineType> = RollTa(KlineType::Close, RollFunc::Momentum, RollOps::N(2));
106 pub const ono: Part = Part::ono;
107 pub const oos: Part = Part::oos;
108 pub const ori: Convert = Tf(0, 1);
109 pub const vori: FillCon = FillCon(ori);
110 pub const rank_day: Rank = Rank(400, 100);
111 pub const ha: Convert = Ha(4);
112 pub const cs1: CommSlip = CommSlip(1., 1.);
113 pub const cs2: CommSlip = CommSlip(1., 0.);
114 pub const cs_hf: (CommSlip,) = (CommSlip(1., 0.2),);
115 pub fn ta_max_n(n: usize) -> RollTa<KlineType> {
116 RollTa(KlineType::High, RollFunc::Max, RollOps::N(n))
117 }
118 pub fn ta_min_n(n: usize) -> RollTa<KlineType> {
119 RollTa(KlineType::Low, RollFunc::Min, RollOps::N(n))
120 }
121 lazy_static! {
122 pub static ref tickers3: Vec<Ticker> = vec![
123 SFer, SMer, ier, eger, ler, pper, ruer, ver, fuer, aer, aler, zner, OIer, per, RMer,
124 mer, SRer, sper, eber, cuer, SAer
125 ];
126 pub static ref tickers4: Vec<Ticker> =
127 vec![SFer, SMer, ier, eger, ler, pper, ruer, fuer, aler, OIer, per, eber, cuer, SAer];
128 pub static ref tickers30m: Vec<Ticker> = vec![
129 fuer, SAer, aler, scer, FGer, pger, ier, sner, hcer, auer, OIer, cuer, sper, SMer,
130 TAer, cser, aer, SRer, eber, MAer, SFer, ver, CFer, per, rber, cer
131 ];
132 pub static ref calc_ticker: fn(&DiStra) -> InfoPnlRes<Ticker, da> =
133 |distra: &DiStra| InfoPnlRes(
134 distra.di.pcon.ticker,
135 distra.di.pnl(&distra.stra.ptm, cs2).da()
136 );
137 pub static ref rlast: Box<dyn Pri> = {
138 let x: Box<dyn Inter> = Box::new(Rlast);
139 Box::new(x)
140 };
141 pub static ref dayk: Convert = Event(rlast.clone());
142 pub static ref dayn: Pre = ori + dayk.clone() + ono;
143 pub static ref vol_ta: RollTa<Box<dyn Ta>> =
144 RollTa(Box::new(pct), RollFunc::Std, RollOps::InitMiss(20));
145 pub static ref vol_pms: Pms = dayk.clone() + ono + vol_ta.clone() + vori;
146 pub static ref m1: Box<dyn Money> = Box::new(M1(1.));
147 }
148}
149
150#[macro_use]
151extern crate lazy_static;