S/Lを付与するEA

国内ブローカーで稼働し始めました某EAが、S/Lを付与する注文の失敗を繰り返しています。

50609-st1

 

 

 

 

 

このEAは、他のブローカーでも稼働させていて、今までこのような問題はなかったですが、何故?ブローカーの違いですよね。

しかしながら、S/Lの設定にミスるのは致命傷になりかねないので、なんとか手を打たねば。

すでに、先週の金曜日にやられているのですが、これ以上やられる訳にはいきません。

 

 

 

サポート期間が終了している状況でしたので、取り急ぎ自作でS/Lを付与するEAを開発しました。(サポートには追い追いどうするか、、、)

リアル口座で稼働確認済みで、本日から稼働を開始しています。MQLには、やはりなれないですね。

 

 

EAの概要::

  • 任意のS/L未設定のポジションを検知した場合、S/Lを設定する
  • 監視対象のポジションは、マジックナンバーで選定する。マジックナンバーは、EA稼働時にパラメータとして設定する
  • 設定するS/L値も、EA稼働時のパラメータとする
  • 処理する通貨ペアは、当EAを設定したチャートの通貨ペアのみを処理対象とする
  • 監視インターバルは30秒とした

 

 

※なんの保証もありませんが、ご参考まで。。。

50609-st3

 

S/L付与は、マジックナンバーで狙い撃ちます。

 

一度、S/Lが設定されていれば、その後にS/L値を再設定することが無いように構築しています。

監視対象のポジションのトレードが発生する度に、S/Lをきちんと付与できるように、稼働し続けます。

 

 

 

 

 

 

50609-st4

 

稼働の様子。

EAのパラメータで指定したとおり、S/L値の設定ができます。(BUY、SELLの方向チェックもあります)

 

が、いろいろなケースを網羅した確認までは取りきれていませんので、続くソースコードは、完全なるご参考程度になります。

 

 

 

 

 

 

 

このEAのソースコード。。。

 

//+------------------------------------------------------------------+
//|                                                   SafetyStop.mq4 |
//|                                     Copyright 2015, Life with FX |
//|                                             http://lifewithfx.jp |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Life with FX"
#property link      "http://lifewithfx.jp"
#property version   "1.00"
#property strict


extern int MAGIC = 286411;
extern double STOPLOSS = 120;


//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
  // 30秒毎にポジション状態をチェックする
  EventSetTimer(30);

  return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
  EventKillTimer();
}


//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
}


//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
{
  
  double newOrderStopLoss;
  double digitsFactor;

  
  for (int i = 0; i < OrdersTotal(); i++) {
        
    if (OrderSelect(i, SELECT_BY_POS) == false) {
      break;
    }

    // EAが稼働するチャートの通貨ペアと、マジックナンバーで処理対象を決定する
    if (OrderSymbol() != Symbol() || OrderMagicNumber() != MAGIC) {
      continue;
    }

    // ポジションオープンから経過時間が10秒以内のポジションは、処理対象外
    if ((TimeCurrent() - OrderOpenTime()) <= 10) {
      continue;
    }

    // ポジションにストップロスが設定されている場合は、処理対象外
    if (OrderStopLoss() > 0.0001) {
      continue;
    }

    // お使いのブローカーは、何桁ブローカー?
    if (Digits == 3 || Digits == 5) {
      digitsFactor = 10;
    } else {
      digitsFactor = 1;
    }

            
    // ストップロス値を設定する。スプレッドの考慮無し。待機注文は処理対象外
    if (OrderType() == OP_BUY) {
      newOrderStopLoss = OrderOpenPrice() - (STOPLOSS * Point * digitsFactor);
    } else if (OrderType() == OP_SELL) {
      newOrderStopLoss = OrderOpenPrice() + (STOPLOSS * Point * digitsFactor);
    } else {
      continue;
    }

    // 注文変更。ストップロスを新たに設定し、テイクプロフィットは以前のものを引き継ぐ
    OrderModify(OrderTicket(), 0, newOrderStopLoss, OrderTakeProfit(), 0);
    
  }
}

 

 

 

 

 

 

 

“S/Lを付与するEA” への4件の返信

  1. lfxさん、こんにちは。

    私もその某EAを、おそらくlfxさんと同じ国内ブローカーで稼働させておりますが、
    今のところこういった問題は発生しておりません。
    淡々とストップロスに刺さり続けております。(TдT) ウゥ…
    LinuxのVPSに関連して発生している問題じゃないですかね?

    いちおう、ご参考までに……。

    1. kumanamiさん

      こんにちは。情報をありがとうございます。

      確かに、LinuxVPSに起因する問題かも知れないです。
      時々、S/L設定注文が成功することもあって、余計に???です。

      ただ、そのブローカーと、他のブローカーで注文方式が相違する点が気になっています。
      一方は即時実行で、もう一方はマーケット実行で差異がある為、問題が起きやすくなっているのかも知れないです。

      何れにせよ、ここ数日は私のところもS/Lに刺さり続けていますよ〜

      ドル売りの流れが続いていますね。
      今朝の朝スキャは相当危なかったです、いやまだ危ないです。。。

  2. こんばんわ。
    カウントダウン形式の注文で、成り行き注文後にSLが上手く入らないのは、おそらくVPSに起因する通信上の問題ではないでしょうか?
    PepperStoneで某ベンダーのEAも失敗することが多かったですが、VPS、ブローカーを変更すると失敗しにくくなりました。
    今でもごくまれに失敗しますが、オートクロース機能があるので、ほぼ放置しています。気になる時は手動でSTだけセットしています。

    1. Shin@さん

      こんばんみー〜、、、。。。

      いつもフォローしていただきまして、ありがとうございます。
      やはり、VPSに起因しているのかも知れないですね。

      VPS?EA?の処理が速すぎるのでしょうか。
      ポジションオープンしてから、1/1000秒後にすぐさまS/Lを設定しに行っているようでして。

      今回の場合、カウントダウン形式ではなく、成り行き形式のパターンでして、この形式の場合にはブローカー側としては、”まあちょっと待て”と構えているのかもと、勝手に思っています。

      先週末のトレードで、通常のS/Lの2倍ぐらいのダメージをくらってしまったので、対処すべき問題として手を打った次第です。

コメントを残す