最初は最も基本的な指標である移動平均線です。
移動平均線はそれ自身を取引シグナルにするよりも、他シグナルに対するサポート的な役割で使う人が多いと思いますが、今回は移動平均線自身で取引する場合を検証します。
対象とするシグナルは
です。「短期の移動平均線が長期の移動平均線をクロスして上回った場合に買い」という感じで使います。
黄色の短期線が赤色の長期線をクロスした段階でロングすれば利益が得られそうです。
そこで移動平均線のパラメータを色々と変更して利益を得られる組み合わせについて調べてみました。
※時間足毎に取引回数5回以上で勝率Top3を抽出しています。
2018年7月 EURUSD 5分足
Timeframe |
PeriodMA1 |
PeriodMA2 |
Method |
trade |
profit |
PF |
win% |
5 |
16 |
23 |
3 |
33 |
64.02 |
1.47 |
66.67 |
5 |
15 |
27 |
0 |
35 |
74.34 |
1.5 |
65.71 |
5 |
18 |
21 |
3 |
35 |
60.36 |
1.4 |
65.71 |
2018年7月 EURUSD 15分足
Timeframe |
PeriodMA1 |
PeriodMA2 |
Method |
trade |
profit |
PF |
win% |
15 |
14 |
27 |
0 |
26 |
72.33 |
1.72 |
69.23 |
15 |
7 |
41 |
2 |
24 |
53.03 |
1.54 |
66.67 |
15 |
13 |
29 |
0 |
21 |
46.08 |
1.53 |
66.67 |
2018年7月 EURUSD 30分足
Timeframe |
PeriodMA1 |
PeriodMA2 |
Method |
trade |
profit |
PF |
win% |
30 |
14 |
27 |
0 |
23 |
65.81 |
1.75 |
69.57 |
30 |
11 |
39 |
0 |
16 |
38.89 |
1.59 |
68.75 |
30 |
13 |
29 |
0 |
18 |
34.46 |
1.47 |
66.67 |
2018年7月 EURUSD 1時間足
Timeframe |
PeriodMA1 |
PeriodMA2 |
Method |
trade |
profit |
PF |
win% |
16385 |
13 |
35 |
0 |
Timeframe |
65.32 |
2.66 |
78.57 |
16385 |
10 |
39 |
0 |
12 |
46.74 |
2.22 |
75 |
16385 |
12 |
37 |
0 |
14 |
46.12 |
1.92 |
71.43 |
2018年7月 EURUSD 4時間足
Timeframe |
PeriodMA1 |
PeriodMA2 |
Timeframe |
Timeframe |
profit |
PF |
win% |
16388 |
9 |
33 |
2 |
7 |
42.02 |
3.73 |
85.71 |
16388 |
9 |
31 |
2 |
7 |
41.92 |
3.73 |
85.71 |
16388 |
8 |
33 |
3 |
6 |
33.06 |
3.34 |
83.33 |
2018年8月 EURUSD 5分足
Timeframe |
PeriodMA1 |
PeriodMA2 |
Method |
trade |
profit |
PF |
win% |
5 |
13 |
37 |
Timeframe |
9 |
39.42 |
2.47 |
77.78 |
5 |
15 |
33 |
2 |
8 |
32.14 |
2.23 |
75 |
5 |
14 |
35 |
2 |
11 |
38.86 |
2.02 |
72.73 |
2018年8月 EURUSD 15分足
Timeframe |
PeriodMA1 |
PeriodMA2 |
Method |
trade |
profit |
PF |
win% |
15 |
13 |
Timeframe |
2 |
8 |
51.16 |
4.37 |
87.5 |
15 |
18 |
21 |
1 |
15 |
64.21 |
2.61 |
80 |
15 |
16 |
23 |
1 |
15 |
65.49 |
2.64 |
80 |
2018年8月 EURUSD 30分足
Timeframe |
PeriodMA1 |
PeriodMA2 |
Method |
trade |
profit |
PF |
win% |
30 |
13 |
Timeframe |
2 |
6 |
32.76 |
3.25 |
83.33 |
30 |
14 |
35 |
2 |
9 |
36.68 |
2.39 |
77.78 |
30 |
16 |
31 |
1 |
12 |
46.29 |
2.19 |
75 |
2018年8月 EURUSD 1時間足
Timeframe |
PeriodMA1 |
PeriodMA2 |
Method |
trade |
profit |
PF |
win% |
16385 |
16 |
31 |
1 |
9 |
59.77 |
4.79 |
88.89 |
16385 |
14 |
35 |
2 |
7 |
43.6 |
3.96 |
85.71 |
16385 |
18 |
27 |
1 |
11 |
57.05 |
3.04 |
81.82 |
2018年8月 EURUSD 4時間足
Timeframe |
PeriodMA1 |
PeriodMA2 |
Method |
trade |
profit |
PF |
win% |
16388 |
7 |
21 |
0 |
6 |
33.76 |
3.4 |
83.33 |
16388 |
8 |
21 |
0 |
6 |
33.86 |
3.41 |
83.33 |
16388 |
15 |
21 |
3 |
6 |
33.46 |
3.35 |
83.33 |
2018年9月 EURUSD 5分足
Timeframe |
PeriodMA1 |
PeriodMA2 |
Method |
trade |
profit |
PF |
win% |
5 |
7 |
41 |
2 |
18 |
40.75 |
1.57 |
66.67 |
5 |
18 |
33 |
Timeframe |
9 |
21.78 |
1.59 |
66.67 |
5 |
9 |
41 |
2 |
14 |
23.72 |
1.39 |
64.29 |
2018年9月 EURUSD 15分足
Timeframe |
PeriodMA1 |
PeriodMA2 |
Method |
trade |
profit |
PF |
win% |
15 |
18 |
33 |
2 |
6 |
34.19 |
3.38 |
83.33 |
15 |
14 |
43 |
2 |
7 |
28.15 |
2.37 |
71.43 |
15 |
16 |
37 |
2 |
6 |
20.01 |
2 |
66.67 |
2018年9月 EURUSD 30分足
Timeframe |
PeriodMA1 |
PeriodMA2 |
Method |
trade |
profit |
PF |
win% |
30 |
18 |
33 |
2 |
5 |
25.66 |
2.86 |
80 |
30 |
8 |
43 |
Timeframe |
11 |
31.28 |
1.82 |
72.73 |
30 |
9 |
43 |
2 |
10 |
30.38 |
1.8 |
70 |
2018年9月 EURUSD 1時間足
Timeframe |
PeriodMA1 |
PeriodMA2 |
Method |
trade |
profit |
PF |
win% |
16385 |
7 |
41 |
2 |
10 |
27.67 |
1.73 |
70 |
16385 |
8 |
Timeframe |
2 |
10 |
21.44 |
1.57 |
70 |
16385 |
18 |
31 |
2 |
6 |
14.12 |
1.57 |
66.67 |
2018年9月 EURUSD 4時間足
Timeframe |
PeriodMA1 |
Timeframe |
Method |
trade |
profit |
PF |
win% |
16388 |
15 |
25 |
0 |
6 |
52.98 |
16.09 |
100 |
16388 |
17 |
33 |
0 |
5 |
24.7 |
2.83 |
80 |
16388 |
14 |
25 |
0 |
5 |
24.58 |
2.82 |
80 |
※Methodの定義は以下の通り
ID |
説明 |
0 |
単純平均。 |
1 |
指数移動平均。 |
2 |
平滑平均。 |
3 |
線形加重移動平均。 |
結果はざっと上記の通りですが、色々なことを示唆してくれています。
- 時間足が長くなるほど勝率があがる傾向にある
- (当然だが)月・時間足毎に最適なパラメータは異なる
- 最適に近いパラメータを選択することができれば、80%を超える勝率が得られる
- 単純な移動平均線クロスでも、パラメータ次第で高勝率を得ることができる
最適なパラメータが月毎に異なるのは、その月の相場(トレンドの強さ、レンジ等)を表現していると考えることもできます。
注意:これは俗にいう”カーブフィッティング”です。
EA製作者が忌み嫌うカーブフィッティングですが、シグナル強度を検証するために、敢えて今回挑んでみました。
個人的には勝率は最低でも70%は欲しいと考えます。(これはあくまで過去の結果であり、将来を予測する数値ではありませんが、高い方が良いのは当然でしょう)
そう考えると、移動平均線を5分足で運用するのは無理そうです。15分足も月により異なるのでやめた方がよさそう。
逆に1時間足、4時間足は十分にエントリシグナルとして役立ちそうです。
結論:移動平均線のクロスはエントリシグナルとして十分に役立つ(場合による)
これはあくまで
最適に近いパラメータを選択できた場合の話です。
逆に選択を間違えると、勝率10%台(逆シグナルに使えるのではw)という場合もあります。
EAを作る場合は、特定の時期に最適化されたカーブフィッティングを極力排し、長期間のバックテストで普遍的に利益を得ることを目標にすることが一般的だと思います。
しかし、正解はそれだけでしょうか?
もちろん、例えば2017年のデータで高収益をあげるけど、2018年の実運用では全く利益が出ない・・・なんてゴミEAは全く役に立ちません。
裁量のケースを考えてみてください。
「このところ円安傾向が続いてるから」とか、「今週末の雇用統計に向けて動きは少ないだろう」とか、その時その時に合わせて適宜判断していると思います。
長年FXをやりつつ、自動取引に四苦八苦しつつ色々と試行錯誤を続けてきたdummytopの結論です。
カーブフィッティング上等!
・裁量取引は究極のカーブフィッティングです!(あくまで私見です)
・ダマシを避けるためにEAに色々とフィルターを加えて長期バックテストするのも一種のカーブフィッテイングです!(あくまで私見ですw)
・過去に合わせただけだとカーブフィッティングだけど、
今現在に合わせることができればそれは最適化です!
きっかけはディープラーニング適用の失敗でした。
そもそも長期的には為替相場には有意な規則性は見つけられない!が結論でした。
しばらくは”神の与えたもうた最適の組み合わせ”を探すことに注力しようと思っていますw
PS
MT5へ移行を決意する前にMT4で色々と作っていたので、今回の移動平均線のクロスのみ(週末フィルタなし)のEAを作って実運用(フォワードテスト)してみました。(あくまで少額のお試しですが)
エントリ判断のロジックは本当にこれだけの超シンプルEAですw
maFast0=iMA(NULL,opt[set].timeFrame,opt[set].fast,0,opt[set].mode,PRICE_CLOSE,1);
maFast1=iMA(NULL,opt[set].timeFrame,opt[set].fast,0,opt[set].mode,PRICE_CLOSE,2);
maSlow0=iMA(NULL,opt[set].timeFrame,opt[set].slow,0,opt[set].mode,PRICE_CLOSE,1);
maSlow1=iMA(NULL,opt[set].timeFrame,opt[set].slow,0,opt[set].mode,PRICE_CLOSE,2);
if(maSlow1>maFast1 && maSlow0<maFast0){
openPos(Sell,set);
rc=true;
}
もちろん、周辺で色々と苦労はしていますが・・・
まだ2週間たっていませんが、結果はこんな感じで、期待以上の結果を得ています。
単にEAを作って2週間の運用しただけだと、
・今のトレンドに合っていたんだろう。しかしこの先はどうなるかわからない!
と考えたと思います。
しかし今回は違います。
意図して”神の与えたもうた最適の組み合わせ”を探したのですから、その結果が良く出てるのは喜ぶべきことと考えます。
当面は、この最適な組み合わせを求めて試行錯誤していく予定です。
PS2
検証結果、もう少し見やすくしたいですね・・・_| ̄|○