请先前往oanda官网注册账号获取token和ID。由于计算复杂度,目前只支持美元货币对。
In [3]:
# oandakey.py
access_token = ''
accountID = ''
先要安装oanda api
pip install oandapyV20
In [1]:
# 多线程保存数据
from oandakey import access_token, accountID
from OnePy.builtin_module.mongodb_saver import oanda_saver
from OnePy.builtin_module.mongodb_saver.utils import MongoDBFunc
from OnePy.utils.awesome_func import run_multiprocessing, run_multithreading
# 多个
ticker_list = ['EUR_USD', 'AUD_USD', 'GBP_USD', 'USD_CAD', 'USD_JPY']
ticker_list = ['EUR_USD']
# period_list = ['M5', 'M30', 'H1', 'H2', 'H3', 'H4', 'H6', 'H12', 'D', 'W']
period_list = ['M30']
oanda_saver.multi_oanda_candles_to_mongodb(accountID, access_token,
ticker_list,
period_list,
fromdate='2015-01-01')
MongoDBFunc().drop_duplicates(ticker_list, period_list, 'oanda')
Start!
['EUR_USD'],M30 all set!!!!!
<<EUR_USD, M30>> has been drop 76961 duplicates!
In [2]:
import OnePy as op
from OnePy.custom_module.cleaner_sma import SMA
class SmaStrategy(op.StrategyBase):
def __init__(self):
super().__init__()
self.sma1 = SMA(3, 40).calculate
self.sma2 = SMA(5, 40).calculate
def handle_bar(self):
for ticker in self.env.tickers:
if self.sma1(ticker) > self.sma2(ticker):
self.buy(100, ticker, takeprofit=15,
stoploss=100)
else:
self.sell(100, ticker)
START, END = "2016-01-05", "2016-02-05"
FREQUENCY = "M30"
TICKER_LIST = ["EUR_USD"]
INITIAL_CASH = 20000
SmaStrategy()
go = op.backtest.forex(TICKER_LIST, FREQUENCY, INITIAL_CASH, START, END, "oanda")
In [3]:
go.sunny(show_process=True)
正在初始化OnePy
=============== OnePy初始化成功! ===============
开始寻找OnePiece之旅~~~
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> [97%]
+--------------------------------+
|Fromdate | 2016-01-05|
|Todate | 2016-02-05|
|Initial_Value | $20000.00|
|Final_Value | $21973.31|
|Total_Return | 9.867%|
|Max_Drawdown | 4.143%|
|Max_Duration | 22 days|
|Max_Drawdown_Date | 2016-01-31|
|Sharpe_Ratio | 3.79|
+--------------------------------+
In [4]:
go.output.plot('EUR_USD')
/Users/chandler/anaconda/lib/python3.6/site-packages/matplotlib/figure.py:2362: UserWarning:
This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.
In [5]:
go.output.trade_log()
Out[5]:
ticker
entry_date
entry_price
entry_type
size
exit_date
exit_price
exit_type
pl_points
re_pnl
comm
holding_period
drawdown
run_up
returns_diff
0
EUR_USD
2016-01-05 01:00:00
1.08348
Market Buy
100
2016-01-05 02:30:00
1.08240
Market Sell
-0.00108
-1.08
0.015
1:30:00
0.001791
0.000378
-0.000997
1
EUR_USD
2016-01-05 01:30:00
1.08248
Market Buy
100
2016-01-05 03:00:00
1.08170
Market Sell
-0.00078
-0.78
0.015
1:30:00
0.000887
0.000924
-0.000721
2
EUR_USD
2016-01-05 04:30:00
1.08226
Market Buy
100
2016-01-05 07:30:00
1.08064
Market Sell
-0.00162
-1.62
0.015
3:00:00
0.001709
0.001294
-0.001497
3
EUR_USD
2016-01-05 05:00:00
1.08296
Market Buy
100
2016-01-05 08:00:00
1.08088
Market Sell
-0.00208
-2.08
0.015
3:00:00
0.002355
0.000646
-0.001921
4
EUR_USD
2016-01-05 05:30:00
1.08312
Market Buy
100
2016-01-05 08:30:00
1.08060
Market Sell
-0.00252
-2.52
0.015
3:00:00
0.004210
0.000499
-0.002327
5
EUR_USD
2016-01-05 06:00:00
1.08301
Market Buy
100
2016-01-05 09:00:00
1.07898
Market Sell
-0.00403
-4.03
0.015
3:00:00
0.004377
0.000600
-0.003721
6
EUR_USD
2016-01-05 06:30:00
1.08272
Market Buy
100
2016-01-05 09:30:00
1.07898
Market Sell
-0.00374
-3.74
0.015
3:00:00
0.005034
0.000351
-0.003454
7
EUR_USD
2016-01-05 17:00:00
1.07355
Market Buy
100
2016-01-05 19:30:00
1.07369
Market Sell
0.00014
0.14
0.015
2:30:00
0.000214
0.001220
0.000130
8
EUR_USD
2016-01-05 17:30:00
1.07459
Market Buy
100
2016-01-05 20:00:00
1.07438
Market Sell
-0.00021
-0.21
0.015
2:30:00
0.001182
0.000251
-0.000195
9
EUR_USD
2016-01-05 18:00:00
1.07439
Market Buy
100
2016-01-06 00:30:00
1.07446
Market Sell
0.00007
0.07
0.015
6:30:00
0.000996
0.001359
0.000065
10
EUR_USD
2016-01-05 18:30:00
1.07334
Market Buy
100
2016-01-06 01:00:00
1.07448
Market Sell
0.00114
1.14
0.015
6:30:00
0.000019
0.003689
0.001062
11
EUR_USD
2016-01-05 20:00:00
1.07438
Market Buy
100
2016-01-06 01:30:00
1.07674
Market Sell
0.00236
2.36
0.015
5:30:00
0.000428
0.002718
0.002197
12
EUR_USD
2016-01-05 20:30:00
1.07499
Market Buy
100
2016-01-06 03:30:00
1.07516
Market Sell
0.00017
0.17
0.015
7:00:00
0.000995
0.002149
0.000158
13
EUR_USD
2016-01-05 21:00:00
1.07503
Market Buy
100
2016-01-06 04:00:00
1.07456
Market Sell
-0.00047
-0.47
0.015
7:00:00
0.001033
0.002112
-0.000437
14
EUR_USD
2016-01-05 21:30:00
1.07467
Market Buy
100
2016-01-06 04:30:00
1.07486
Market Sell
0.00019
0.19
0.015
7:00:00
0.000698
0.002447
0.000177
15
EUR_USD
2016-01-05 22:00:00
1.07516
Market Buy
100
2016-01-06 05:00:00
1.07492
Market Sell
-0.00024
-0.24
0.015
7:00:00
0.001153
0.001990
-0.000223
16
EUR_USD
2016-01-05 22:30:00
1.07538
Market Buy
100
2016-01-06 05:30:00
1.07444
Market Sell
-0.00094
-0.94
0.015
7:00:00
0.001358
0.001785
-0.000874
17
EUR_USD
2016-01-05 23:00:00
1.07554
Market Buy
100
2016-01-06 06:00:00
1.07444
Market Sell
-0.00110
-1.10
0.015
7:00:00
0.001506
0.001636
-0.001023
18
EUR_USD
2016-01-05 23:30:00
1.07510
Market Buy
100
2016-01-06 06:30:00
1.07519
Market Sell
0.00009
0.09
0.015
7:00:00
0.001098
0.002046
0.000084
19
EUR_USD
2016-01-06 01:30:00
1.07616
Market Buy
100
2016-01-06 07:30:00
1.07342
Market Sell
-0.00274
-2.74
0.015
6:00:00
0.003931
0.000836
-0.002546
20
EUR_USD
2016-01-06 02:00:00
1.07642
Market Buy
100
2016-01-06 08:00:00
1.07300
Market Sell
-0.00342
-3.42
0.015
6:00:00
0.004171
0.000595
-0.003177
21
EUR_USD
2016-01-06 02:30:00
1.07641
Market Buy
100
2016-01-06 08:30:00
1.07320
Market Sell
-0.00321
-3.21
0.015
6:00:00
0.004162
0.000557
-0.002982
22
EUR_USD
2016-01-06 06:30:00
1.07450
Market Buy
100
2016-01-06 09:00:00
1.07356
Market Sell
-0.00094
-0.94
0.015
2:30:00
0.002392
0.000949
-0.000875
23
EUR_USD
2016-01-06 09:30:00
1.07346
Market Buy
100
2016-01-06 10:30:00
1.07328
Market Sell
-0.00018
-0.18
0.015
1:00:00
0.001099
0.000307
-0.000168
24
EUR_USD
2016-01-06 10:30:00
1.07357
Market Buy
100
2016-01-06 14:00:00
1.07396
Market Sell
0.00039
0.39
0.015
3:30:00
0.001910
0.002263
0.000363
25
EUR_USD
2016-01-06 11:00:00
1.07440
Market Buy
100
2016-01-06 14:30:00
1.07392
Market Sell
-0.00048
-0.48
0.015
3:30:00
0.002681
0.001489
-0.000447
26
EUR_USD
2016-01-06 11:30:00
1.07490
Market Buy
100
2016-01-06 19:00:00
1.07558
Market Sell
0.00068
0.68
0.015
7:30:00
0.003144
0.004689
0.000633
27
EUR_USD
2016-01-06 12:00:00
1.07547
Market Buy
100
2016-01-06 22:00:00
1.07807
Market Sell
0.00260
2.60
0.015
10:00:00
0.003673
0.004156
0.002418
28
EUR_USD
2016-01-06 12:30:00
1.07430
Market Buy
100
2016-01-06 22:30:00
1.07805
Market Sell
0.00375
3.75
0.015
10:00:00
0.002588
0.005250
0.003491
29
EUR_USD
2016-01-06 13:00:00
1.07430
Market Buy
100
2016-01-06 23:00:00
1.07742
Market Sell
0.00312
3.12
0.015
10:00:00
0.002588
0.005250
0.002904
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
554
EUR_USD
2016-02-03 19:30:00
1.10937
Market Buy
100
None
NaN
None
0.01052
10.52
0.015
1008 days, 3:14:24.250020
0.000596
0.031196
0.027563
555
EUR_USD
2016-02-03 21:00:00
1.11015
Market Buy
100
None
NaN
None
0.00974
9.74
0.015
1008 days, 1:44:24.252845
0.000596
0.031196
0.027563
556
EUR_USD
2016-02-03 21:30:00
1.11056
Market Buy
100
None
NaN
None
0.00933
9.33
0.015
1008 days, 1:14:24.255557
0.000596
0.031196
0.027563
557
EUR_USD
2016-02-04 00:00:00
1.11102
Market Buy
100
None
NaN
None
0.00887
8.87
0.015
1007 days, 22:44:24.258263
0.000596
0.031196
0.027563
558
EUR_USD
2016-02-04 00:30:00
1.11111
Market Buy
100
None
NaN
None
0.00878
8.78
0.015
1007 days, 22:14:24.261205
0.000596
0.031196
0.027563
559
EUR_USD
2016-02-04 01:00:00
1.10924
Market Buy
100
None
NaN
None
0.01065
10.65
0.015
1007 days, 21:44:24.264659
0.000596
0.031196
0.027563
560
EUR_USD
2016-02-04 03:30:00
1.10913
Market Buy
100
None
NaN
None
0.01076
10.76
0.015
1007 days, 19:14:24.267997
0.000596
0.031196
0.027563
561
EUR_USD
2016-02-04 04:00:00
1.10850
Market Buy
100
None
NaN
None
0.01139
11.39
0.015
1007 days, 18:44:24.271346
0.000596
0.031196
0.027563
562
EUR_USD
2016-02-04 04:30:00
1.10871
Market Buy
100
None
NaN
None
0.01118
11.18
0.015
1007 days, 18:14:24.274196
0.000596
0.031196
0.027563
563
EUR_USD
2016-02-04 08:00:00
1.11265
Market Buy
100
None
NaN
None
0.00724
7.24
0.015
1007 days, 14:44:24.276903
0.000596
0.031196
0.027563
564
EUR_USD
2016-02-04 08:30:00
1.11331
Market Buy
100
None
NaN
None
0.00658
6.58
0.015
1007 days, 14:14:24.279598
0.000596
0.031196
0.027563
565
EUR_USD
2016-02-04 09:00:00
1.11577
Market Buy
100
None
NaN
None
0.00412
4.12
0.015
1007 days, 13:44:24.282315
0.000596
0.031196
0.027563
566
EUR_USD
2016-02-04 09:30:00
1.11628
Market Buy
100
None
NaN
None
0.00361
3.61
0.015
1007 days, 13:14:24.285016
0.000596
0.031196
0.027563
567
EUR_USD
2016-02-04 10:00:00
1.11611
Market Buy
100
None
NaN
None
0.00378
3.78
0.015
1007 days, 12:44:24.287718
0.000596
0.031196
0.027563
568
EUR_USD
2016-02-04 10:30:00
1.11817
Market Buy
100
None
NaN
None
0.00172
1.72
0.015
1007 days, 12:14:24.290421
0.000596
0.031196
0.027563
569
EUR_USD
2016-02-04 11:00:00
1.11838
Market Buy
100
None
NaN
None
0.00151
1.51
0.015
1007 days, 11:44:24.293186
0.000596
0.031196
0.027563
570
EUR_USD
2016-02-04 11:30:00
1.11718
Market Buy
100
None
NaN
None
0.00271
2.71
0.015
1007 days, 11:14:24.295881
0.000596
0.031196
0.027563
571
EUR_USD
2016-02-04 12:00:00
1.11797
Market Buy
100
None
NaN
None
0.00192
1.92
0.015
1007 days, 10:44:24.298576
0.000596
0.031196
0.027563
572
EUR_USD
2016-02-04 13:00:00
1.12202
Market Buy
100
None
NaN
None
-0.00213
-2.13
0.015
1007 days, 9:44:24.301272
0.000596
0.031196
0.027563
573
EUR_USD
2016-02-04 13:30:00
1.12026
Market Buy
100
None
NaN
None
-0.00037
-0.37
0.015
1007 days, 9:14:24.304001
0.000596
0.031196
0.027563
574
EUR_USD
2016-02-04 14:00:00
1.11884
Market Buy
100
None
NaN
None
0.00105
1.05
0.015
1007 days, 8:44:24.306750
0.000596
0.031196
0.027563
575
EUR_USD
2016-02-04 17:00:00
1.11881
Market Buy
100
None
NaN
None
0.00108
1.08
0.015
1007 days, 5:44:24.309452
0.000596
0.031196
0.027563
576
EUR_USD
2016-02-04 17:30:00
1.11974
Market Buy
100
None
NaN
None
0.00015
0.15
0.015
1007 days, 5:14:24.312156
0.000596
0.031196
0.027563
577
EUR_USD
2016-02-04 18:00:00
1.12050
Market Buy
100
None
NaN
None
-0.00061
-0.61
0.015
1007 days, 4:44:24.314855
0.000596
0.031196
0.027563
578
EUR_USD
2016-02-04 18:30:00
1.12113
Market Buy
100
None
NaN
None
-0.00124
-1.24
0.015
1007 days, 4:14:24.317541
0.000596
0.031196
0.027563
579
EUR_USD
2016-02-04 19:00:00
1.12208
Market Buy
100
None
NaN
None
-0.00219
-2.19
0.015
1007 days, 3:44:24.320242
0.000596
0.031196
0.027563
580
EUR_USD
2016-02-04 19:30:00
1.12120
Market Buy
100
None
NaN
None
-0.00131
-1.31
0.015
1007 days, 3:14:24.322986
0.000596
0.031196
0.027563
581
EUR_USD
2016-02-04 20:00:00
1.12023
Market Buy
100
None
NaN
None
-0.00034
-0.34
0.015
1007 days, 2:44:24.325686
0.000596
0.031196
0.027563
582
EUR_USD
2016-02-04 21:30:00
1.12070
Market Buy
100
None
NaN
None
-0.00081
-0.81
0.015
1007 days, 1:14:24.328395
0.000596
0.031196
0.027563
583
EUR_USD
2016-02-04 22:00:00
1.12008
Market Buy
100
None
NaN
None
-0.00019
-0.19
0.015
1007 days, 0:44:24.331094
0.000596
0.031196
0.027563
584 rows × 15 columns
In [ ]:
Content source: Chandlercjy/OnePy
Similar notebooks: