Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
AI4Finance-Foundation
GitHub Repository: AI4Finance-Foundation/FinRL
Path: blob/master/finrl/trade.py
728 views
1
from __future__ import annotations
2
3
from finrl.meta.env_stock_trading.env_stock_papertrading import AlpacaPaperTrading
4
from finrl.test import test
5
6
7
def trade(
8
start_date,
9
end_date,
10
ticker_list,
11
data_source,
12
time_interval,
13
technical_indicator_list,
14
drl_lib,
15
env,
16
model_name,
17
API_KEY,
18
API_SECRET,
19
API_BASE_URL,
20
trade_mode="backtesting",
21
if_vix=True,
22
**kwargs,
23
):
24
if trade_mode == "backtesting":
25
# use test function for backtesting mode
26
test(
27
start_date,
28
end_date,
29
ticker_list,
30
data_source,
31
time_interval,
32
technical_indicator_list,
33
drl_lib,
34
env,
35
model_name,
36
if_vix=True,
37
**kwargs,
38
)
39
40
elif trade_mode == "paper_trading":
41
# read parameters
42
try:
43
net_dim = kwargs.get("net_dimension", 2**7) # dimension of NNs
44
cwd = kwargs.get("cwd", "./" + str(model_name)) # current working directory
45
state_dim = kwargs.get("state_dim") # dimension of state/observations space
46
action_dim = kwargs.get("action_dim") # dimension of action space
47
except:
48
raise ValueError(
49
"Fail to read parameters. Please check inputs for net_dim, cwd, state_dim, action_dim."
50
)
51
52
# initialize paper trading env
53
paper_trading = AlpacaPaperTrading(
54
ticker_list,
55
time_interval,
56
drl_lib,
57
model_name,
58
cwd,
59
net_dim,
60
state_dim,
61
action_dim,
62
API_KEY,
63
API_SECRET,
64
API_BASE_URL,
65
technical_indicator_list,
66
turbulence_thresh=30,
67
max_stock=1e2,
68
latency=None,
69
)
70
71
# AlpacaPaperTrading.run() # run paper trading
72
paper_trading.run()
73
# bug fix run is a instance function not static
74
75
else:
76
raise ValueError(
77
"Invalid mode input! Please input either 'backtesting' or 'paper_trading'."
78
)
79
80