takahのEA開発ブログ

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

暫くのご無沙汰でした。
前回の記事が昨年8月だったので、実に半年ぶりの投稿です。

今回、SoRA2を正式版としてリリースいたしましたので、そのご報告です。

SoRA2はゴゴジャンさんよりリリースさせていただいております。
元々はゴゴジャンさん以外からのリリースを考えていたのですが、アフターフォローなどの点を勘案し、現時点ではゴゴジャンさんがベストだと考えました。(商品ページは右のバナーからご確認ください)

SoRA2リリースに至るまでの経緯は前回の記事に書かせていただいておりますのでご興味のある方はそちらをご確認いただければと思います。

フォワードに関しても右のMyfxbookやFEATのサイトをご覧いただければと思いますが、とても好調に推移しております。特にFEATにおいては記事投稿時点で収益ランキングの1~2位になっております。

FEAT
https://feat.trgy.co.jp/

feat_ranking

その要因は昨今の円安が背景にあることは間違いなく、こういった一方的なトレンド相場の場合、SoRA2のロジックはかなり有効的に働くことも分かってきました。
この円安相場がどの程度続くかは分かりませんが、暫く好調な状態が続くのではないかと推測しています。

また、フォワードをご覧いただけるとお分かりかと思いますが、どの通貨ペアも全期間に渡って利益を積んでいる訳ではなく、負けが込む時期が出ています。
これはSoRA2のロジックが簡略化されているが故に起こることで、SoRA2は負けを許容しながら利益を積み上げる思想で作っていますので、どの通貨ペアにおいてもこのような期間が必ず現れます。
そのため、損益曲線が綺麗な右肩上がりのフォワードを期待される方にとって、SoRA2は向いていないと思います。
そうではなく、利益も損失も繰り返しながら最終的には儲けが得られればとお考えになられる方にとってSoRA2は候補になってくるのではないかと思っております。

このSoRA2ですが、現在2種類の方法でご利用いただくことができます。

1.ゴゴジャンさんからご購入いただく
2.FEATからご利用いただく

ゴゴジャンさんからご利用いただく場合は以下のような形でEAをご提供いたします。

・通貨ペアの縛りなし
・証券会社の縛りなし
・ロジック全解説

一方、FEATからご利用いただく場合は、以下のような制限があります。

・通貨ペアはポン円(GBPJPY)、ドル円(USDJPY)のみ
・証券会社はForex Exchangeさんのみ
・ロジックの説明などはなし


FEATからご利用いただく場合はFEAT経由で口座開設していただき所定の条件を満たしていただければ、FEATに登録されている全EAをご利用いただくことが可能なので、そこからSoRA2をご利用いただく形になります。そのため、EA代金は無料でご利用いただけます。

一方、ゴゴジャンさんからEAをご利用いただく場合、EA代金は発生しますが、通貨ペアや証券会社などの縛りは一切なく、またロジックの解説もあるため、より深くSoRA2を運用していただくことが可能になります。

もし、ご興味のある方は是非ご活用ください!

※SoRA2正式版リリース後、過去に行ったプレゼント企画がないのか?とのお問い合わせをいくつかいただいておりました。現状、FEAT経由で無償でSoRA2をご利用いただくことも可能なので、プレゼント企画自体は考えておりません。ご了承ください。


さて、今回SoRA2正式版をリリースさせていただいた訳ですが、私事ですが、ここで一旦EA開発を一区切りしたいと考えています。
というのも、今回SoRA2を開発してみて、EA開発は本当に奥が深く、そんな簡単なことではないということが身に染みて分かりました。

MT4/MT5の普及やEA開発手法を教える方が増えるにつれ、EA開発の敷居が下がったことは事実ですが、本来のEA開発は単なる数字合わせで損益曲線を右肩上がりにするゲームのような物とは本質的に異なります

たくさんの最適化処理を夜寝る前に走らせ、朝起きてその結果を確認する…そんなことで理想のEAができたら誰も苦労はしません。
利益の出るEAは最適化処理から生まれるものではなく、実践の中からしか生まれないと私は結論付けます。今回、SoRA2が生まれたのは私の裁量ロジックをたまたま形にすることができたからだと思っています。

一応、私の裁量ロジックはまだ他にもありますが、それらをSoRA2のように再現させようとしても、現段階ではできていません。もうかれこれ1年以上取り組んでいますが、未だにその答えが出てくる気配すらありません。それくらい難しいです。。。

今後、SoRA2レベルのEAを作れるか、正直自信がありません。

だから、EA開発は一旦ここで一区切りつけたいと思います。

私の中では今後もひっそりと続けていくつもりはありますが、いつ結果が結実するか分からない中で息巻いて開発を続けるのは正直シンドイです。。。
ですので、少し肩の力を抜いてのんびりやりたいと思っています(焦ってやっても結果は出ませんし)。
そうして、もし何かお見せできる物ができた時、またお知らせしたいと思います。
…が、ロジックができたとしてもフォワードを年単位で積まないといけないので、多分数年単位でそれはないと思います。。。

あ、でも別に消える訳でも何でもないです。
Twitterは残ってますし鍵アカは外していますので、そこで何かつぶやくとは思います。
もし何かありましたらお気軽にお声がけくださいね♪
RSS このエントリーをはてなブックマークに追加


しばらくぶりのご無沙汰でした。
SoRA2開発以降、ずっと地下に潜っていました。。。

で、最近また少し地上に顔を出すようになったので、私のEA開発の一つの区切りとして、EA開発に対する考察をまとめたいと思います。
あくまで私個人の考え方であり、それを他のEA作者様に強要するなどの意図は一切ありませんので、その点ご理解の上、ご覧ください。

EAは自動売買ロボットで多くはMT4/5で稼働することを前提に作られています。
MT4/5には非常に強力なEA開発ツールが備わっており、たくさんの角度から色んな数字を導き出し、最適な損益曲線を描くEAを弾き出すことができるようになっています。
しかし、そうやって作られたEAはほとんどが勝てませんよね。。。

なぜ、勝てないのか?私なりにあれこれ考えたのですが、そもそもMT4/5の開発環境そのものが諸悪の根源なのかもしれないと思うようになりました。

かなり突飛な考え方のようにお感じになられると思いますので、順を追ってご説明します。

MT4/5で開発をする場合、ほぼ100%過去のヒストリカルデータをベースに開発作業を行います。それは、ヒストリカルデータ上で成績の出るロジックを組むということに外ならず、ストラテジーテスターを使うと、これがほぼ全自動でそれができてしまいます。
その便利さからEA開発者はヒストリカルデータありきのEA開発を前提に考えますが、そもそも相場はランダムウォークと呼ばれており、過去のデータの再現性については未知数だと言われています。
そこに対して何ら結論付けられることがないまま、ヒストリカルデータ至上主義的な開発手法を取らざるを得ないのは、偏にMT4/5の開発形態がそのような形態になっているからではないかと思うのです。

そして、そのヒストリカルデータにも色んな問題が孕んでいます。ヒストリカルデータについてもう少し深く掘り下げてみます。
EAはPF、RF、最大DD、期待利得など色んな数字を見て判断されますが、それは過去の一定期間のヒストリカルデータから算出された値でしかありません。しかも、ヒストリカルデータの期間によってその成績は良くも悪くもなります。この辺はEA作者の考え方ひとつです。長期間のヒストリカルデータが良いという方もおられれれば、直近短期間の方が良いという方もおられます。どちらの考え方も理解はできますが、その根拠はどこにもありません。

このヒストリカルデータの期間の問題はEAを捉える上で非常に重要なポイントでもあります。
それはヒストリカルデータの期間によってEAの成績が変化するのであれば、そのEAの本質的な能力はどこ視て測るのか?が明確にはならないということを意味しているからです。
つまり、私たちが普段から何気なくEAの性能として見ているバックテストの結果は、EA本来の性能を表しているかどうかはEA作者を含め誰にも分からない情報を見ていることになります。。。

更に言えば、ヒストリカルデータは業者によって違うという点も考慮しなければなりません。Aという業者のヒストリカルデータでは機能していたロジックも、Bという業者のヒストリカルデータでは機能しない場合は普通にあり得ます。この場合、どのように考えればいいのでしょうか?A業者専用EAといでもするのでしょうか?そんなことはしませんよね。
その点もヒストリカルデータを使った開発の不確定な要素と言える部分だと思います。
尚、この考え方を解決策として複数のヒストリカルデータを使った開発手法を提唱されている方もおられます。しかしこれも限定的な話であり、どの業者に対しても適応できるか?という点で見ると、抜本的な解決策にはなり得ないように感じます。

次に、カーブフッティングのお話です。
カーブフッティング、つまり過剰最適化については今更多くを語る必要はないと思いますが、特定のロジックをたくさん加えることにより、ある期間のヒストリカルデータ上での成績を良くする方法で、これを行うとロジックが未来において適用しづらくなると言われています。

しかし、そもそも何をもって過剰最適化というのか、誰一人説明できる人はいないように思うのです。例えば、ロジックが1つのEAから見てロジックが2つのEAは過剰最適化されていると言えるかもしれませんが、一方でロジックが2つのEAから見てロジックが3つのEAは過剰最適化されているとも言えます。では、結局のところ、ロジックが2つのEAは過剰最適化されてるのでしょうか?
このように見ると、どのEAが過剰最適化されているのかというのは相対評価で考えるしか方法がなく、単一EAを論じる場合、どのEAが過剰最適化されているのかは誰にも分からないように思うのです。

ここから分かることとして、過剰最適化という概念は誰しもが理解している考え方ではあるものの、どのEAが過剰最適化されているのかは結局誰もが分からず、私たちはそういった誰にも分からないような概念をフィルターとしてEAを見ている事実だけが残っているように感じます。
そして、相場がランダムウォークである以上、過剰最適化でも損益曲線が右肩上がりになる未来はあるかもしれません。
だとすると、過剰最適化自体善なのか悪なのか、その評価すら揺らいでくることだってあるかもしれません。実際そのように作られたEAが短期間であれ活躍しているケースはあるように思うからです。

今回、ヒストリカルデータとカーブフッティングを取り上げてEA開発を透かしてみましたが、たったこれだけのことでもEAの開発って何一つ明確なものがない中で開発されているのが良く分かります。
そのような中でバックテストが綺麗なEAができたとしても、そのバックテストは不確実性の塊でしかなく、そのデータを見て一喜一憂したり、そのEA欲しさに人が集まったりすることに、いつしか強い違和感を感じるようになりました。

しかし、それ以外にEAを表現する方法がない以上、明確なものが何一つない中で日々EAが作られ、日々使われています。残念なことにこれがEAの現状だと考えます。

私がEA開発を進めていく中でこの疑念が少しずつ大きく膨らんできました。しかし、その疑念に対する結論は最後まで出せませんでした。というか、自分の中で解決はできませんでした。

そんな状態でEA開発を続けられるのかをずっと考えるようになり、いつしかEA開発から離れようと考えるようになりました。
しかし、今でも私のEAを使っていただいている方がおられる以上、このことに蓋をしてEA界から退場するのはまだ早いと考え、別のアプローチでEA開発に一から取り組むことにしました。

色々考えた末、私にできることは既存の開発手法を否定することでした。

先ほども書きましたが、その当時の私はMT4/5の開発ツールがあるからそもそもこんなことになるのではないかと考えるようになっていました。だったら、その開発手法から離れ、別の方法で一からEAを開発してみようと思いました。
言うなれば、「裁量手法の自動化としてのEA」の在り方を形にしてみようと考えました。

そうして、自分に課した開発方法が以下の通りです。
  • ヒストリカルデータを使ったバックテストによる数値の最適化は行わない
  • ヒストリカルデータの利用はチャートを見るだけに留める
  • テクニカルを利用する場合、標準値、もしくは代表的な値のみを使用する
  • ロジックを極小にする
  • 完全同一ロジックで複数通貨ペアでの適応性を考える

理想を言えばヒストリカルデータを使わないことですが、流石にそれではEA開発を空想上で行わなければならず、現実的ではありません。
そのため、ヒストリカルデータは使うものの、バックテストによる数字の最適化は一切行わないようにしました。
そして、テクニカルを利用する場合も標準値、もしくは代表的な値のみに留めるようにしました。これは一般的に良く言われる標準値、もしくは代表的な値が意識されるポイントとして広く認識されていると考えたからです。
更に、ロジックを極小にすることは自分の中でのカーブフッティングの低減に繋がると考え、理想は1テクニカル2ロジック以内で実現できるようにしたいと考えました。(1テクニカル1ロジックは現実的に不可能だと考えました)
そのロジックが完全同一の状態で複数通貨ペアでの適応性考えることで普遍性を狙いました。

実際、こんなことができるのか?と思われるかもしれません。私もそう思いました。。。

ただ、考えていても仕方がないので、ある1つの通貨ペアのチャートだけを使い、テクニカルを置いてパターン分析を始めました。それこそ何百枚のスクショを取り、動きを確認しながら1つずつポイントを確認してきます。
その間、バックテストはすべてビジュアルモードで行い、チャートの動きだけを見ながらロジックを煮詰めていきました。
そして、数カ月経ち、自分の中で納得できた段階で初めてヒストリカルデータの期間を使ってバックテストを行い、EAとしての形を見定めました。
この時、初めてEAの損益曲線を見たのですが、何とか右肩上がりになっていました。そしてそれは複数通貨ペアにおいても実現されていました。

ちなみに、この開発で使用したヒストリカルデータはユーロ円の直近3年間だけを使用しています。そのため、それ以外の期間や他通貨ペアのでのヒストリカルデータは使ったことがなくその状態でバックテストを行いましたので、その結果はアウトオブサンプルテストの結果として評価できると考えています。

そうして出来上がったEAがSoRA2です。

SoRA2は既に完成してから約1年近く経っています。その間フォワードを積んでおりますが、ポンド円は有効な損益曲線が描けています。

SoRA2 GBPJPY(2020/10/28~2021/5/31)
sora2_gj1

SoRA2 GBPJPY(2021/6/4~8/21)
sora2_gj2
SoRA2 FEAT GBPJPY(2020/9/8~2021/8/12)
sora2_feat
この損益曲線が理想なのかどうかは過去のバックテストから評価すべきなのでしょうが、そもそもSoRA2はバックテストを重要視していないのでこのフォワードを結果として見ていただくしかないように思います。
そう考えると、現状はポンド円以外は相場への適応性は薄いと言わざるを得ません。
ただ、SoRA2はロジックが極端に単純であるため、どこかのタイミングで持ち直すことはあるかもしれません。そのため、現状はマイナスであってもフォワードは回し続けています。

最後にEAを使った投資について、私の考えをお話しします。
私はEAを使って投資をする場合、以下の要件が必要だと考えています。
  • 利用者がロジックを熟知していること
EAはEA作者のロジックをプログラミングしたものに過ぎません。しかし、そこには明確なロジックがあり、そのロジックに基づいて自動で投資を行い続けています。
つまり、EAを使った投資というのはEA作者のロジックに乗っかって投資をすることです。しかし、そのロジックを知らない状態で使う、言い方を変えるならば自分の資金を使うことって怖くないですか?

だからこそ、私は利用者はそのロジックを知っておく必要があり、その上でご自身のスタイルに合わせて投資を行うべきだと考えます。

現状、SoRA2はLE版(機能限定版でユロ円のみ利用可能)はゴゴジャンさんからリリースしていますがロジックは公開していません。また、FEATではフォワードの出ているポンド円が使えますが、こちらはFEATの利用が前提なのでForex Exchangeさん専用になります。

こういったことから、近日中にSoRA2の完全版(全ロジック公開、全機能公開)のリリースを考えています。リリース先はまだ伏せさせていただきますが、私が信頼している所からリリースさせていただこうと考えており、価格はゴゴジャンさんと同価格程度にしたいと思っています。(LEをご購入された方へのフォローは個別に行います)

幸いSoRA2のロジックはボリバンだけを使った本当に簡単なロジック(エントリーは2ロジック、決済は1ロジック)で構成されています。そのため、動きは簡単に把握でき、エントリー、決済ポイントも明確になっています。
ですので、利用者のロジックにSoRA2のロジックを追加してみたり、SoRA2のロジックをアレンジしてご自身なりの方法で投資するなどが考えられます。

そうすることで、EAに対する投資を実現する一助になればとても嬉しく思います。
(ご興味のある方は過去のSoRA2の紹介もご覧ください)
RSS このエントリーをはてなブックマークに追加

私は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 このエントリーをはてなブックマークに追加

↑このページのトップヘ