トレード備忘録 & MT4/MT5インディケータ及びEAの開発

日々のトレード備忘録及びMT4/MT5に関する事項

MT4 関数 OrderProfit( )に注意

2020-08-03 11:38:18 | FX

 自動売買を行うにあたっては、利確や損切りを予め設定しておくことが重要である。成行注文(Instant Execution)の場合は、OrderSend( )の中でパラメータとして直接設定することが可能である。セカンドダウン(Market Execution)方式をとるブローカーでは、OrderSend()関数では利確や損切り値が設定できないので、注文送信後にOrderModify( )関数で、利確・損切り値を設定することになる。

 EAで数個のポジションを一斉に決済したい場合がある。複数ポジションンの総利益が10万円に達した場合には利益確定、あるいは損失の総額が5万になれば損切りのため、全ポジションを決済したいという場合に役立つのがOrderProfit( )という関数である。

 OrderProfit( )を利用するにあたって迷ってしまう点がある。例えば、EURUSDを取引する際、利確額を100ドル、損切額を50ドルとした場合、次のようなEAを作成したとする。

// 利確額・損切り額に達すれば全決済

      double profit = 0;

      for(int i=0; i<OrdersTotal(); i++)

      {

        profit += OrderProfit(i);

        if(profit >= 100 || profit <= -50) OrderClose(i);

      }

このEA、一見文法的に正しいように見えて実は正しいとは言えない。日本の多くのトレーダーは円口座で取引しているからである。OrderProfit()は証拠金の通貨で返されられることになっている。EURUSDの取引では円口座(証拠金が円」の場合、利確は100000、損切りは50000としなければならない。

上記のことは、バックテストにも適用される。