*

【MQL4】シンプルに稼働するコピートレードツールを作る。その⑨

公開日: : FX自動売買開発

このシリーズは前回の投稿から1年以上あいている訳ですが、結構問い合わせがあるので、続きを書こうと思います。(サーバーを経由するコピートレードツールの下位互換だからやる気がなかったわけじゃないんだからね!)

さて、
前回までに書いたコードでは、ごくまれに受信側が勝手にオーダーを決済してしまうというバグがありました。

これはファイルにアクセスする際に書き込みと読み込みがまったく同じタイミングで行われることで、読み込み結果が空白となり、それをEAが”ポジションなし”と判断していただめです。

OSの基幹部分の仕様については専門ではないので、この処理は結構迷いました。

解決策1:書き込み、読み込みするファイルを複数に分けて、読み込み結果が同じ時だけ処理する

コーディングがめんどい、泥沼になるような気がする…

解決策2:書き込み、読み込みのタイミングをずらすために、ローカルタイムの秒数の剰余で実行をずらすとか

コピー処理が早いことが唯一のメリットなのに、それが失われると作る意味がない…

しかし、
とりあえず「ポジションがない状態」と「読み込みに失敗した状態」を区別して、
ファイルにアクセスできない場合にはSleepを入れてちょっと待つ仕様にしたところ、問題は解決しました。(観測時点では…)

(これは以前while文で書いていた、ファイルのトレードデータを読み込む関数です)

また、やっぱりコピーの反映が遅いのが気になります。EAをセットしている通貨ペアチャートだけが低速で、他のチャートが頻繁に動いているとき、コピーの反映が遅いというのはやっぱり良くないと思います。

他のパターンとしても、コピーする通貨ペアが頻繁に動いていて、セットしている通貨ペアが鈍い可能性も考えられます。

そこで、OnTickの中に再帰的なループを入れました。
While文で延々とループするとメモリを圧迫したり、フリーズしたりする可能性があるのですが、妥協案として、
100回ループしてOnTickで再読み込みという手を取りました。

下記はその結果です。

前よりも反映速度が格段に上がっています。(ごく稀に遅くなる可能性は内包していますけどね。)

下記はこのEAのダウンロードリンクです。
ダウンロード

二つのMT4にそれぞれこのEAをセットします。パラメータで受信か配信か切り替えます。

■パラメータ
IsSender: 配信元のMT4にセットする場合trueにします。
IsReceiver: 受信(コピー先)のMT4にセットする場合trueにします。
SendersAccountNumber: 受信(コピー先)のMT4にセットする場合、親のアカウント番号を入力します。
LotForReceiver: 受信(コピー先)のMT4にセットする場合、コピーするトレードのロットを入力します。
Slippage: 受信(コピー先)のMT4にセットする場合のトレードのスリッページです。

予約注文には対応していません。

※このEAを使って発生した損失などは一切責任を負いません。

Comment

  1. まさたろ より:

    質問です。
    色々なロットで注文したいのですが
    受信側でのロットサイズを
    親のx倍でエントリー。ってことは可能でしょうか?
    あると凄く助かります。

Message

メールアドレスが公開されることはありません。

このコメントはWEBに公開されるので、問い合わせ等はメールでお願いします。

関連記事

第13回:コードに汎用性を持たせる~”USDJPY”よりSymbol()~

MT4で設定を変更ができるような記述をする これまでに様々なコードを扱いましたが、 これまでの書

記事を読む

第22回:チャート上にデータを表示させる

MT4のチャート上にデータを表示させる Comment()という関数を使うとビジュアルモードのバッ

記事を読む

週明け窓埋めロジックってどうなの?

FXの中でも有名なトレード手法として、 窓埋めロジックというものがあります。 株の場合は、窓

記事を読む

第23回:短時間に大量のポジションを取るリスクを排除する

ポジションの時間を制御する EAプログラミングでは思わぬバグがつきものです。 よくあることとして

記事を読む

第7回:条件の書き方 == && ||

今回はif文の中の条件を記述します。 == 等しいことを条件にする A == B でAとBが

記事を読む

 
  • ブログ管理人の横瀬兼元(ペンネーム)です。

    各トピックに対するコメントは各記事のコメント欄にお願いします。それ以外のご質問、ご相談などは
    infoあっとfxantenna.com
    まで
    私の偽者がいるらしいのでご注意ください。
質問回答コラム

Q. 管理人さん自身はEAで運用しているのですか A.  して

【MT5】MACD, ストキャスティクス, モメンタムEA(配布)

GBPUSD 2018/1/1~2018/12/31 H2

【MT5】 3通貨相関アービトラージEA(無料プレゼント)

EUR, GBP, USD の3通貨の相関を利用したさや取りトレード

no image
仮想通貨対応マーチンゲールEA(無料配布)

USDJPY 2018/1/1~2018/12/31 Spread:

最適化なしで勝率98.31%()のトレードシステム【あげます】

GBPUSD D1 Spread:2 2018/1/1~2018/1

→もっと見る

PAGE TOP ↑