ダブル移動平均
タートルズ流 投資の魔術 からの引用
100日移動平均が、それより動きの遅い350日移動平均とクロスして上に抜いたときに売買を行うという非常に単純なシステムだ。他のシステムと異なり、このシステムは、買い持ち売り持ちにかかわらず、つねに市場にあらわれる。唯一の退出時は、動きの速いほうの移動平均が遅いほうの移動平均とクロスして下に抜いたときで、この時点で手じまいし、逆方向に新しい取引を仕掛けることになる。
(中略)
おそらくおわかりだろうが、このシステムは非常に長期のトレンドフォロー・システムで、他の大半のシステムのように頻繁にトレードが行われるわけではない。
ストラテジーを作成
https://gyazo.com/5f60eb2b04737ed921a925b6219a4ca3
エントリーとイグジット
https://gyazo.com/147ca0ae3d67798b5d9c9303291c25f2
https://gyazo.com/faac055b215398276e0f1519dc08992e
バックテスト
期間
2005年1月1日 ~ 2017年12月31日
12年間
銘柄
為替(5):
USDJPY、EURJPY、GBPJPY、CHFJPY、CADJPY
株価指数(5):
NKY 日経225、DJI NYダウ、DAX ドイツ、UKX イギリス、HSI 香港ハンセン
日本株(5):
6098リクルート、4452花王、5711三菱マテリアル、7201日産、9984ソフトバンクグループ
米株(5):
AAPLアップル、AXPアメリカン・エクスプレス、BAボーイング、JNJジョンソン・エンド・ジョンソン、MCDマクドナルド
海外商品(5):
金、白金、原油、コーン、大豆
その他
資金管理:単利
各主要な市場から5銘柄ずつピックアップしてテスト。
※ 6098リクルートは12年間のテストができていない
テスト1
table:テスト1設定
EMA_m EMA_l Pyramiding
100 350 None
本に掲載されていたものとまったく同じテスト(と思われる)
table:テスト1結果
損益 最大DD 取引数 勝数 勝率 RR比 勝ち保有 負け保有
USDJPY 41.34 15.34 8 3 37.50 4.385 928 127
EURJPY 49.40 13.25 10 4 40.00 6.943 781 84
GBPJPY 153.82 4.68 5 4 80.00 8.474 838 166
CHFJPY 9.71 15.31 11 4 36.36 2.603 646 124
CADJPY 13.42 9.42 7 5 71.43 0.713 640 123
NKY 7866.50 3678.93 8 3 37.50 3.779 686 172
DJI 4054.13 4339.95 8 3 37.50 2.869 885 37
DAX 4927.09 1897.55 9 4 44.44 3.318 668 166
UKX 286.50 1842.60 9 5 55.56 0.908 607 116
HSI 4145.36 4376.54 7 3 42.86 2.596 551 438
6098 -171.50 171.50 1 0 0.00 - 0 85
4452 2072.00 973.00 8 3 37.50 3.813 913 49
5711 -2560.00 4980.00 13 3 23.08 1.644 611 141
7201 -604.50 984.50 15 4 26.67 1.423 447 139
9984 3873.00 1417.00 9 5 55.56 2.217 521 172
AAPL 39.72 17.66 6 3 50.00 2.077 813 174
AXP 63.67 0 4 4 100.00 - 754 0
BA 55.69 24.89 6 3 50.00 2.339 768 225
JNJ -13.11 51.69 13 2 15.38 4.348 863 150
MCD 45.26 10.85 12 5 41.67 5.900 467 37
GOLD 92450.00 33150.00 7 3 42.86 4.120 946 147
PLATINUM 3530.00 17745.00 7 3 42.86 1.459 768 167
WTI -30520.00 65700.00 15 3 20.00 2.569 582 148
CORN -1587.50 11587.50 11 3 27.27 2.496 632 179
SOY BEANS -105862.50 105862.50 17 3 17.65 0.732 368 158
TOTAL 226 85 37.61% 2.977
破産の確率 0.00%
期待値/リスク 0.496
収益の見込み 112.064
※ 破産の確率は損失の許容=2%で算出
テスト1考察
期待値の計算式
$ WIN \times RR- | 1-WIN|
利益見込みの計算式
期待値 ✕ 取引回数
テスト2
table:テスト2設定
EMA_m EMA_l Pyramiding
100 350 1-ATR 上限4
本に掲載されていたものとまったく同じテスト(と思われる)
table:テスト2結果
損益 最大DD 取引数 勝数 勝率 RR比 勝ち保有 負け保有
USDJPY 185.72 45.90 24 11 45.83 4.477 946 159
EURJPY 162.18 35.78 28 16 57.14 3.544 753 148
GBPJPY 566.60 27.47 20 16 80.00 5.407 828 153
CHFJPY -1.85 82.78 36 9 25.00 2.946 630 276
CADJPY 31.48 38.78 25 14 56.00 1.210 660 310
NKY 28636.40 13861.20 28 12 42.86 2.981 672 174
DJI 24690.41 10433.16 20 12 60.00 2.072 862 43
DAX 15342.12 8051.42 32 16 50.00 2.119 645 197
UKX -160.40 6821.70 30 17 56.67 0.748 610 187
HSI -1763.40 32369.11 28 10 35.71 1.703 549 397
6098 -591.50 591.50 4 0 0.00 - 0 78
4452 10964.00 1255.00 22 12 54.55 4.204 887 44
5711 -9635.00 17335.00 40 9 22.50 1.540 619 194
7201 -2599.40 4017.40 48 13 27.08 1.217 473 146
9984 12229.00 5325.00 33 20 60.61 1.528 492 174
AAPL 134.06 81.18 22 12 54.55 1.537 808 156
AXP 225.01 0 16 16 100.00 - 737 0
BA 166.51 138.68 22 12 54.55 1.580 726 249
JNJ -24.16 190.22 41 8 19.51 3.653 817 160
MCD 179.66 20.20 25 13 52.00 5.224 674 90
GOLD 388110.00 103960.00 22 12 54.55 3.645 920 175
PLATINUM -6890.00 89870.00 24 12 50.00 0.953 741 200
WTI -144590.00 286560.00 45 9 20.00 2.320 552 217
CORN -26737.50 52500.00 40 12 30.00 1.742 622 178
SOY BEANS -331950.00 331950.00 53 10 18.87 0.666 375 170
破産の確率 0.00%
期待値/リスク 0.390
収益の見込み 284.052
※ 破産の確率は損失の許容=2%で算出
テスト2考察
期待値の計算式
$ WIN \times RR- | 1-WIN|
利益見込みの計算式
期待値 ✕ 取引回数
テスト3
table:テスト3設定
EMA_m EMA_l Pyramiding
50 350 None
本に掲載されていたものとまったく同じテスト(と思われる)
table:テスト3結果
損益 最大DD 取引数 勝数 勝率 RR比 勝ち保有 負け保有
USDJPY 28.45 23.15 12 3 25.00 5.249 868 90
EURJPY 46.07 19.08 13 6 46.15 2.358 514 62
GBPJPY 170.22 10.85 9 4 44.44 12.471 754 97
CHFJPY 11.70 21.77 15 4 26,67 3.498 612 91
CADJPY 12.42 29.89 15 4 26.67 3.433 592 97
NKY 8839.93 5606.54 10 3 30.00 5.220 680 124
DJI 1870.67 4827.98 10 4 40.00 1.902 648 40
DAX 1770.71 3561.47 11 4 36.36 2.263 633 135
UKX -961.90 2739.30 13 4 30.77 1.594 547 129
HSI 6376.26 6779.19 13 4 30.77 4.353 448 177
6098 -105.00 105.00 1 0 0.00 - 0 70
4452 1806.00 1501.00 12 3 25.00 4.982 800 64
5711 -440.00 3740.00 17 3 17.65 4.251 506 122
7201 -1097.00 1403.00 29 4 13.79 2.587 399 68
9984 1277.00 2587.00 15 5 33.33 2.526 464 93
AAPL 50.79 16.15 6 3 50.00 2.783 809 173
AXP 84.01 - 4 4 100.00 - 750 0
BA 71.02 20.43 6 4 66.67 1.581 676 136
JNJ -9.44 50.25 19 3 15.79 4.529 545 108
MCD 30.53 10.85 8 3 37.50 4.196 745 67
GOLD 103450.00 17030.00 7 4 57.14 3.145 773 106
PLATINUM 20530.00 23090.00 10 4 40.00 2.464 549 185
WTI -42390.00 91150.00 20 4 20.00 2.448 476 100
CORN -1175.00 9100.00 17 3 17.65 4.473 634 101
SOY BEANS -86150.00 86350.00 23 4 17.39 1.263 384 93
TOTAL 315 91 28.89 3.360
破産の確率 0.07
期待値/リスク 0.260
収益の見込み 81.835
※ 破産の確率は損失の許容=2%で算出
テスト3考察
期待値の計算式
$ WIN \times RR- | 1-WIN|
利益見込みの計算式
期待値 ✕ 取引回数
UKXとHSI
同じ勝率、RR比の違いが損益の違いに
RR比の違いは値動きの違い
UKXは上下にあまり振れなかった
5711
RR比は良くてもトータル損失
大きなトレンドを獲ることができたが、損失が重なってしまった
日本株はトータルで損する銘柄が多いように思える
他では成績の良いリクルートが負け
AXPは勝率100%
(※値動きを確認する)
破産の確率が(大丈夫な範囲だけど)これまでの検証の中でもっとも高い
ただし、勝率0%の1取引と、勝率100%の4取引は除外して計算
テスト4
table:テスト4設定
EMA_m EMA_l Pyramiding
50 350 1-ATR 上限4
本に掲載されていたものとまったく同じテスト(と思われる)
table:テスト4結果
損益 最大DD 取引数 勝数 勝率 RR比 勝ち保有 負け保有
USDJPY 125.39 88.39 36 12 33.33 4.006 854 91
EURJPY 164.15 63.67 40 24 60.00 1.465 494 70
GBPJPY 634.65 33.48 30 16 53.33 8.589 743 111
CHFJPY 38.80 84.86 45 16 35.56 2.278 602 102
CADJPY 54.49 109.44 46 16 34.78 2.480 575 102
NKY 31618.24 21023.35 36 12 33.33 4.156 668 121
DJI 16187.61 8330.74 28 16 57.14 1.528 625 39
DAX 5261.47 13888.80 38 16 42.11 1.690 607 151
UKX -2728.70 7716.40 39 14 35.90 1.281 529 186
HSI 8291.99 38857.63 43 13 30.23 2.800 478 215
6098 -392.00 392.00 3 0 0 0 0 63
4452 12120.00 3285.00 29 12 41.38 4.496 791 54
5711 -4740.00 15920.00 53 12 22.64 2.574 501 143
7201 -2721.30 4577.30 74 12 16.22 2.559 418 99
9984 8853.00 7034.00 41 20 48.78 1.828 443 118
AAPL 185.99 59.33 22 12 54.55 2.107 802 148
AXP 308.73 0 16 4 100.00 - 740 0
BA 250.86 117.66 21 14 66.67 1.459 701 232
JNJ -16.87 195.41 57 11 19.30 3.846 560 119
MCD 136.23 24.95 24 11 45.83 4.307 767 97
GOLD 400950.00 80290.00 24 13 54.17 4.386 852 167
PLATINUM 28700.00 90155.00 35 13 37.14 1.993 594 196
WTI -145720.00 319490.00 57 13 22.81 2.094 459 146
CORN -32275.00 55900.00 54 12 22.22 2.629 618 111
SOY BEANS -311737.50 311737.50 70 16 22.86 0.809 376 99
TOTAL 961 330 34.34 2.711
破産の確率 0.01
期待値/リスク 0.274
収益の見込み 263.620
※ 破産の確率は損失の許容=2%で算出
テスト4考察
期待値の計算式
$ WIN \times RR- | 1-WIN|
利益見込みの計算式
期待値 ✕ 取引回数
6098
勝率0%
(※値動きを確認する)
AXP
勝率100%
(※値動きを確認する)
soy beans
勝率が低く、RR比も1以下、目も当てられない成績
(※値動きを確認する)
Pineスクリプト
code:Pineスクリプト(js)
//@version=3
strategy("Strategy Turtle Double EMA"
,default_qty_type=strategy.fixed
,default_qty_value=1
,pyramiding=4
,overlay=true)
src = close
M = input(50 ,minval=1 ,title="middle_") // 900/6/25 = 6ヶ月
L = input(350 ,minval=1 ,title="long_") // 1800/6/25 = 12ヶ月
MAX_N = input(1 ,type=integer ,minval=1 ,maxval=4 ,title="maximun num of unit")
LO_len = input(20 ,type=integer ,minval=1 ,title="pyramiding ATR length")
LO_N = input(1 ,type=float ,minval=0.5 ,title="pyramiding ATR*N")
fromYear = input(2005 ,type=integer ,minval=1900 ,title="test start")
endYear = input(2017 ,type=integer ,minval=1900 ,title="test end")
isWork = timestamp(fromYear ,1 ,1 ,00 ,00) <= time and time < timestamp(endYear+1 ,1 ,1 ,00 ,00)
M_ = ema(close ,M)
L_ = ema(close ,L)
atr_LO_ = ema(tr ,LO_len)
atr_LO = atr_LO_*LO_N
countTradingDays = na
countNonTradingDays = na
countTradingDays := strategy.position_size==0 ? 0 : countTradingDays1 + 1 countNonTradingDays := strategy.position_size!=0 ? 0 : countNonTradingDays1 + 1 entry1 = close
entry2 = close
entry3 = close
entry4 = close
entry1 := strategy.position_size==0 ? na : entry11 entry2 := strategy.position_size==0 ? na : entry21 entry3 := strategy.position_size==0 ? na : entry31 entry4 := strategy.position_size==0 ? na : entry41 lo2 = close
lo3 = close
lo4 = close
lo2 := strategy.position_size==0 ? na : lo21 lo3 := strategy.position_size==0 ? na : lo31 lo4 := strategy.position_size==0 ? na : lo41 L_EntrySig = M_ >= L_
S_EntrySig = M_ <= L_
lo_sig2 = strategy.position_size>0 ? lo2 < high : strategy.position_size<0 ? lo2 > low : na
lo_sig3 = strategy.position_size>0 ? lo3 < high : strategy.position_size<0 ? lo3 > low : na
lo_sig4 = strategy.position_size>0 ? lo4 < high : strategy.position_size<0 ? lo4 > low : na
if(strategy.position_size != 0)
L_ExitSig = S_EntrySig and strategy.position_size > 0
S_ExitSig = L_EntrySig and strategy.position_size < 0
strategy.close_all(when = L_ExitSig or S_ExitSig)
if(L_ExitSig or S_ExitSig)
entry1 := na
entry2 := na
entry3 := na
entry4 := na
lo2 := na
lo3 := na
lo4 := na
if(strategy.position_size > 0)
if(lo_sig2 and MAX_N >= 2)
lo2 := na
strategy.entry("L-Entry2" ,strategy.long ,comment="L-Entry2")
if(lo_sig3 and MAX_N >= 3)
lo3 := na
strategy.entry("L-Entry3" ,strategy.long ,comment="L-Entry3")
if(lo_sig4 and MAX_N >= 4)
lo4 := na
strategy.entry("L-Entry4" ,strategy.long ,comment="L-Entry4")
if(strategy.position_size < 0)
if(lo_sig2 and MAX_N >= 2)
lo2 := na
strategy.entry("S-Entry2" ,strategy.short ,comment="S-Entry2")
if(lo_sig3 and MAX_N >= 3)
lo3 := na
strategy.entry("S-Entry3" ,strategy.short ,comment="S-Entry3")
if(lo_sig4 and MAX_N >= 4)
lo4 := na
strategy.entry("S-Entry4" ,strategy.short ,comment="S-Entry4")
if((L_EntrySig or S_EntrySig) and isWork and strategy.position_size==0)
countTradingDays := 0
entry1 := close
if(L_EntrySig)
strategy.entry("L-Entry1" ,strategy.long ,comment="L-Entry1")
lo2 := MAX_N >= 2 ? close + atr_LO : na
lo3 := MAX_N >= 3 ? close + atr_LO * 2 : na
lo4 := MAX_N >= 4 ? close + atr_LO * 3 : na
if(S_EntrySig)
strategy.entry("S-Entry1" ,strategy.short ,comment="S-Entry1")
lo2 := MAX_N >= 2 ? close - atr_LO : na
lo3 := MAX_N >= 3 ? close - atr_LO * 2 : na
lo4 := MAX_N >= 4 ? close - atr_LO * 3 : na
plot(strategy.position_size ,transp=0 ,title="保有ポジションの数")
plot(strategy.openprofit ,transp=0 ,title="未決済の損益")
plot(strategy.netprofit ,transp=0 ,title="決済済みの損益")
plot(strategy.closedtrades ,transp=0 ,title="決済済み取引数")
plot(countTradingDays ,transp=0 ,title="取引日数")
plot(countNonTradingDays ,transp=0 ,title="ノンポジ日数")
plot(entry1 ,title="entry1" ,color=blue ,transp=0 ,style=linebr)
plot(lo2 ,title="lo2" ,color=red ,transp=0 ,style=linebr)
plot(lo3 ,title="lo3" ,color=red ,transp=0 ,style=linebr)
plot(lo4 ,title="lo4" ,color=red ,transp=0 ,style=linebr)
plot(atr_LO ,transp=0 ,title="ATR_LO")
// plot(strategy.max_drawdown ,transp=50 ,title="最大DD")
// plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)
plot(L_ ,color=#303F9F ,title="長期EMA" ,style=line ,linewidth=2, transp=0)
plot(M_ ,color=#4CAF50 ,title="中期EMA" ,style=line ,linewidth=2, transp=0)