*

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に公開されるので、問い合わせ等はメールでお願いします。

関連記事

【MT4MT5】チャート上にWEBサイトの情報を載せる その1

オンラインの情報をトレードの判断に使う、というのは至極まっとうな考え方だと思います。 日経が為

記事を読む

第17回:OrderSelectでポジションの情報を取得する

ポジションの情報を取得する 今回はすでに持っているポジション、オーダーした複数のポジションの情報を

記事を読む

第10回:テクニカル指標を使ったEA~RSIのEAを作る~

今回はテクニカル指標によるEAの一つとして、 RSIのEA を作ります。 ※実際に稼働させ

記事を読む

no image

ストップレベル=0はストップレベルがないことではない

MT4/MT5では予約注文を行う際にストップレベルというものがあります。ストップレベルというのは、現

記事を読む

合成通貨アービトラージ

FXは通貨ペアなので、 その組み合わせは無数にあります。 例えば、ドルから円に換える場合、

記事を読む

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

    各トピックに対するコメントは各記事のコメント欄にお願いします。それ以外のご質問、ご相談などは
    infoあっとfxantenna.com
    まで
    私の偽物がいるらしいので偽物にご注意ください。
no image
ストップレベル=0はストップレベルがないことではない

MT4/MT5では予約注文を行う際にストップレベルというものがあります

no image
私の偽者、偽ブログにご注意ください

読者の方からご連絡いただいたのですが、私のブログの内容をそのままコピー

no image
サービス展開向けの仮想通貨自動売買システムを作るには

前置き ビットコイン、仮想通貨の自動売買を作る目的として、通常は個人

一回の演算で複数のリクエストを送る 仮想通貨の自動売買⑪

公開:2017/9/4 基本的にjson形式でAPIをたたく場合

コインチェックAPIで信用取引 仮想通貨の自動売買⑩

公開:2017/9/4 これまではAPIで現物取引を扱ってきまし

→もっと見る

PAGE TOP ↑