さて、検証作業が先行してブログ更新が出来ていませんでした( ・Д・)スミマセン
↓前回の記事ではバックテスト時の始値と全ティックの動作の違いに問題がありました。
BTCでトラリピEAを動かしてみたい【潤奈FX日記】
とりあえずこの問題を解決してみようと考えました。
違いのおさらいですが、
始値でのエントリー時にTP値とSL値を同時に設定をして、次の始値が出現した時にそこに掛かっていれば決済されています。
全ティックですと、乱高下が大きい場合エントリーした足でTP値とSL値まで動いた時点で決済されているようです。
このことから始値バックテストでは、その足でSL値に掛かっているけどスルーされて次の足の良い条件下で決済されている事が多くみられました。
という事は、エントリー時にはTP値とSL値を設定せずに、次の足で設定したら同じような結果になるかな?と思い試してみました。
まず、TP値とSL値を0にします。(画像は買いエントリーを抜粋です)
次に、次の足で注文変更でTP値とSL値を設定するOrderChange関数を作成。
MQL5はまだよく分からないから手探りですw
ポイントは黄色の部分で、取得したポジションのエントリー時間より現在のバーの時間が過去であるかをここで確認しています。つまりエントリー後の足で注文変更となる。
そしてその後に、エントリー価格からTP値とSL値を計算して設定するようにしました。
このOrderChange関数はOnTick内の適当な場所で起動するように設定しました。
そして全ティックでバックテストへGO!
お?上手く行けているような気がするけど、緑の有効証拠金グラフが気になりますね( ・Д・)
これは残高より下を推移しているという事は、買いポジションを握りしめて下落に耐えているという事ですね。
運よく価格が戻ってきてるから大丈夫のように見えますが、実際にこれを動かすのは危険ですね( ・Д・)
これは何故なのでしょうか?
ここで問題です!
OrderChange関数に原因があるので考えてみて下さいw
次回はこの問題を修正したいと思います。
では( ・Д・)
↓次回記事
コメント