本日は現在フォワードテスト中のMT4EAを改良いたしました。
現EAのネガティブな動き
現状作成したEAの動きを見ていると、大きなプラス収支を作るとその後その反動からか大きなマイナスを計上しがちです。
逆に大きなマイナスがあると、その後は大きなプラス収支を作りやすい波のようなものがあります。
また、マイナスが続くとポジションを持つ位置もあまり良い位置にならないのか、マイナスが連続するケースも結構あります。
もう少し何とかならないかと思い、思いついたのがこれです。
1日単位の収支で一定量のプラスが出たらその後は止める
1日単位程度の終始結果で、一定量(口座残高の1%程度)プラスが出たらその日はトレードを辞めるなどというものを最初は検討してみました。
しかし、これだと、もしかしたらその後訪れる大きな波をとらえられず大きなプラスを作れないかもしれません。
また、1日単位だと、例えば昨日結果的に大きなマイナスで、翌日その半分程度のプラスでもトレードを辞めてしまうかもしれません。
そもそも1日で絞るのは結構大変だった
こちらの事情の方が強かったのですが24時間来の収支のチェックというのは実はそんなに簡単ではありませんでした。
また、その制限を解除するのは0時をもってと固定になるのでなんかそれも微妙だなと感じました。
なので、いろいろ考えた結果過去●回分のトレードをチェックして判断するというプログラムがベストではないかという結論に至りました。
修正ポイント【1】全体決済
全体の収支状況を見て一括決済するというプログラムは前々から準備していました。
すべての通貨ペアの収支状況をチェックして、トレール決済というプログラムです。
例えば総合収支が口座残高の1%を超えたらトレールで10%減ですべての通貨ペアポジションを決済するというプログラムです。
これによって大きく負ける通貨ペアが1本あっても、プラス収支に向かうペアがあった場合に相殺してくれるという期待をしていました。
が、あまり臨んだような動きにならず、大きく負けるときは大きく負け、全体でプラスになるときは一定以上のプラスにならずに決済するので、マイナスの方が大きくなります。
なので、全体決済はやめていました。
今回は、全部で100回のトレードの収支状況を見て、トータルマイナスの場合に、現保有ポジション全部でそのトータルマイナスをすべて消してさらに、0.1%以上のプラスが出た時点で全決済します。
これにより、まず100回単位でのトレードでマイナス収支は出なくなります。(累計マイナス収支が大きいと取り返してさらにプラスになるほどのプラス収支を作る前に、各通貨ペアのEAで単体決済をしていくので全体決済が発動しない)
修正ポイント【2】ポジション量の調整
上記と同時に各通貨ペアに設定するEAにも改良を加えました。
基本的に、全体の今までの収益状況から、累計損失がある場合に一定の計算をしてロット量を増やす計算を組み入れています。いわゆるマーチンゲールといわれる増額プログラムです。
しかし、複数ペアで運用している場合、そう簡単に増額されません。
しかし、20%を超えてくると、増額プログラムを発動して速いうちにマイナスを取り返さないとどんどんロットが減っていき取り返す見込みが立たなくなります。
なので、増額プログラムは必須なのですが、悪い波の時も増額してしまうデメリットがあります。
それを踏まえて悪い波になりやすい、良い波が来た後の引き波のような部分だけでもロット数を通常通りに戻すプログラムを作りました。
過去100回のトレードで1%以上のプラスを計上している場合は増額しないという単純なプログラムです。
これにより、トレードを止めることはなく、悪くなりそうなときは増額なく1倍のロット量で、収支が1%未満の場合で増額可能な場合は増額したロット量となるようになりました。
これで、一部のマイナストレードの際のロット量が軽減される計算になりますのでトータル収支でプラスに向かいやすくなるはずだと思います。
フォワードテストをしないとわからない
全体決済を入れると、全体決済を含んだマルチ通貨のトレードはバックテストで結果が見えませんんので、実際にトレードをしてみるしかありません。
幸いにも現状ではデモ口座という強い見方がありますので、デモ口座で収支状況をチェックしながら試してみます。
これでうまくいけばいいですね。