【MT4】MQL4でEAを作るベースとなるソースコードの公開

MT4のEA作りの書籍はたくさん出ていたり、ネットで検索するとサンプルのソースコードはたくさん見つかるのですが、バックテストではなく、実トレードで実行するとどうも動かない事が多い。

そこで、僕自身が、MT4のEA作りであれこれ実践して、実際に動いた売買部分だけのベースソースコードを公開したいと思います。

売買のMQL4のベースソース

僕が実際にベースで使ってるソースです。これに、あれこれ条件加えたりしてます。

解説

ロット、スリッページ、利益、損切りをパラメータで設定にするため、extern宣言。

MT4はポイント計算なのですが、利益や損切りは分かりやすくpipsで設定出来るようにしました。(実際はOrg_Long、Org_Short関数内でポイントをpips換算してます)

スリッページは低くしすぎるとエラーになる

スリッページは低くしすぎると、取引所側からエラーが返ってきます。これについては、こちらの記事にまとめました。

【MQL4】OrderCloseでエラーコード138が返ってくる原因と解決方法
いやー、MQL4は仕様どおりに作っても、取引所が絡んだエラーが多いです。 OrderCloseの関数でも同じでした。エラーコード138が必ず返ってくる。 色々調べて試して、ようやく解決しました。記事にまとめてみました。 OrderCloseのエラー内容 20日移動平均線にタッチしたら手仕舞いするというロジックを組んだんだけど、どうしてもオーダーがオープンになったままクローズしない。...

利益値幅、損切り値幅も低くしすぎるとエラーになる

利益や損切りについても同様です。以下の記事に書きましたが、XMだと4pips以上は設定しないとエラーになります(それでもエラーになる場合は+1〜+2くらいにすると動くと思います)。

MQL4でOrderSendエラーコード130 invalid stopsの解決策
バックテストでは正常に稼働するけど、リアル口座ではOrderSend時に、エラーコード130(Invalid Stops)が出てしまう。かなりあれこれ調べまくって、なんとかある程度は解決しました。記事に残しておこうと思います。普通に仕様通りにプログラム組むだけではだめで、対処は必須ですね。 エラーコード130の意味 主に以下です。 損切りや利益の設定価格が今現在価格にとても近い ...

売買はオリジナル関数を用意

売買時に簡潔に書きたかったので、売買時は直接OrderSendを書かずに、オリジナル関数内で処理しました。この中で、小数点の桁合わせや、エラー時のリトライなど、あれこれやってます。

ロング(買い)

使い方はめちゃ簡単にしました。引数に必要な情報を入れるだけ。

ショート(売り)

OrderSend後のエラー処理について

エラーが取引所から返ってきた際のリトライ処理は以下のブログの処理を参考にさせて頂きました。それを改造した感じ。

OrderModify | MT4でEA自作しちゃお〜[FX自動売買(システムトレード)-MQL4プログラミング]
当サイトはMetaQuotes Software社のMT4(メタトレーダー4)で、EA(自動売買)やカスタムインジケータを作成したいけど・・・ まず何をやったらいいのか分からずスタート地点で挫折してしまっている初心者向けのサイトです。またMQL4の日本語リファレンスもあります。

オーダーのクローズ

オーダーのクローズもオリジナル関数を用意しました。基本はOrg_LongやOrg_Short関数で利益や損切りタイミングまで待ちますが、クローズタイミングを自分でしっかり決める場合は以下を使ってます。

引数はマジックナンバー。

 

売買の基本ルーチンは以上です。

まとめ

あとは、OnTick()で、エントリータイミングをどう書くかですね。この中で、ボリンジャーバンドみたり、各種テクニカルの数値を見て、エントリータイミングを判断する感じです。

矢野テック
矢野テック

まだまだ研究中

 

コメント