qust/
lib.rs

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;