【EA開発ガイド】Part 6 バックテスト実践 – Chapter 2 五十日(ごとうび)のハイローツールを検証する

FXの自動売買に使用するMQL4と呼ばれるプログラムを少し触ったところ以前使っていたC言語に近かったので最近趣味で使っている。試しにごとうび用のサインツールを作ったのだが勝率を上げるとエントリー数が極端に少なくなってしまった。エントリー数が少ないと偏りが発生した時に年単位でマイナスになる可能性もあり微妙。しかし7年のバックテストで勝率70%を超えたのでしばらく試験運用してみるつもりだ。

注意事項

本記事はFXの自動売買に使用されるプログラムについて解説していますが内容を保証するものではありません。金銭にかかわる内容であるためご注意ください。参考にする場合は自己責任でお願いします。

留意事項

本記事ではMT4を使用する。MT4はEAが動作すればどの証券会社でも基本的に問題ないと思う。

実行環境

FXDD – MetaTrader
・Version: 4.00 build 1322
・8Feb 2021

MetaEditor
・Version 5.00 build 2375
・7 Jan 2021

ごとうびサインツールの概要

ごとう日にMAを超えたらエントリーするだけの猿並みのロジックである。

ごとうびの判定

フォワードテストでは不要だがバックテストするのにどうしても必要だったため実装。エントリー条件よりもごとうびの判定の方がよっぽど大変であった。

ごとうび判定ポイント
  • 月の最終ごとうびは月末
  • MT4のサマータイムを考慮
  • 日本の祝日に対応

月の最終ごとうびは月末

月末判定はそれほど難しくはなかった。

【EA開発ガイド】Part 4 MQL4開発応用 – Chapter 1 月末の日付を取得する

MT4のサマータイムを考慮

サマータイムはサンプルを使って作成したが色々問題が発生。くわしくは後述。

【EA開発ガイド】Part 4 MQL4開発応用 – Chapter 3 サマータイムを考慮して日本時間を取得する

日本の祝日に対応

祝日はロジックで組むことも考えたがコロコロ変わるのでメンテナンス性を考えてベタ打ちに変更。過去20年分のデータを手で入力したが無駄に終わる。くわしくは後述。

【EA開発ガイド】Part 4 MQL4開発応用 – Chapter 2 日本の祝日を取得する

条件をプラスしないと勝てない

以前記事にも書いたがごとうびを単純にロングするだけでは勝てない。ただ、ここまで単純なロジックにもかかわらず勝率50%を超えるとはごうとびのなせる業か。

【EA開発ガイド】Part 6 バックテスト実践 – Chapter 1 五十日(ごとうび)のロングは儲かるか検証する

MAで無理矢理勝率アップ

普通にロングでエントリーしても勝てないのでMAを使った判定処理を追加。MAの期間からチェックする範囲を100パターンぐらいためした。過去7年で勝率70%を超えるケースが3件ほど見つかったが年間で10回程度しかエントリーできない。

懸案事項

ごとうびのチャンスがそもそも少なすぎる。

ヒストリカルデータ問題

はじめは過去20年くらいを対象にバックテストを実施しようとしたが問題が発生し中断。現在は2014~2020年までのデータを基にテストしている。問題と言うのは2013年以降のバックテストの結果がヒストリカルデータによって大きく異なること。これは日本時間を使用した処理が含まれるためサマータイム補正が正しく動作していない可能性がある。要するにヒストリカルデータのサマータイム補正が直近の年と異なっている可能性があるのだ。

【EA開発ガイド】Part 5 バックテスト基礎 – Chapter 4 ヒストリカルデータでバックテストの結果が変わる

【EA開発ガイド】Part 2 EA開発実践 – Chapter 6 サーマータイムとヒストリカルデータ

取引数問題

勝率は7割あるが取引数が12回前後しかない。理想としては年で100回は無いと安心できない。試行回数が少ないと偏りで破産する可能性がある。可能性は低いがこの取引回数だと年間でマイナスになる可能性も0ではない。ごとうびは年間で約70回なのでちょっと無理がある。低ロットで長期運用なら使えるだろうか。

勝率 取引数
2020 67% 12
2019 70% 23
2018 83% 12
2017 75% 16
2016 69% 13
2015 75% 12
2014 67% 9

複利問題

取引数が少ないとロットを上げるタイミングが遅くなり資産を爆発的に増やすことができない。長期間資金がロックされリターンが少ないので微妙。順調に運用して年10%がいいところだろうか。

フォワードテスト問題

サインツールを実際のごとうびに合わせて動かしたが正常に動作しない。原因はティックイベント。バックテストとフォワードテストで発生するティックイベントに違いがあり正しくエントリー条件を判定することができなかった。具体的に言うとバックテストではかならず1分足切り替え時に0秒のティックが発生するがフォーワードテストでは0秒のティックが発生していなかった。結局フォワードテストの問題を実装することによって解決した。なのでバックテストで成功したからと言ってフォワードで必ず良い成績が収められるとは限らない。特にFXでロットを上げた場合は約定率の問題もある。

サインツール

実際に作成したサインツールを簡単に紹介。

ごとうびサインツール(仮)

ごとうびのMAを確認してエントリーの指示を出すサインツール。MAより上か下かを単純に見ているだけ。実感としてごとうび特有の偏りがある気がする。

結果レポート

勝率7割とかなり高い。しかし過去チャートを基準にパラメーターを調整しているので確率が高くなるのは当たり前。過去のチャートに対して都合のいい判断をしているからこれだけ勝率があがるのだ。フォワードテストをしたらボロクソに負ける可能性もある。

まとめ

はじめはインジケーターで作ろうと思ったが面倒なのでEAを改造してサインツールにしてしまった。実際にエントリーをしないだけでロジックは同じなので問題ないだろう。はじめは勝率80%以上のロジック目標にしたが無理。どんないろんな組み合わせを試して80%を超えることは無かった。今考えれば取引数が多ければ65%くらいでもいいかなと思う。

月平均20エントリーで勝率65%のサインツールを作るが最終目標であるが難航している。ごとうび以外のエントリーで勝率がMAX52%しかだせていない。20パターンほどテストしたがまったく目処が立たない。安値高値の切り上げ切り下げのロジックは良い感じで動いてはいるが条件が厳しすぎてまったく使い物にならない。趣味で楽しくやっているのでいいが仕事だったら死んでるかも。

ポイント
  • 過去チャートに合わせてチューニングすれば勝率は上がる
  • ごとうびは特有の偏りがある可能性がたかい
  • バックテストで良くてもフォワードテストで失敗する可能性がある

しばらくはフォワードテストで運用し様子をみようと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です