bbstrader 0.1.6__py3-none-any.whl → 0.1.7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of bbstrader might be problematic. Click here for more details.

bbstrader/trading/run.py DELETED
@@ -1,131 +0,0 @@
1
- import time
2
- import argparse
3
- from bbstrader.metatrader.trade import Trade
4
- from bbstrader.trading.execution import (
5
- sma_trading, pair_trading, ou_trading, arch_trading)
6
- from bbstrader.trading.utils import (
7
- add_sma_trading_arguments, add_pair_trading_arguments,
8
- add_ou_trading_arguments, add_arch_trading_arguments,
9
- init_trade)
10
-
11
- __all__ = [
12
- "run_sma_trading",
13
- "run_pair_trading",
14
- "run_ou_trading",
15
- "run_arch_trading",
16
- ]
17
- def run_sma_trading():
18
- # Create parser
19
- parser = argparse.ArgumentParser(
20
- description='Run SMA trading strategy.')
21
-
22
- # Add arguments for sma_trading parameters
23
- parser = add_sma_trading_arguments(parser)
24
-
25
- # Parse arguments
26
- args = parser.parse_args()
27
-
28
- # Initialize Trade with command-line arguments
29
- trade = init_trade(args)
30
-
31
- # Call sma_trading with command-line arguments
32
- sma_trading(
33
- trade,
34
- tf=args.tf,
35
- sma=args.sma,
36
- lma=args.lma,
37
- mm=args.mm,
38
- max_t=args.mxt,
39
- iter_time=args.it,
40
- risk_manager=args.rm,
41
- period=args.period
42
- )
43
-
44
- def run_pair_trading(pair=True, pchange_sl=3.0):
45
- # Create parser
46
- parser = argparse.ArgumentParser(
47
- description='Run Pair trading strategy.')
48
-
49
- # Add arguments for pair_trading parameters
50
- parser = add_pair_trading_arguments(
51
- parser, pair=pair, pchange_sl=pchange_sl)
52
-
53
- # Parse arguments
54
- args = parser.parse_args()
55
- tickers = tuple(args.pair)
56
-
57
- # Initialize Trade with command-line arguments
58
- p0 = init_trade(args, symbol=tickers[0])
59
- time.sleep(5)
60
- p1 = init_trade(args, symbol=tickers[1])
61
- # Call pair_trading with command-line arguments
62
- pair_trading(
63
- tickers,
64
- p0,
65
- p1,
66
- args.tf,
67
- ols=args.rmw,
68
- max_t=args.mxt,
69
- mm=args.mm,
70
- iter_time=args.it,
71
- risk_manager=args.rm,
72
- rm_ticker=args.rmt,
73
- rm_window=args.rmw,
74
- period=args.period
75
- )
76
-
77
- def run_ou_trading():
78
- # Create parser
79
- parser = argparse.ArgumentParser(
80
- description='Run Ornstein-Uhlenbeck trading strategy.')
81
-
82
- # Add arguments for ou_trading parameters
83
- parser = add_ou_trading_arguments(parser)
84
-
85
- # Parse arguments
86
- args = parser.parse_args()
87
-
88
- # Initialize Trade with command-line arguments
89
- trade = init_trade(args)
90
-
91
- # Call ou_trading with command-line arguments
92
- ou_trading(
93
- trade,
94
- tf=args.tf,
95
- n=args.n,
96
- p=args.p,
97
- max_t=args.mxt,
98
- mm=args.mm,
99
- iter_time=args.it,
100
- ou_window=args.ouw,
101
- rm_window=args.rmw,
102
- risk_manager=args.rm,
103
- period=args.period
104
- )
105
-
106
- def run_arch_trading():
107
- # Create parser
108
- parser = argparse.ArgumentParser(
109
- description='Run ARIMA + GARCH trading strategy.')
110
-
111
- # Add arguments for arch_trading parameters
112
- parser = add_arch_trading_arguments(parser)
113
-
114
- # Parse arguments
115
- args = parser.parse_args()
116
-
117
- # Initialize Trade with command-line arguments
118
- trade = init_trade(args)
119
-
120
- # Call arch_trading with command-line arguments
121
- arch_trading(
122
- trade,
123
- tf=args.tf,
124
- max_t=args.mxt,
125
- mm=args.mm,
126
- k=args.k,
127
- iter_time=args.it,
128
- risk_manager=args.rm,
129
- rm_window=args.rmw,
130
- period=args.period
131
- )
@@ -1,153 +0,0 @@
1
- from bbstrader.metatrader.trade import Trade
2
-
3
- def tf_mapping():
4
- time_frame_mapping = {
5
- '1m': 1,
6
- '3m': 3,
7
- '5m': 5,
8
- '10m': 10,
9
- '15m': 15,
10
- '30m': 30,
11
- '1h': 60,
12
- '2h': 120,
13
- '4h': 240,
14
- 'D1': 1440
15
- }
16
- return time_frame_mapping
17
-
18
-
19
- def init_trade(args, symbol=None):
20
- # Initializes and returns a Trade object
21
- if symbol is not None:
22
- trade_symbol = symbol
23
- else : trade_symbol = args.symbol
24
- trade = Trade(
25
- expert_name=args.expert,
26
- version=args.version,
27
- expert_id=args.id,
28
- symbol=trade_symbol,
29
- max_risk=args.mr,
30
- target=args.t,
31
- daily_risk=args.dr,
32
- max_trades=args.maxt,
33
- account_leverage=args.acl,
34
- time_frame=args.tfm,
35
- start_time=args.start,
36
- finishing_time=args.fint,
37
- ending_time=args.endt,
38
- std_stop=args.std,
39
- pchange_sl=args.psl,
40
- verbose=True,
41
- sl=args.sl,
42
- tp=args.tp,
43
- be=args.be,
44
- rr=args.rr
45
- )
46
- return trade
47
-
48
- def add_trade_arguments(parser, pair=False, pchange_sl=None, strategy=None):
49
- # Add arguments for Trade parameters
50
- parser.add_argument('--expert', type=str, default='bbstrader', help='Expert name')
51
- parser.add_argument('--id', type=int, default=0, help='Expert ID')
52
- parser.add_argument('--version', type=float, default=1.0, help='Version')
53
- parser.add_argument('--symbol', type=str, default='#SPY', help='Symbol to trade')
54
- parser.add_argument('--mr', type=float, default=5.0, help='Maximum risk')
55
- parser.add_argument('--t', type=float, default=2.0, help='Target')
56
- parser.add_argument(
57
- '--dr', type=float, default=0.25, help='Daily risk')
58
- parser.add_argument(
59
- '--maxt', type=int, default=20, help='Maximum trades', nargs='?', const=None)
60
- parser.add_argument('--acl', type=bool, default=True, help='Account leverage')
61
- if strategy is not None:
62
- if strategy == 'sma':
63
- parser.add_argument('--tfm', type=str, default='1h', help='Time frame')
64
- elif strategy == 'pair':
65
- parser.add_argument('--tfm', type=str, default='D1', help='Time frame')
66
- elif strategy == 'ou':
67
- parser.add_argument('--tfm', type=str, default='1h', help='Time frame')
68
- elif strategy == 'arch':
69
- parser.add_argument('--tfm', type=str, default='D1', help='Time frame')
70
- else: parser.add_argument('--tfm', type=str, required=True, help='Time frame')
71
- parser.add_argument('--start', type=str, default='13:35', help='Start time')
72
- parser.add_argument('--fint', type=str, default='19:50', help='Finishing time')
73
- parser.add_argument('--endt', type=str, default='19:55', help='Ending time')
74
- parser.add_argument('--std', type=bool, default=False, help='Standard Deviation stop')
75
- parser.add_argument('--rr', type=float, default=3.0, help='Risk reward ratio')
76
- if pair:
77
- if pchange_sl is not None:
78
- parser.add_argument(
79
- '--psl', type=float, default=pchange_sl, help='Percentage change stop loss')
80
- else: parser.add_argument(
81
- '--psl', type=float, default=2.5, help='Percentage change stop loss')
82
- else: parser.add_argument(
83
- '--psl', type=float, default=None, help='Percentage change stop loss', nargs='?', const=None)
84
- parser.add_argument('--sl', type=int, default=None, help='Stop loss', nargs='?', const=None)
85
- parser.add_argument('--tp', type=int, default=None, help='Take profit', nargs='?', const=None)
86
- parser.add_argument('--be', type=int, default=None, help='Break even', nargs='?', const=None)
87
- return parser
88
-
89
- def add_common_trading_arguments(parser, strategy=None):
90
- # Common trading arguments
91
- if strategy is not None:
92
- if strategy == 'sma':
93
- parser.add_argument('--tf', type=str, default='1h', help='Time frame for trading')
94
- elif strategy == 'pair':
95
- parser.add_argument('--tf', type=str, default='D1', help='Time frame for trading')
96
- elif strategy == 'ou':
97
- parser.add_argument('--tf', type=str, default='1h', help='Time frame for trading')
98
- elif strategy == 'arch':
99
- parser.add_argument('--tf', type=str, default='D1', help='Time frame for trading')
100
- else: parser.add_argument('--tf', type=str, required=True, help='Time frame for trading')
101
- parser.add_argument('--mm', type=bool, default=True, help='Money management')
102
- parser.add_argument('--mxt', type=int, default=1, help='Maximum trades')
103
- parser.add_argument('--it', type=float,default=30, help='Iteration time')
104
- parser.add_argument('--period', type=str, default='week', choices=['day', 'week', 'month'], help='Trading period')
105
- return parser
106
-
107
- def add_sma_trading_arguments(parser):
108
- # Add arguments for Trade parameters
109
- parser = add_trade_arguments(parser, strategy='sma')
110
- # Add common trading arguments
111
- parser = add_common_trading_arguments(parser, strategy='sma')
112
- # Add arguments for sma_trading parameters
113
- parser.add_argument('--sma', type=int, default=35, help='Short moving average period')
114
- parser.add_argument('--lma', type=int, default=80, help='Long moving average period')
115
- parser.add_argument('--rm', type=str, default='hmm', help='Risk manager')
116
- return parser
117
-
118
- def add_pair_trading_arguments(parser, pair=True, pchange_sl=2.5):
119
- # Add arguments for Trade parameters
120
- parser = add_trade_arguments(parser, pair=pair, pchange_sl=pchange_sl, strategy='pair')
121
- # Add common trading arguments
122
- parser = add_common_trading_arguments(parser, strategy='pair')
123
- # Add arguments for pair_trading parameters
124
- parser.add_argument(
125
- '--pair', nargs=2, required=True, help='Pair of symbols for trading, e.g., --pair GOOG MSFT')
126
- parser.add_argument('--rm', type=str, default=None, help='Risk manager', nargs='?', const=None)
127
- parser.add_argument('--rmt', type=str, default=None, help='Risk manager ticker', nargs='?', const=None)
128
- parser.add_argument('--rmw', type=int, default=None, help='Risk manager Window', nargs='?', const=None)
129
- return parser
130
-
131
- def add_ou_trading_arguments(parser):
132
- # Add arguments for Trade parameters
133
- parser = add_trade_arguments(parser, strategy='ou')
134
- # Add common trading arguments
135
- parser = add_common_trading_arguments(parser, strategy='ou')
136
- # Add arguments for ou_trading parameters
137
- parser.add_argument('--p', type=int, default=20, help='Number of time steps')
138
- parser.add_argument('--n', type=int, default=20, help='Number of simulations to perform')
139
- parser.add_argument('--ouw', type=int, default=2000, help='OU window size parameters estimation')
140
- parser.add_argument('--rmw', type=int, default=60, help='Risk manager Window', nargs='?', const=None)
141
- parser.add_argument('--rm', type=str, default=None, help='Risk manager', nargs='?', const=None)
142
- return parser
143
-
144
- def add_arch_trading_arguments(parser):
145
- # Add arguments for Trade parameters
146
- parser = add_trade_arguments(parser, strategy='arch')
147
- # Add common trading arguments
148
- parser = add_common_trading_arguments(parser, strategy='arch')
149
- # Add arguments for ou_trading parameters
150
- parser.add_argument('--k', type=int, default=500, help='Window used for prediction')
151
- parser.add_argument('--rmw', type=int, default=60, help='Risk manager Window', nargs='?', const=None)
152
- parser.add_argument('--rm', type=str, default=None, help='Risk manager', nargs='?', const=None)
153
- return parser
@@ -1,28 +0,0 @@
1
- bbstrader/__ini__.py,sha256=pXy9hM6Yh9hvIHRQS56TzEfYj97YYoc48oiYuYOfns4,478
2
- bbstrader/strategies.py,sha256=6USRp43fsLLe2rT608Glz6lmea6bvjKx8fQEgOWyUGI,24510
3
- bbstrader/tseries.py,sha256=M9x5jcdvIiAAAv1V2PSldguOHT4K6tmR2EYW_IswqI0,21779
4
- bbstrader/btengine/__init__.py,sha256=oGyNWUAqzpounayQ5ptww6vFUp58J-af-ooCMf9hFV0,3156
5
- bbstrader/btengine/backtest.py,sha256=eqeoNfm2_d0gEvSoXTqbNnEkLCq76UQEQqslL31iwSI,36744
6
- bbstrader/btengine/data.py,sha256=q8DQpdknbzLfFKIso5sRyKw8w8clH-uDxs_UqLKTT2g,13933
7
- bbstrader/btengine/event.py,sha256=quqNzvfvqtGYGVg9id3uNHb3EhzH5FCWYdeCn2KZ9sc,7894
8
- bbstrader/btengine/execution.py,sha256=g5p_7XXU7fgxkzoXNd5SiHITUWcURpd9ViYumtlxF0g,2646
9
- bbstrader/btengine/performance.py,sha256=Pz-qZb7EglPt8TMKs5ZCgo-af54UCOfqWKpEH8B19rQ,10211
10
- bbstrader/btengine/portfolio.py,sha256=RXGJTmg1NIq0MSkMB6v6hmCG4xfdwLo9rO1_UCAX7As,14008
11
- bbstrader/btengine/strategy.py,sha256=G9_vcAzH-oT3vk1t3espXP-snrN2uXTEZh3sVCyFzWM,1554
12
- bbstrader/metatrader/__init__.py,sha256=y4JLz05esm3PKerHMgtd3dmRpa7yUvWVuj_xOnlhXSA,261
13
- bbstrader/metatrader/account.py,sha256=qbkcPbIbuld-ZVrNY8zW8cTSpPPdKMw9zKk5HQD108g,44301
14
- bbstrader/metatrader/rates.py,sha256=Ro4NIAjR_cjMivrfvixsEtivNAx0ACvPoBosYTCuzZg,9383
15
- bbstrader/metatrader/risk.py,sha256=qMDLqrwD8foKOW8jCnhwt0Lvxgtl0uwKYgRqhSbNeh8,25827
16
- bbstrader/metatrader/trade.py,sha256=Y0WPJC2rVETx5wmZUpRzVRj42gQhkh-8LNcOBYlpzdg,57390
17
- bbstrader/metatrader/utils.py,sha256=UaxsQ2myvpPGSvO_Xs3T9cuT9rwGRUhDE2YyQA4u05I,18963
18
- bbstrader/models/__init__.py,sha256=6tAj9V9vgwesgPVMKznwRB3k8-Ec8Q73Di5p2UO0qlA,274
19
- bbstrader/models/risk.py,sha256=2fFBqsY2v8Kd6oU8t8h2h-Sp8joVqetA-t21rjkT9U4,13593
20
- bbstrader/trading/__init__.py,sha256=yZ85EALV2sSCzCPxaeFYlk1JJhYQq2C-xSd5EEQYvI8,82
21
- bbstrader/trading/execution.py,sha256=Ru1TiVrxCVr9YOXpweb1KiqHMANeTsKqfsth8Ho-nbg,47288
22
- bbstrader/trading/run.py,sha256=UA5Sn5nWOqsezZVGCM_kjOPPsu_IxMdSABUBnBAJA-k,3474
23
- bbstrader/trading/utils.py,sha256=Eu_cBnfPcOGel4Lj6Dc-UCl-h7NqR8Rfv9RZtaxNRos,7711
24
- bbstrader-0.1.6.dist-info/LICENSE,sha256=1EudjwwP2oTJy8Vh0e-Kzv8VZZU95y-t6c3DYhR51uc,1115
25
- bbstrader-0.1.6.dist-info/METADATA,sha256=an7eJE6u3flDzS0irxAmooZX5IEf2t8l12GnnT7rGE0,9218
26
- bbstrader-0.1.6.dist-info/WHEEL,sha256=uCRv0ZEik_232NlR4YDw4Pv3Ajt5bKvMH13NUU7hFuI,91
27
- bbstrader-0.1.6.dist-info/top_level.txt,sha256=Wwj322jZmxGZ6gD_TdaPiPLjED5ReObm5omerwlmZIg,10
28
- bbstrader-0.1.6.dist-info/RECORD,,