GoldenFX’s diary

FX資金1万円でベンツを買うまでの記録

最新EA「TFBreakerC3」(開発レポート4) 謎のエントリー

過去記事

TFブレイクアウト手法を応用した最新EA「TFBreaker」の派生系EA「TFBreakerC3」(開発レポート) - GoldenFX’s diary

TFブレイクアウト手法を応用した最新EA「TFBreaker」の派生系EA「TFBreakerC3」(開発レポート2) - GoldenFX’s diary

TFブレイクアウト手法を応用した最新EA「TFBreaker」の派生系EA「TFBreakerC3」(開発レポート3) - GoldenFX’s diary

今週利益39万超えました!最新EA「TF Breakerc3」改良版フォワードテスト - GoldenFX’s diary

こんにちは GoldenFXの管理人Hsak.です

フォワードテストエントリーの分析

最新EA「TFBreakerC3」のフォワードテストも 順調...だったんですが

突然変なエントリーを繰り出して 無意味に利益を取り崩していくという瞬間がある事に気付きました あとから取引履歴を詳しく見てみると

f:id:GoldenFX:20200321130226j:plain

備考の欄に 「2本早い」とか書いているのは チャートを見比べてみて実際にこのEAのエントリールールに照らし合わせてみると エントリー足が早すぎたと思って そのように記録していました 原因は例のZigZag再描画問題だと思っていました

エントリールールが曖昧になる謎の瞬間

思って、思って、と繰り返すのは原因が他にあったからです

私は一つのMT4で複数の通貨ペアで(20程)EAを走らせています 

挙動を見ていて気付いたんですが ある時は全くエントリーをしない時間があり

また別の時には いきなり複数エントリーをする 負ける時はこの”別の時”です

この時に何故か エントリールールが曖昧になるのです それが「早い」と思った理由です

全くエントリーしない ”ある時”とは 既にポジションをもっている時

そして ”別の時”は ポジションがイクジットした瞬間によくおこります(必ずではありません)

待・て・よ・・・・・・

これって 何らかの理由で本来エントリーすべきものが出来ていないって事じゃない??

MT4はオーダーポジションをごちゃ混ぜに数えてる!!!!

結果 推測したとおりでした

このEAは 同時に持つポジションを1つまでとプログラムしています

ですが 複数の通貨ペアのチャートで走らせている時には複数エントリーします

(各通貨ペア毎に1ポジションのみ)

この際にポジションを管理するものとして マジックナンバーがありますが

これはEAが自動で決済するときに どのポジションを決済するかを区別するためのものです

エントリーするときには "OrdersTotal()" という関数でポジションを数えます

どうも これが怪しいと思って調べてみると  OrdersTotal() はMT4全体のポジション数の合計を返しています

つまり ソースコードに 「OrdersTotal()<1」 と書いてあると(実際は変数に代入しますからこうは書きませんが)

一つのMT4では 全体で1つのポジションしか持ちません 

これが ”ある時”の正体です

では”別の時”はどうかというと ポジションが一瞬ゼロになった瞬間 ”OrdesTotal==0”(プログラムでは”=”状態を”==”と書きます)状態が生まれます(ポジション数ゼロ)

この時複数の通貨ペアでエントリータイミングが重なっていると 本来1つしかエントリー出来ないものが 複数出来てしまうのです

この原因はEAを適用しているチャート毎に ポジション数を管理していないMT4の性質によるものです

EAの複数起動の落とし穴 フォワードテストには大きな意味がある

これがわかった上でもう一度過去のエントリーポイントを詳しく見てみると

違う分析結果になります

f:id:GoldenFX:20200321133157j:plain

実はエントリーが遅れていた

上の図は 上記分析表のEURJPY(注文番号14389684)

最初の分析ではここでいう”別の時”に発生したエントリーです

備考に「5本遅い」と書いていますが チャートの形からそう判断した事が

たまたま合っているだけで 他の「早い」と思った所も実は 「遅い」結果

つまり本来エントリーする山を越えてしまっているエントリーだったのです

単一でしか行うことが出来ない バックテストではこの穴は 気が付かないでしょう

無いなら自分で作る

解決法としては 開いているチャート毎にポジションのトータルを数えられればいいのですが MQL4(MT4のプログラムコード)にはそのような関数はありません

複数運用を想定していないのか?

というわけで それを数える関数を作りました

正常に動くかどうかはバックテストではわかりませんので どうしても市場の開いている時間にフォワードテストをするしかないのですが

この事実に気付いたのが 土曜の早朝5時40分! 週末に入ったら来週までテスト出来ないっ!という事で 鬼のスピードでソース書いてコンパイルして なんとか走らせ

てみました 

結果OK ですが 市場クローズする直前に いらないポジションを5個も持たされる結果になりましたよ 全部持ち越し

ポジション数とエントリーをコントロールする

問題は解決したわけですが 今度はポジションを持ちすぎて 証拠金不足になるおそれが、、、

幸いMT4は 上記のとおり すべてのポジションをごちゃ混ぜに数えてくれる仕様

なので そっちはコントロール可能です パラメーター設定で自由にMaxポジション数を決められるようにしておきました

しかしこれでは ”別の時” 問題がまた発生します

つまり EAを動かし始めた瞬間と ポジションがMAX状態から1個減った瞬間に

遅れたエントリーが発生します その点については 別の手口を考えてみました

ので 既に実装しています

今週はせっかく増やした 資産をまたもやフォワードテストに費やしてしまったわけですが それは「取引履歴」報告にてお目にかけましょう

では また

あ、その後は順調ですよ

f:id:GoldenFX:20200321140658p:plain

 

現在修正版の「TFBreakerC3」をベータ版として無料配布しています

また過去に開発したEAも同時に配布しています よかったらどうぞ

 

goldenfx.hateblo.jp

 その後

「TFBreakerC3」公式マニュアル

今週利益39万超えました!最新EA「TF Breakerc3」改良版フォワードテスト - GoldenFX’s diary

最新EA「TFBreakerC3」(開発レポート4) 謎のエントリー - GoldenFX’s diary

「TFBreakerC3」公式マニュアル

速報「TF BreakerC3」をゴールドにかけたら通用するのか - GoldenFX’s diary

検証「TF BreakerC3」をバックテストしてみた驚きの結果に - GoldenFX’s diary