*

MT4でマルチタスク処理

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

MT4/MT5は基本的にC言語ベースなのでマルチスレッドはできません。

しかし、複数のチャート上でEAを別々に稼働させられるので、
とらえ方によってはマルチタスクが可能です。

背景としては、
一瞬で両建てをしたい場合などです。

普通に記述すると、

買いオーダーを送信

ブローカー側で買いオーダーの処理

約定

ブローカーからレスポンスが返ってくる

売りオーダーを送信

という形になり、オーダーの処理に数秒かかることもあるので、
売りと買いのタイミングが数秒ずれてしまうことがあります。

これは特に暴騰暴落時に発生しがちで、
一番両建てをしたいタイミングでそれぞれの約定レートとタイミングが大きくずれてしまいます。

他にも合成通貨アービトラージをする場合にも同じ理屈でマルチタスクが必要になります。

そこでどうするかというと、
普段の演算とオーダーを分けて処理するようにします。

構成としては、
EA1:テクニカルやチャート更新ごとに演算を行う
EA2:EA1から指示を受けて実際にオーダーを出す(買い注文)
EA3:EA1から指示を受けて実際にオーダーを出す(売り注文)
と3つ作ります。

そして、それぞれを別々のチャートにセットすれば準備完了です。

さて、
問題はどうやってEA間で情報をやりとりするかということですが、
グローバル変数を使います。

ファイル関数でもいいですが、同一MT4上の場合グローバル変数の方が高速です。

グローバル変数を他で使うケースがないので、プログラマの方でも使ったことがない場合があるかもしれません。

基本的には上記で取得したりセットするだけです。

注意点は数字しか保存できないという点です。
文字列は代入できないので、USDJPY_buyのような情報は渡せません。

そのため、あらかじめ通貨ペアを決めておくか暗号化処理をするしかありません。
ここで言う暗号化処理とは文字列を数字に変換する機構のことです。

たとえば、
a=00
b=01
c=02

y=24
z=25
として
usdjpy=201803091524
と暗号化してもOKです。

あとはEA1で買いのシグナルがでたらグローバル変数に買いの情報を流し、
EA2で買いオーダーを出します。

EA2で買いオーダーを出したらグローバル変数の中身を書き換えます。
(空でも0でもなんでもOKです)

あとは以下繰り返す仕様にすれば完成です。

具体的なコードは合成通貨アービトラージを参照してください。

Message

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

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

関連記事

第19回:for文で回す

MQLのfor文 プログラミングでは同じような処理を何回もしなければならないことがあります。

記事を読む

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

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

記事を読む

第9回:ロウソク足による条件を作る~3回連続で陽線になったら買うEA~

ロウソク足の記述方法 MQLにはロウソク足の4本値が標準搭載されています。 それぞれ、

記事を読む

第2回:EAの新規作成

新規作成 メタエディタから「New」(新規作成)をクリックしてください。 するとこれから何を

記事を読む

EAに自動的に最適化させる

どんなに優秀なEAでも、 ライブで稼働させる場合、定期的なパラメータの最適化が必要です。

記事を読む

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

    各トピックに対するコメントは各記事のコメント欄にお願いします。それ以外のご質問、ご相談などは
    infoあっとfxantenna.com
    まで
    私の偽物がいるらしいので偽物にご注意ください。
no image
【MQL4】外部ソフトなしで稼働するコピートレードツールを作る。その⑨

このシリーズは前回の投稿から1年以上あいている訳ですが、結構問い合わせ

no image
【一覧】外部ソフトなしで稼働するコピートレードツールを作る。

【MQL4】外部ソフトなしで稼働するコピートレードツールを作る。その1

no image
スマホから稼働中のEAを操作、チェックするアイディア【RDP以外で】

自動売買システムはVPSなどに設置することで24時間稼働させられますが

no image
【初心者向け】VPSでWebサーバー構築 (さくらVPSxUbuntu16.04)

今回はサーバーの構築について扱ってみようと思います。VPSを使った一般

no image
2018年中盤~の仮想通貨(ビットコイン)アービトラージの相場について

ちょくちょく「最近、ビットコインのアービトラージどうですか」という質問

→もっと見る

PAGE TOP ↑