takahのEA開発ブログ

MetaTrader4(MT4)上で動く自動売買ソフト(EA)の開発をしています。 自作EAの紹介や無料EAの配布など、EAに関することを思うままに書いております。

EA開発

私はEAは「買い方」と「賭け方」の組み合わせから成り立っていると考えています。

「買い方」とはどのタイミングでエントリーや決済を入れるかで、EAのロジック的な部分のことを指します。
「賭け方」とはどのような金額を入れるかで、ベッティング(Betting)のことを指します。

ベッティングにはナンピン、マーチンなど高い効果を生む可能性がある一方、扱いがとても難しいため、個人的に使っているEA以外にはリスク軽減の意味からベッティングルールがない単一ロットで動くEAにさせてもらっていました。

ただ、賭け方が仕込まれているEAはリスクが高くなる半面、爆発力も秘めています。
そこで、先日完成したSoRA2にベッティングルールを仕込んだらどうなるのか?と興味が湧き、ちょっと作ってみることにしました。

私がベッティング系EAを作る場合、ナンピンマーチンではなくピラミディングをカスタマイズして作ることが多いので、今回もそれで作ってみました。(個人的にナンピンマーチンが苦手っていうのもありますが…)

んで、できたEAがこちらです。
sora2pe
qa_sora2pe
数値的にはこんな感じになりました。
sora2比較
あくまでバックテスト上の結果ではありますが、LE(ベッティングルールなし)よりPE(ベッティングルールあり)の方が取引件数や最大DDが約2倍になっているにも関わらず、利益がそれ以上の約2.6倍になっている所は興味深いですね。
つまり、LEでロットを2倍にするより、PEの方が利益が高くなるという結果になっています。
また、平均勝ちトレード、負けトレード、勝率の誤差がほとんどないにも関わらず、期待利得が高くなっているのも目が行きますね。この辺はピラミッディングのベッティング効果が出ているのかもしれません。

ちなみにSoRA2は多通貨ペアでの適性がありましたが、PEはユロ円ほど大きな効果が見られなかったので、PEはユロ円専用で考えた方が良いかと思っています。

このPEは個人用として作ったのでリリースさせていただくかどうかは白紙ですが、もしリリースさせていただく場合は完全版の特典にでもしようかなと思っています。。。
RSS このエントリーをはてなブックマークに追加


久しぶりの投稿です。
私のEAは年末年始(12/24~1/4)はエントリーしない仕様になっておりますので、年内の取引は終了しています。
そんな中、Twitterでは少しずつ情報発信させてもらっていますが、SoRA2が完成し、FEATにリリースさせていただきました。いきなりGBPUSD版が収益額1位、GBPJPY版が5位をいただいたりなどさせてもらっております。
feat_ranking
そういえば、SoRA2のことをちゃんと紹介させていただいていなかったかと思い、ここで紹介させていただこうと思います。


開発のきっかけ
SoRA2の開発を始めたのは、SoRAがリリースされて数カ月経ってからだったと思います。
それまでもずっと頭の片隅に残っていたことがあり、それがだんだんと私の中で大きくなってきました。

それは「なぜフォワードで通用するEAが少ないのか?」でした。

何を今更、と言われる方がおられるかもしれません。
EAのことを多少なりともご存じであれば、バックテストの通りにフォワードが推移するEAが極端に少ないのは周知の事実です。
そこに対して、私なりの見解も持っています。私の考えはこうです。
EAの開発は、ある特定期間のバックテスト(ヒストリカルデータ)の情報を使い、その期間内で利益が出る(=収益曲線が右肩上がりになる)EAを開発します。
そのため、過去のバックテスト期間が未来において再現される場合、その未来においても利益を出すことができると考えられます。
しかしながら、相場は人間の予測の外にあり、それは誰にも予測できません。故に、再現性がなくなってしまった場合、そのEAが有効に働かなくなってしまいます。
この考えは今でも正しいと思っています。
こうした前提条件がある中でEA開発をしなければならないと考えた場合、いくつかの方法論が浮かび上がります。
  1. バックテストの期間を最長(15~20年程度)にして期間の汎用性を持たせる
  2. バックテストの期間を数年(3年未満)にして、その時々の相場に合わせたチューニングを都度行う
  3. ロジックを簡略化し、どの相場においても適用できるようにする
ここではどの考え方が正しく、どの考え方が間違っているという議論は避けますが、相場の不確実性を考えるとどの考え方も正しいような気がします。そのため、SoRAはこの3.のロジックを簡略化し、どの相場においても適応できるようにすることを狙って作りました。

その結果として、SoRAは2020年の1年間で約2,200pipsほど稼いでくれていますので、今の時点ではこの考え方は適応されているような気がします。(直近は落ち込んでいますが…)
SoRA_2020

とは言え、それでもSoRAの開発スタイルはある特定期間のバックテストデータを元にパラメータチューニングを行い、各通貨ペア、時間足に最適な数字を割り出し、それをステータスとして持つという旧来のやり方を踏襲していました。

ということは、このままいけばいずれ相場の適応性が薄れてしまった場合にロジックが通用しなくなる可能性を秘めたEAであるということが否めないのではないか、と思うようになりました。

そのことを強く思うようになったのは、HANAの不調もあります。
HANAは今年一年、本当に落ち込みました。。。
私自身HANAを動かしていますが、ここまで落ち込んだのを見たのは初めてでした。
hana_honke
私はHANA本家を3年ほど動かしていますが、今年の8月からの損失はかなり響きました。。。
それでも年末には何とか踏みと留まってくれたような動きをしているので、私はこのまま来年も動かそうと思っています。

話が逸れましたが、このHANAの損失を見て、尚のこと相場への適応性ということを考えるようになりました。


開発方法の見直し
そんな訳で相場への適応性を高めるEAの開発をやろうと思ったのですが、ここで2つの仮説を立てました。
  1. 既存EAにロジックなどを追加し、適応性を高めたEA(足し算の考え方)
  2. 既存EAからロジックを更に減らし、適応性を高めたEA(引き算の考え方)
勘の良い方ならお分かりかもしれませんが、1.の仮説で作ったのがHANA2、2.の仮説で作ったのがSoRA2だったんです。

HANAには明らかな弱点がありました。それはトレンドの転換を見分けるポイントが弱い点です。特にトレンドの転換点にエントリーしてしまうと逆行のまま進んでしまい損失を出してしまうのです。これが唯一にして最大の弱点でした。
そのため、色々試行錯誤しながらトレンド転換のロジックを考え、それを搭載してできたのが第2回EA-1でリリースしたHANA2でした。
結果は以下のように完敗でした。。。
hana2
コロナ禍、アメリカ大統領選挙ということも考慮しても、この結果は言い訳のしようがありません。
正に完敗でした。。。
こういったこともあり、ロジックの更なる簡略化を目指し適応性を高める引き算のやり方でSoRA2を開発するようになりました。

そして、SoRA2の開発を進めるにあたり、一度これまでの開発スタイルを全部捨て、ゼロベースで考え直すことにしました。

そもそもEAを開発するスタートになったのは自分が持っている裁量ロジックの自動売買化にあります。そこに立ち返ろうと思ったのです。
また、バックテスト期間でパラメータの値を探す最適化機能を行うことが結果的にEAの寿命を縮めているのではないかという仮説から、最適化機能を使わずに開発することにしました。

また、SoRAの長時間足組の調子が良かったことからSoRA2はEURJPYの4時間足をベースに決めました。
そうして、この段階ではSoRA2というEAを以下のように想定しました。
  • EURJPYの4時間足専用EA
  • 勝率50%の利大損小型
  • ロジックはSoRA以上に減らし、極限まで簡素化させたロジックにする
このことからわかるように、当初SoRA2はEURJPY専用EAとして作ろうと思っていました。
その理由は利益が出る通貨ペアが1つあれば、複数の通貨ペアまで手を広げる必要性はないのではないかと思ったからです。

そんな訳でSoRA2の開発をスタートさせました。
実際にはビジュアルモードでチャートを見ながらインジケーターを置き、エントリーと決済の動きを1件ずつ確認していきます。
その中で違和感のあるポイントなどをExcelに書き留めておき、再度ビジュアルモードで確認をする。この間、一回も最適化機能は使わないので、成績が出ているのかどうかが分かりません。
あくまでチャートに出ている情報だけを信じてロジックの作りこみを行いました。

やってみてから気づいたのですが、この作業がとても大変で、やり始めてから相当後悔しました(汗
そもそも何が正解がわからないですし、1件1件エントリー、決済ポイントをのスクショを取り、それを画像データとしてExcelに張り付け少しずつ動きを変えて変化を見る…こんな途方もないことをずっとやっていたので、相当シンドイ想いをしました。。。

ただ、これが結果的にロジックをそぎ落とすことにも繋がりました。
何せ、複雑なロジックだと検証がとても面倒臭いのです。もはやチャートを見る気すら起きません。
そして、ロジックを少しずつ分解し外していく過程で、パラメータの値も汎用的によく使われる値にロックして、その値だけを使うようになりました。ホント、そうしないと検証なんてやってられなかったですw

しかし、そんなことをやりながら少しずつデータが貯まっていく中で、私の中での傾向性とある程度の確証が見えてきました。
そうして、自分の納得のいく動きをするようになった段階で、最後にバックテストで数字情報を確認するようにしました。
それが、以下のような結果です。
sora2_eurjpy
元々、チャート情報はEURJPYの直近3年程度を使って行いましたが、あくまでチャート情報は個々のエントリー、決済ポイントを見ていただけに過ぎないので、この3年間でどういう損益グラフになるのかはわかりませんでした。

初めてこの結果を見た時、これはアウトオブサンプルテストの結果として使えると思いました。
つまり、疑似的にフォワードを回した結果として評価できるのではないかと考えました。

ロジックをSoRA以上にそぎ落として簡略化し、バックテストでもこれだけの数字が出せるのであれば他の通貨ペアでも通用するのではないか?と思い、試しに他の通貨ペアでもやってみることにしました。

と、ここでどの通貨ペアを使うか考えました。
ここまでの検証でEURJPYは売りと買いで傾向が違いがあることが分かっています。そのため、パラメータは売りと買いで分けているのですが、通貨ペアの組み合わせによってはこのパラメータが適応できない可能性があると考えました。そこで一貫性を持たせるため、クロス円で通用するかどうかを調べることにしました。
その結果、USDJPYGBPJPYは適応できそうな結果が出てきました。
sora2_usdjpy
sora2_gbpjpy
これら3通貨ペア(EURJPY、USDJPY、GBPJPY)は完全同一パラメータで動いています。
しかも、これらの通貨ペアでバックテストを行ったことすらないので、これもアウトオブサンプルテストの結果として捉えられるのではないかと思いました。

更に、ロジックの有効性をもう少し検証したいと思い、買いのパラメータ、売りのパラメータを選択できるようにしておいた上で通貨ペアの適性を調べてみると、CHFJPYAUDJPYGBPUSDの通貨ペアでも使えそうな損益曲線になりました。
sora2_chfjpy
sora2_audjpy
sora2_gbpusd2
勿論、それぞれの通貨ペアで最適化機能を使えばもっと良い損益曲線は導き出せるかもしれません。しかし、それをすると当初の思想から外れてしまいます。
また、この結果はEURJPYの汎用性を裏付けるために試したことだったので、これだけの結果が出れば十分だと考えるようになりました。


SoRA2の完成
ここまできてSoRA2の形はでき上がりました。
後は実際のフォワードに回して検証してその有効性が確認できればOKです。
この時、EURJPYだけを動かそうと思ったのですが、一応検証という意味で先に挙げた5通貨ペアも一緒に動かすことにしました。

現時点までのSoRA2のフォワード結果は以下のようになっています。
sora2_real
sora2_fw
SoRA2はReal Tradeでもフォワードを動かしていますので、そっちも載せています。
1件ずつの動きはMyfxbookの方を見ればわかるのですが、想定した動きをしてくれており、ここまでは順調に推移しています。
これを見ると、EURJPY自体一番利益が出ている通貨ペアではありますが、それ以外の通貨ペアとのポートフォリオも成立するような動きをしてくれていました。
(GBPUSDはフォワード開始後350pipsほど取っていたことが分かったのですが、私のミスで動いていませんでした。。。以下はFEATのフォワードです)
sora2_gbpusd

SoRA2のEAとしての特徴をまとめてみます。
  • 4時間足専用EA
  • ロジックが相当簡略化されており、インジケーターのパラメーターは一般的に使用される数字のみを採用
  • 複数通貨ペアでの適性あり(全通貨ペア同一ロジック、同一パラメータを採用)
  • 勝率50%前後で利大損小型
  • チャートのみで作成し最適化機能を使っていないため、バックテストの結果はアウトオブサンプルテストの結果として評価できる
少し補足させていただくと、4時間足を採用したことでコロナ禍の相場やアメリカ大統領選挙などの地政学的リスクを吸収しやすくなっているように感じました。
また、利大損小のスイング型なので、スキャルピング型などと違い環境差も少ないように思います。

ただ、ロジックの関係上、負ける時は一気にSLまで行くことも多いです。
この動きについては一考したのですが、裁量を考えた場合、勝ち負けのルールを明確にしておくことが利益を出す事の第一歩だと私は考えています。そこに準えると、損失を抑えるロジックを入れることでルールを複雑にしてしまうことが、結果的にEAの寿命を短くしている可能性があるように感じました。(損失ロジックが嵌らない相場になると、結果として想定していた以上に損失が大きくなってしまうためです)

そのため、このSoRA2は勝ち負けを分かりやすくしておくことで利益を積み上げられるようなEAにしたいと結論付け、この形を採用しました。(ただし、この辺は利用する人の考え方もあるので、EA上は柔軟に対応できるようにしたいと思っています)


SoRA2のリリースについて
このような経緯ででき上がったSoRA2ですが、リリース方法は以下のようにさせていただいております。

①SoRA2
ロジック解説あり、全パラメータ解放、インジケーター付きの開発者エディションに位置付けている版で、すべての通貨ペアが利用でき、ご自身でSoRA2をチューニングすることもできます。

②SoRA2 for FEAT
FEATにリリースしたSoRA2です。USDJPY、GBPJPYの2通貨ペア版があります。

昨今はスキャルピング型のEAを利用されている方が多いと思いますので、よろしければスイング型のEAとしてポートフォリオにご検討くださいませ。。。


最後に。
HANA2についてですが、今回のSoRA2を踏まえ、SoRA2の開発手法で作り直しをしております。少しずつ形になってきておりますので、こちらもご紹介ができるようになりましたら、改めてお伝えさせていただきます。
RSS このエントリーをはてなブックマークに追加

続いて、SoRAの振り返りをしたいと思います。
soneki_sora_202002
kekka_sora
2月は地政学リスクとして新型コロナウイルスの影響により急激な円高になりましたが、これによりスキャル系EAがかなりやられたみたいです。
SoRAも短時間足組はスキャル系の動きをしますので軒並みやられてしまいましたが、逆に長時間足組がかなり調子を上げてくれたみたいで、結果を見れば約580pips程取ってくれました。
このようにSoRAはあるストラテジーの調子が悪い時に別のストラテジーが補完し合うようなポートフォリオを1つのEAで実現させることを目標にしており、2月はそれがうまくハマった形になりました。
では、各時間足組を見ていきます。

■5分足組
soneki_m5
detail_m5
調子の悪い短時間足組の中で、5分足組は結果的に47pips程取ってくれました。この相場でスキャル系でこれだけとれたのは十分な結果だと思います。
ただ、一番取引回数が多かったAKISoRA(ドル円)の勝率が少し低かったのですが、平均損失が抑えられたため利益に繋がったみたいです。
とは言え、本調子の形ではないので、暫くは我慢が続くかもしれません。。。

■15分足組(GWエディション)
soneki_m15
detail_m15-1
detail_m15-2
続いて、GWエディションとして提供させていただいている15分足組です。
2月は結果的に120pips程のマイナスとなってしまいました。。。
内訳をみてみると、AKISoRAとHISoRA(ユロ円)の勝率が低くなっており、これが足を引っ張った結果になりました。特に短時間足組の場合、損失のパターンの多くはエントリー直後から逆行し、そのまま決済にかかってしまうような動きをするのですが、それがそのままハマった形になっていました。。。
地政学的リスクはしばらく続きそうな雰囲気もありますので、15分足組はもう少し注しておく必要があるかもしれません。

■30分足組
soneki_m30
detail_m30-1
detail_m30-2
損益グラフを見ると右肩下がりになっており、調子を上がって来ていないですね。。。また、勝率は40%台で推移していることから、勝ち切れておらず利益が乗ってきていないことが大きな原因ではないかと思います。
30分足組は2月で36エントリーがありましたが、それでも損失は15分足組より少ない90pips程度で抑えられました。これは損失額が抑えられていることの表れで、逃げる所でうまく逃げてくれたのではないかと推測しています。
短時間足組は勝率が上がってこないと利益を積んでくれないので、15分足組同様、30分足組も3月は注視していきたいと思います。

■1時間足組
soneki_h1
detail_h1-1
detail_h1-2
ここからは長時間足組で、まずは1時間足組です。
2月は1時間足組が爆発してくれたみたいで300pips程稼いでくれました。
AKISoRAが低勝率の利大損小型で推移してくれており、ここはほぼBT通りの動きをしてくれました。
そして、AoSoRA(ユロル)とHISoRAは勝率が高くなっており、相場に合っていたことがわかります。
1時間足組は利大損小の低~中小率型なので毎月このような動きはしないと思いますが、ひょっとしたらVIXが高めに推移する相場では活躍できる可能性があるかもしれません。
そういった点も含め、3月に注目したいと思います。

■4時間足組
soneki_h4
detail_h4-1
detail_h4-2
最後は4時間足組です。
ここは何はさておきHISoRAの活躍が大きかったです。
平均獲得pipsが約50pipsで勝率80%になっているので、ある種無双状態でした。。。
正直、私もこんなことが起こるのかと思うくらい暴れまくってくれましたw
ただ、それ以外のAoSoRA、AKISoRAも併せて100pips程取ってくれているので、全体的に4時間足の調子は良かったと判断しています。
こちらも1時間足同様、利大損小型なので常に勝ち続けることはなく、その内負ける時期が来ると思います。ですので、現状に楽観せず、長時間足組も注視してきたいと思います。


という訳で、2月の振り返りでした。
SoRAは短時間足組と長時間足組に大きく分かれていますが、2月のように短時間足組の調子の悪さを長時間足組がカバーするという、1つのEAで相互に補完し合う動きをしてくれました。
今後もこのような動きをしてくれることを期待したいと思います。
3月もがんばれ、子どもたち!
RSS このエントリーをはてなブックマークに追加

3月になったので2月の振り返りをしようと思います。
まずはHANAから。
soneki_hana
hana_kekka
全体的にはドル円組以外100%の勝率でした。この流れは今年に入ってから続いており、HANAの調子が上がってきているのではないかと思います。
ただ、ドル円組もGypsoが大きく損失を出していますが、これも止む無しといった所なので、調子自体は悪くないと思います。
では、詳しく見ていきます。

■本家、タイプT組
soneki_honke
detail_honke
本家、タイプTともに勝率100%でした。特にコメントすることもないのですが、平均取引時間が4時間程度とうまく利確できているように思います。
このまま頑張ってもらいたいですね。

■ドル円組
soneki_usdjpy
detail_usdjpy
今回、唯一損失を被っているのがドル円組でした。しかし、Thanksは何とかプラス着地しており、こちらは許容範囲だと思われます。
Gypsoが2/24にSLに引っ掛かりましたが、この時のチャートは以下のようになっています。
chart_usedjpy
これを見ると、最初にエントリーしたポイントは次の足でTP決済しています。そして、その次の足で再度エントリーを仕掛けたのですが、そこから急に相場が反転し一気にSLまで落ちてしまいました。。。
相場の流れで連続するローソク足でエントリーすることはHANAは良くあるので、エントリータイミングは間違っていないと思います。ただ、この後の急激な円高によりSLまで持っていかれてしまったような形なので、これは止む無しだと考えます。
1月からの動きを見ても、大きく崩している訳ではないので、3月も期待したいと思います。

■ユロル組
soneki_eurusd
detail_eurusd
本家、タイプT組同様、ユロル組も勝率100%でした。こちらも特にコメントすることはないのですが、同じユロルの本家、タイプT組はトレイルを使っていない本家の方が平均利益額が高かったことに対し、ユロル組はトレイルを使っているGypsoの方が平均利益額が高かったです。
また、ポジション保有時間もユロル組の方が少し長くなっていました。
HANAはパラメータだけで性格付けをしていますが、このような動きをするのはそれぞれのストラテジーの性格付けができていることの表れではないかなと思います。
3月も頑張って欲しいですね。。。

■ドルカナ組
soneki_usdcad
detail_usdcad
ドルカナは1月も勝率100%でしたが、2月も100%でした。こちらも特にコメントすることはないのですが、HANAは勝ち続けるEAではないので、そろそろ負けが入ることもあり得ます。
調子のよい状態が続いて欲しいとは思いますが、注意したいと思います。

そんな訳で、2月の振り返りでした。
総じて調子が良かった月ではないかと思います。
親としてはこの調子が続いてくれることを願うばかりです。。。
3月もがんばれ、子どもたち!
RSS このエントリーをはてなブックマークに追加

先程、SoRAのインジの話をさせてもらいましたが、TwitterでHANAのインジのご要望もいただいたのでぱぱっとつくってみました。

■HANAインジケーターサンプル動画
 
これは本家のパラメータでやっているのですが、こうやってみるとHANAって結構アグレッシブな動きをするなぁと思います。
でも、長期順張り、短期逆張りの動きは概ねできている感じはしますね。何気に結構興味深い動きをしますね。。。

ものの数分でつくったインジなので大したものではないのですが、せっかくなのでHANA開発者エディションをお持ちの方へのプレゼントにでもしようかなと思います。。。
RSS このエントリーをはてなブックマークに追加

↑このページのトップヘ