@@ -6,136 +6,136 @@ Quick Start
66Open ``main.py ``
77
88.. code-block :: python
9- :linenos:
9+ :linenos:
1010
1111 import os
12- from typing import List
13- from argparse import ArgumentParser
14- from finrl import config
15- from finrl.config_tickers import DOW_30_TICKER
16- from finrl.config import (
17- DATA_SAVE_DIR,
18- TRAINED_MODEL_DIR,
19- TENSORBOARD_LOG_DIR,
20- RESULTS_DIR,
21- INDICATORS,
22- TRAIN_START_DATE,
23- TRAIN_END_DATE,
24- TEST_START_DATE,
25- TEST_END_DATE,
26- TRADE_START_DATE,
27- TRADE_END_DATE,
28- ERL_PARAMS,
29- RLlib_PARAMS,
30- SAC_PARAMS,
31- ALPACA_API_KEY,
32- ALPACA_API_SECRET,
33- ALPACA_API_BASE_URL,
34- )
35-
36- # construct environment
37- from finrl.meta.env_stock_trading.env_stocktrading_np import StockTradingEnv
38-
39-
40- def build_parser():
41- parser = ArgumentParser()
42- parser.add_argument(
43- "--mode",
44- dest="mode",
45- help="start mode, train, download_data" " backtest",
46- metavar="MODE",
47- default="train",
12+ from typing import List
13+ from argparse import ArgumentParser
14+ from finrl import config
15+ from finrl.config_tickers import DOW_30_TICKER
16+ from finrl.config import (
17+ DATA_SAVE_DIR ,
18+ TRAINED_MODEL_DIR ,
19+ TENSORBOARD_LOG_DIR ,
20+ RESULTS_DIR ,
21+ INDICATORS ,
22+ TRAIN_START_DATE ,
23+ TRAIN_END_DATE ,
24+ TEST_START_DATE ,
25+ TEST_END_DATE ,
26+ TRADE_START_DATE ,
27+ TRADE_END_DATE ,
28+ ERL_PARAMS ,
29+ RLlib_PARAMS,
30+ SAC_PARAMS ,
31+ ALPACA_API_KEY ,
32+ ALPACA_API_SECRET ,
33+ ALPACA_API_BASE_URL ,
4834 )
49- return parser
50-
51-
52- # "./" will be added in front of each directory
53- def check_and_make_directories(directories: List[str]):
54- for directory in directories:
55- if not os.path.exists("./" + directory):
56- os.makedirs("./" + directory)
57-
58-
59-
60- def main():
61- parser = build_parser()
62- options = parser.parse_args()
63- check_and_make_directories([DATA_SAVE_DIR, TRAINED_MODEL_DIR, TENSORBOARD_LOG_DIR, RESULTS_DIR])
64-
65- if options.mode == "train":
66- from finrl import train
67-
68- env = StockTradingEnv
69-
70- # demo for elegantrl
71- kwargs = {} # in current meta, with respect yahoofinance, kwargs is {}. For other data sources, such as joinquant, kwargs is not empty
72- train(
73- start_date=TRAIN_START_DATE,
74- end_date=TRAIN_END_DATE,
75- ticker_list=DOW_30_TICKER,
76- data_source="yahoofinance",
77- time_interval="1D",
78- technical_indicator_list=INDICATORS,
79- drl_lib="elegantrl",
80- env=env,
81- model_name="ppo",
82- cwd="./test_ppo",
83- erl_params=ERL_PARAMS,
84- break_step=1e5,
85- kwargs=kwargs,
86- )
87- elif options.mode == "test":
88- from finrl import test
89- env = StockTradingEnv
90-
91- # demo for elegantrl
92- kwargs = {} # in current meta, with respect yahoofinance, kwargs is {}. For other data sources, such as joinquant, kwargs is not empty
93-
94- account_value_erl = test(
95- start_date=TEST_START_DATE,
96- end_date=TEST_END_DATE,
97- ticker_list=DOW_30_TICKER,
98- data_source="yahoofinance",
99- time_interval="1D",
100- technical_indicator_list=INDICATORS,
101- drl_lib="elegantrl",
102- env=env,
103- model_name="ppo",
104- cwd="./test_ppo",
105- net_dimension=512,
106- kwargs=kwargs,
107- )
108- elif options.mode == "trade":
109- from finrl import trade
110- env = StockTradingEnv
111- kwargs = {}
112- trade(
113- start_date=TRADE_START_DATE,
114- end_date=TRADE_END_DATE,
115- ticker_list=DOW_30_TICKER,
116- data_source="yahoofinance",
117- time_interval="1D",
118- technical_indicator_list=INDICATORS,
119- drl_lib="elegantrl",
120- env=env,
121- model_name="ppo",
122- API_KEY=ALPACA_API_KEY,
123- API_SECRET=ALPACA_API_SECRET,
124- API_BASE_URL=ALPACA_API_BASE_URL,
125- trade_mode='backtesting',
126- if_vix=True,
127- kwargs=kwargs,
128- )
129- else:
130- raise ValueError("Wrong mode.")
13135
36+ # construct environment
37+ from finrl.meta.env_stock_trading.env_stocktrading_np import StockTradingEnv
13238
133- ## Users can input the following command in terminal
134- # python main.py --mode=train
135- # python main.py --mode=test
136- # python main.py --mode=trade
137- if __name__ == "__main__":
138- main()
39+
40+ def build_parser ():
41+ parser = ArgumentParser()
42+ parser.add_argument(
43+ " --mode" ,
44+ dest = " mode" ,
45+ help = " start mode, train, download_data" " backtest" ,
46+ metavar = " MODE" ,
47+ default = " train" ,
48+ )
49+ return parser
50+
51+
52+ # "./" will be added in front of each directory
53+ def check_and_make_directories (directories : List[str ]):
54+ for directory in directories:
55+ if not os.path.exists(" ./" + directory):
56+ os.makedirs(" ./" + directory)
57+
58+
59+
60+ def main ():
61+ parser = build_parser()
62+ options = parser.parse_args()
63+ check_and_make_directories([DATA_SAVE_DIR , TRAINED_MODEL_DIR , TENSORBOARD_LOG_DIR , RESULTS_DIR ])
64+
65+ if options.mode == " train" :
66+ from finrl import train
67+
68+ env = StockTradingEnv
69+
70+ # demo for elegantrl
71+ kwargs = {} # in current meta, with respect yahoofinance, kwargs is {}. For other data sources, such as joinquant, kwargs is not empty
72+ train(
73+ start_date = TRAIN_START_DATE ,
74+ end_date = TRAIN_END_DATE ,
75+ ticker_list = DOW_30_TICKER ,
76+ data_source = " yahoofinance" ,
77+ time_interval = " 1D" ,
78+ technical_indicator_list = INDICATORS ,
79+ drl_lib = " elegantrl" ,
80+ env = env,
81+ model_name = " ppo" ,
82+ cwd = " ./test_ppo" ,
83+ erl_params = ERL_PARAMS ,
84+ break_step = 1e5 ,
85+ kwargs = kwargs,
86+ )
87+ elif options.mode == " test" :
88+ from finrl import test
89+ env = StockTradingEnv
90+
91+ # demo for elegantrl
92+ kwargs = {} # in current meta, with respect yahoofinance, kwargs is {}. For other data sources, such as joinquant, kwargs is not empty
93+
94+ account_value_erl = test(
95+ start_date = TEST_START_DATE ,
96+ end_date = TEST_END_DATE ,
97+ ticker_list = DOW_30_TICKER ,
98+ data_source = " yahoofinance" ,
99+ time_interval = " 1D" ,
100+ technical_indicator_list = INDICATORS ,
101+ drl_lib = " elegantrl" ,
102+ env = env,
103+ model_name = " ppo" ,
104+ cwd = " ./test_ppo" ,
105+ net_dimension = 512 ,
106+ kwargs = kwargs,
107+ )
108+ elif options.mode == " trade" :
109+ from finrl import trade
110+ env = StockTradingEnv
111+ kwargs = {}
112+ trade(
113+ start_date = TRADE_START_DATE ,
114+ end_date = TRADE_END_DATE ,
115+ ticker_list = DOW_30_TICKER ,
116+ data_source = " yahoofinance" ,
117+ time_interval = " 1D" ,
118+ technical_indicator_list = INDICATORS ,
119+ drl_lib = " elegantrl" ,
120+ env = env,
121+ model_name = " ppo" ,
122+ API_KEY = ALPACA_API_KEY ,
123+ API_SECRET = ALPACA_API_SECRET ,
124+ API_BASE_URL = ALPACA_API_BASE_URL ,
125+ trade_mode = ' backtesting' ,
126+ if_vix = True ,
127+ kwargs = kwargs,
128+ )
129+ else :
130+ raise ValueError (" Wrong mode." )
131+
132+
133+ # # Users can input the following command in terminal
134+ # python main.py --mode=train
135+ # python main.py --mode=test
136+ # python main.py --mode=trade
137+ if __name__ == " __main__" :
138+ main()
139139
140140
141141 Run the library:
0 commit comments