開発:MQL開発3/ポジション取引 | シストレの現実

シストレの現実

インフラ構築のプロが、シストレをゼロから始める記録です。
リーン・スタートアップの考えを取り込み、Expert Adviser を作っていきます。

教えるような大したものではなく、ユースケースの一つになれば幸いです。

  以前のエントリでこんなアホなことを書いておりました。

他のサイトでは、MQL4では start 関数、MQL5の場合は OnTick 関数がメインの処理部分となると記載があったりします。
知らなかったのですが、Build 509 以降でMT4でも関数名が変わったそうです。すみません。
MQLプログラミングはまだまだこれからなので、こういうこともありますよね。。。


さて、今日はポジションに関する処理、エントリー/損切り/利益確定のタイミングおよび取引自体を判断する処理を作りました。

それぞれの処理が関係するロジックにしているため、一気に全ての処理を作りきったので、少し時間がかかってしまいました。。。

作った関数は下記の4つです。

CheckForOpen()
ポジションのエントリー自体を行う
isPossibleOrder()
ポジションのエントリータイミングをチェックする
CheckExitPrice()
利益確定の価格を算出する
CheckStopLossPrice()
ロスカットの価格を算出する
OnTicks()
メイン処理を行います。

また、下記も作る予定でしたが、作っている最中に不要と分かりました。

CheckForClose
発注時に OCO を使うため、決済注文自体をすることがありません。
そのため、関数自体が不要と分かりましたので、削除しました。
LotsOptimized
1000通貨単位で発注するように固定するため、不要でした。

それぞれを細かく説明したいところですが、
非常に長くなりそうなので、詳しくはソースコードを見て頂くということで。

GitHub: sysfxtry1/ea01/ea01.mq4

ただし、まだバックテストなどで詳しい動作確認はこれからですし、
楽天FXの「余剰証拠金の算出方法」についても確認しないといけません。
そうしないと、許容できるポジション数が変わってくるので。

まだまだ先は長そうです。