一つの手法で難しいなら、組み合わせたらどうか。MultiStrategy EAを作った

EAを作り始めた頃は、自分が使っていたトレードを再現できれば、ある程度は勝てると思っていました。

ダウ理論で方向を見て、フィボナッチで押し目を待つ。ローソク足の形を条件にする。勢いのある相場についていく。

ところが、条件をコードにして過去の相場で動かすと、思っていたようには増えません。条件を厳しくして成績が良く見えても、今度はほとんど取引しない。取引を増やせば、その分だけ稼げるわけでもありませんでした。

それでも、僕がやりたかったことは変わりません。

怖くなって早く利確したり、損失を認めたくなくて損切りをずらしたりする。その結果、大きく負けてきた自分の判断を挟まず、決めたルールで取引した結果を知りたい。

そこで研究対象になったのが、複数の戦略を一つのEAで動かす「MultiStrategy」です。

一つの条件だけでは取れなかった場面を、別の条件で取れるようになるか。今回は、その開発を振り返ります。

目次

買う理由を二つ用意したら、取れる場面も増えるのか

相場を見ていると、同じゴールドでも動き方は変わります。

長く抜けなかった高値を超えて上がることもあれば、短時間に大きな陽線が出て、その勢いが続くこともあります。

どちらも上昇を狙っていますが、注文するきっかけは違います。高値を抜けるまで待つルールと、直近の強い動きを見るルールでは、入る場所も変わります。

ここで確かめたいのは、二つのルールがそれぞれ違う機会を拾えるかです。

同じところで一緒に買って、一緒に負けているだけなら、注文を二つに分けた意味は薄くなります。反対に、片方が待っている間に、もう片方が利益を取れるなら、組み合わせる理由になります。

この違いを取引履歴で追えるようにする必要がありました。

一つのEAの中で、二つの戦略を動かした

保存されている初期MultiStrategy系列のコードでは、次の二つが実装されています。

戦略狙う場面
A・H1ブレイクアウト1時間足で過去の価格帯を抜け、上位足の方向なども一致する場面
B・M15モメンタム15分足で大きく動き、勢いの継続を狙う場面

Aは、高値・安値の突破に加えて、移動平均線やトレンドの強さを確認します。4時間足の条件も使っています。

Bは、ローソク足の実体の大きさや、終値がその足のどの位置にあるか、最近の値幅が拡大しているかなどを見ます。

細かな条件はありますが、ここで大切なのは、AとBが別々に注文を判断することです。保存コード上でも、二つは独立した戦略として動き、同時にポジションを持てる構成になっています。

なお、前回紹介した初期EMAモメンタムv0.04と、ここでの戦略Bは別の実装です。前回の赤字だった取引記録を、そのまま組み込んだという話ではありません。

二つの戦略が同じ日に買ったら、損失も重なる

複数の戦略を使うと、注文の機会は増えるかもしれません。でも、口座のお金は一つです。

例えば、Aが買ったあとにBも買う。そこでゴールドが下がれば、両方が含み損になる可能性があります。

Aだけなら許容できた損失でも、Bと重なったらどうか。さらに別の注文が入ったらどうか。

それぞれの戦略に損切りを置くだけでは、口座全体でいくら失い得るかを説明できません。何個まで同時に持つか、注文量をどう決めるかも、EAのルールに含める必要があります。

保存されているv1.20.4の設定ファイルでは、AとBを両方有効にし、合計の同時保有上限を2にしています。日ごとの損失や連敗などに応じて、新しい注文を止める設定もあります。

ただし、これは保存された設定の内容です。全ての検証がこの設定で行われたと確認できたわけではありません。

複数の戦略を動かすなら、どの戦略が勝ったかに加えて、どの注文とどの注文が重なっていたかを見る必要があります。

成績を足せば、組み合わせた結果になると思ってはいけない

A単独の利益と、B単独の利益。その二つを足した数字を見たくなります。

でも、実際に同じ口座で動かすと、単独のときと同じ注文が全部出るとは限りません。

先にAがポジションを持ったことで、Bの注文が保有上限にかかるかもしれません。損失による新規注文の停止も、二つを合わせた結果で発生することがあります。

そのため、組み合わせたEAとして動かし、実際にどの注文が出たかを確認する必要があります。

この系列のコードでは、取引履歴に戦略名を付けて出力するようになっています。さらに、注文の実行や見送りを追うログも用意されています。

利益が減ったとき、Bの売買が悪かったのか。それとも、Bの注文がそもそも出ていなかったのか。そこが分からなければ、直す場所も決まりません。

僕が自分の感情を挟まずに取引したいと思って作ったEAでも、今度はプログラムが何を判断したのかを確認する仕事が必要になりました。

では、組み合わせた方が良かったのか

今回確認できた保存資料の範囲では、初期MultiStrategyを本番採用できるとは判断していません。

コードや設定、取引・実行ログは残っています。ただ、開発中には版ごとに保有上限や資金管理などが変わっています。

A単独、B単独、A+Bについて、同じ期間・同じ売買コスト・同じ資金条件で比較した実行結果を、記事用に一組として確定できていません。そのため、「組み合わせて利益が何倍になった」「資金の減少が何%改善した」という数字は、ここでは出せません。

これは、組み合わせが失敗したと確定したという意味でもありません。

現時点での評価は、実装はできているが、組み合わせの効果を判定するための比較が未確定。本番採用は保留です。

取引回数が増えたとしても、その分だけ損失が増えていたら目的には合いません。利益が増えた場合も、同時に抱えた注文量が増えただけなのかを確認したいところです。

戦略を増やすと、口座全体のルールも必要になった

最初は、買う場所と売る場所を決めれば、EAは作れると思っていました。

一つの戦略を動かすだけでも難しかったのに、二つにすると、注文が重なったときの扱いまで決める必要があります。どちらの条件も成立しているのに片方だけ見送ったなら、それも結果に影響します。

自分で裁量トレードをしていた頃は、その場で判断して済ませていた部分です。でも、その判断を機械に任せるなら、先に決めておかなければいけません。

今回のMultiStrategyで確認できたのは、二つの異なる条件を、一つのEAの中で動かす実装でした。そこから先の「組み合わせる価値があったか」は、注文の重なりと口座全体の損益まで含めて判断する必要があります。

次の#008では、相場環境に応じて戦略を切り替えるMultiRegimeを扱います。複数の戦略を動かす研究に続いて、どんな相場で、どの戦略を使うかという開発を振り返ります。


本記事の実装説明は、保存されたXAU_MultiStrategy v1.20.4のソースコードとPHASE2B設定ファイルに基づきます。初期系列には複数の版があり、保存設定が全ての実行で使われたとは確認できていません。今回はバックテストを再実行しておらず、統合による収益改善は未判定です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

会社員SEとして働きながら、お金・仕事・健康・暮らしをテーマに、自分で試したことを記録しています。
筋トレ、健康管理、AI、FX・資産形成など、興味を持ったことは実際に試し、できる限り数字で検証。成功したことだけでなく、失敗したことやうまくいかなかった結果も公開します。
「人生を、試して、測って、良くしていく。」がZerokaLifeのテーマです。

目次