*

【MQL】ティック更新よりも早い頻度で演算させる方法 と ちょっとした注意事項

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

MT4のEAは基本的にティックレートを受信する度に一回演算する仕組みになっています。

USDJPYやEURUSDの場合は、いつでもそこそこティックがあるので、あまり気になりませんが、マイナー通貨の場合は1分に一回程度しかティックが来ないものもあります。(レンジの時間帯とか)

1分足以内のスキャルピングやアービトラージをしようとすると、ここら辺が結構ネックになるので、ティック更新を待たずに次の計算をさせる必要があります。

ただし、これは結構荒業で、メモリに負荷がかかることは想像に難くありません。

OnTick内でループさせる

実にかんたんな話で、OnTick,(OnStart,Start,OnCalculate)内全体をループ処理させるだけです。

ポイントはループ処理する場合、レートや口座情報が更新されないので、
RefreshRate()を頭に持ってきて、半強制的にレート更新をする必要があることです。

あとはEAを停止させようとしたときにフリーズする可能性が高いので、OnChartEvent内に停止ボタンを設置し、そこからEAを停止処理する記述を書くことを強くおすすめします。

for文でループさせれば上の心配はないと思います。以前はwhile文で紹介していましたが、for文の方が安全だと思います。

また、上のコードの場合100回演算が終わるとループを一回抜けてしまいますが、それくらいがちょうどいいと思います。

というのも、while文のように本当に延々とループさせてしまうと、メモリのキャッシュがクリアされないらしく、パソコンがフリーズする原因になるようです。

なので、for文で定期的にOnTickを一度終了させる必要があります。

もちろん、ループを抜け出した直後~次のティック到達の間に何か重要なトレードタイミングが発生する可能性がありますが、そのデメリットを飲んでもfor文にした方が良いと思います。

もし、上記のリスクを減らしたい場合は100回ではなく、1000回~432,000回にすればいいと思います。(60*60*24*5=432,000)

もう一つの欠点として、ティック更新が激しい場合、かつ、演算が軽量な場合、
1秒間隔で演算させるよりも通常のティック更新の方が速い可能性は十分に考えられます。

これらを考慮すると、使用場面はかなり限定的ですね。おそらくメタクオーツ側もあまりやって欲しくはないやり方だと思います。

Message

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

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

関連記事

Q&A 合成通貨アービトラージの実装とプログラミングについて

Q. 以前、横瀬様のブログにて合成通貨のアービトラージを拝見致しまして、自分なりにプログラムを書いて

記事を読む

MT4から取引所のビットコインレートを取得して比較する

今までMQLしか触ったことがない人にとって、jSONだのHASHだのが出てくるAPIの処理は荷が重か

記事を読む

MT4&ディープラーニングに関連する論文(article)のリンク

ディープニューラルネットワークが昨今話題になっていますが、 MT4でディープラーニングをする方法はな

記事を読む

no image

最近の海外のEA開発の流行り:ロングとショートのパラメータ群を分ける

表題の通りですが、最近海外製のEAではロングとショートのパラメータを分けるのが流行っているようです。

記事を読む

【EA開発講座】第26回 市販のインジケーターをEA化する 実践編

何年か前に「iCustomを使ってインジケーターをEA化する」という記事を書いたのですが、意外とアク

記事を読む

 

  • (↑広告です。このサイトの管理者の運営ではありません)



  • 横瀬兼元(ペンネーム)です。

    ご質問、ご相談などは
    infoあっとfxantenna.com
    まで
    偽者(オリジナルある模倣者)がいるらしいのでご注意ください。
【MT4EA】半年で5万回以上トレードしても右肩上がりにできる証明(EA配布)

(ただし、スプレッドが狭ければ...) EURUSD

no image
(MT4EA)MACDと特殊ベッティング【EA検証班求ム】 

. . 超シンプルなMACDのEAです

MT4の1分足テストで起こる致命的な現象

1分足っていうのは他の時間枠といろいろ違う点があります。 まず、本題か

no image
【EA検証班募集】コツコツドカンとドローダウン(MT4) ~原理は単純を、構造は複雑を、人は最も人らしく~

EURGBP 2018.11.1~2019.4.30 D1 Sp

MT5のテスターではスプレッドは変更できないという事実

を知らない人が多くて、「このバックテストのスプレッドはいくつですか」と

→もっと見る

PAGE TOP ↑