押し目エントリーのEA作成(第5回)

2018年10月13日

プログラム作成

今回から実践でもある程度機能しそうなEAの作成に入ります。

と言っても、大枠はEAの大枠と前処理の作成(第4回)で作りましたので、あとはEntryとExitの詳細を詰めるだけです。

ここまできたら難しい内容は殆ど無いので安心してください。

売買ルールを決める

戦略は色々と考えられると思いますが、今回は以下ルールで実施します。

  • Entryルール:押し目でエントリー
  • Exitルール:ある程度戻ったら決済

プログラムは曖昧なことを解釈できません。

例えば今回は「押し目でエントリーしてね!ある程度戻ったら決済してね!」となりますが、「押し目って何?ある程度って何?」となってしまいます。

曖昧さを排除した定義が必要になります。

※「押し目」とは、「上昇中の相場が一時的に下降すること。」、「下降中の相場が一時的に上昇すること。」です。

 

曖昧さを排除したEntryルール

押し目を厳密に定義していきますが、押し目にはいろいろな判断方法があります。

このEAでは、移動平均線で方向を判断しつつ短期間RSIを使って押し目を判定します。

買いルール

1本前のローソク足の終値が1本前の単純移動平均線より上である
短期RSIが下限に近い

売りルール

1本前のローソク足の終値が1本前の単純移動平均線より下である
短期RSIが上限に近い

これでだいぶ具体的になりましたが、まだ以下部分に曖昧さがあります。

  1. 移動平均線の期間は?
  2. RSIの期間は?
  3. RSIの上限に近い値とは?
  4. RSIの下限に近い値とは?

実はこれらは全てプログラムの外から変更することができるように作りますので、気にする必要はありません。

ただ、初期値として仮で値を入れる必要があるので、具体的な値を入れておきます。

値を入れた後のルールは以下になります。

修正後の買いルール

1本前のローソク足の終値が1本前の100期間単純移動平均線より上である
2期間RSI15より小さい

修正後の売りルール

1本前のローソク足の終値が1本前の100期間単純移動平均線より下である
2期間RSI85より大きい

ここまで出来れば自分でプログラムを書くこともできますし、他者に依頼することも簡単にできます。

 

曖昧さを排除したExitルール

Exitルールに関してもEntryと同じように厳密に定義していきます。

買いポジション決済ルール

短期RSIが85より大きい

売りポジション決済ルール

短期RSIが15より小さい

 

プログラム化

MetaEditorを開いてPullBackEAという名前でEAを作成してください。

EAの大枠と前処理の作成(第4回)で使ったプログラムをコピーします。

変更するのはentry_signal()とexit_signal()です。

それと、プログラムの外から数値を変更できるように少し項目を追加します。

 

先頭に追加するプログラム

「input xxxx」の部分を記載することで、外部からでもRSIの期間や移動平均線の期間を変更できるようになります。

実感が湧きづらいと思いますが、バックテスト時に分かりますので現時点ではそこまで意識する必要はありません。

※バックテストはMT4/MT5についているストラテジーテスターの機能で、もし作成した売買ルールを過去運用したらどうなっていたかを見ることができるものです。

各設定値を以下にまとめました。

※0.1ロットは1万通貨のことなので、単位を間違えないように注意してください。

名称 説明
lot Entry時のロット数(0.1ロット=1万通貨)
margin_limit 最低証拠金
limit_spred 許容できるスプレッド
rsi_period RSIの期間
moving_period 移動平均線の期間
entry_rsi_buy 買いエントリー時のRSI基準
entry_rsi_sell 売りエントリー時のRSI基準
exit_rsi_buy 買いポジション決済時のRSI基準
exit_rsi_sell 売りポジション決済時のRSI基準

 

Entry部分

16行目の「// 1本前と2本前のRSIを足して2で割る」という部分は、説明が複雑になるためルール作成の時に定義しませんでしたが、このEAでは平滑化した方が少しパフォーマンスが上がるので追加しています。

 

Exit部分

Exit部分はルールで定義した通りに組んでいますので、特に違和感は無いと思います。

 

完成!

完成です!ここまで作ったプログラムをまとめて以下に記載します。

いつもの通りMetaEditorにプログラムをコピーしてコンパイルしておいてください。

コンパイルがよくわからない場合は、最短でEAを作る(第2回)をもう一度確認してみてください。

 

バックテスト

ここからバックテストに入りますが、今回はパフォーマンス部分に注目していきますので、バックテスト自体のやり方は説明しません。

分からない場合は、最短でEAを作る(第2回)EAの大枠と前処理の作成(第4回)をもう一度確認してください。

 

動作確認

まずは動作確認を行い、定義したルール通りにEntryとExitが行われていることを確認しましょう。

 

テスト期間

長期間でのテストを実施します。

動作確認は短期間でも構わないのですが、EAのパフォーマンスを見るためには長期間の方が信頼できます。

多くのデータでテストした方が信頼性があり、未来のパフォーマンスを予測できる確率が高いからです。

メタトレーダーを起動し、以下の設定を行いスタートをクリックしてください。

項目
エキスパートアドバイザ PullBackEA.ex4
通貨ペア USD/JPY
モデル 始値のみ
期間を指定 チェック
開始日 2000.01.01
終了日 2015.01.01
ビジュアルモード チェック無し
期間 M15
スプレッド 10
最適化 チェック無し

 

結果確認

[グラフ]

MT4のバックテスト結果

[レポート]

[考察]

利益が7395ドル、最大ドローダウン(下落率)も1080程度。これほどシンプルなルールのEAとしてはそんなに悪い数値ではないです。

また、テスト期間が15年間で、さらに総取引数が13138回ということなので検証数も十分と考えられます。

ただし、グラフを見ると真ん中付近で伸びが鈍化しており、直近ではそこまで利益が出ないのではないか?ということも分かります。

 

まとめ

今回は押し目エントリーのEAを作成して、テストするところまで実施しました。

次回のEAのパラメタを最適化(第6回)で、もう少しこのEAのパフォーマンスが良くなるように調整します。

今回の記事のまとめ

  • プログラムからは曖昧さを完全に排除する

 

自動売買入門のまとめは以下をご参照ください