無料のEAを公開してます。詳しくはこちら

EAでのリクオート(約定拒否)への対応

  • URLをコピーしました!

FXの取引所で約定率〇〇%!などよく見かけませんか?

それって本当なのでしょうか?

今回は、そんな約定率に関する考察とEAでの約定拒否への対応をまとめました。

目次

そもそも約定とは

FXで約定を簡単にいってしまうと、成行注文をしたときに売買が成立する。成行だけではなくあらゆる注文(成行・指値・逆指値)を含みます。

既に保有中のポジションの利確したときに成立すること。(ストップロス・利確)

約定〇〇%は本当か?

結構、取引所のうたい文句として約定率〇〇%!などが見受けられます。

結論から言うと、FXであまり利益を出していない方に対しては約定率は本当です。

約定率〇〇%はあえていうと100%でないということです。
すなわち残り数%はリクオート(約定拒否)発生しますよと明言しています。

じゃあ、残り数%のリクオート(約定拒否)はどういうときに発生するのか?

リクオート(約定拒否)の発生理由

知られているのは、市場の急な上下(ボラリティー)が発生したときに、取引所側でのデータ処理がある一定を超えてしまうため、それ以上は受けれませんということで、リクオート(約定拒否)が発生します。

しかし、このリクオート(約定拒否)は結論でも述べた通り、利益をあまり出していない人はあまり発生しません。

利益を出している人は結構な頻度で発生します。

実際に弊EAの「Lucky777」を運用していると1日数回は発生しています。

あわせて読みたい
[Lucky777]GemForexにおすすめのEA無料提供 ロボトレ!での開発ノウハウから生み出したオリジナルEAをこの度、無料での提供を行います。 当EAは利益を保証するものではございません。損が発生しても保証等はしかね...

なぜ利益を出している人はリクオート(約定拒否)が発生するのか

FXをやっている方は下記について聞いたことがあるかもしれません

  • Aブック
  • Bブック

ここで簡単にAブック、Bブックについて記載します。

後日、Aブック、Bブックについては詳細を記載します。

Aブックとは

ざっくり言うと、市場にユーザーからの注文を発注、手数料を取る取引所を言います。

注文があればあるほど、取引所は手数料を貰えるため、利益向上になります。

Bブックとは

ざっくり言うと、市場にユーザーからの注文を発注せず、あたかも発注したかのようにシステム上に見せます。

つまり、ノミ業者です。(悪い業者とは言ってない)

FXは8割の方が負けると言われています。

ユーザーが負けた分がすべて利益となるため、Bブックの収益率はAブックに比べてとても良くなります。

リクオート(約定拒否)はAブック・Bブックのどちら?

利益を出している人のリクオート(約定拒否)を受けるのは圧倒的にBブックが多いです。

Aブックの場合は、市場次第で本当に上下(ボラリティー)が激しいときにリクオート(約定拒否)が発生します。

しかし、Bブックの場合は、少しの上下(ボラリティー)でも簡単にリクオート(約定拒否)が発生します。

そのため、リクオート(約定拒否)を意識した取引を行わないといけません。

手動で取引を行っている場合は、リクオート(約定拒否)の発生はすぐわかるため、その場で対応が可能です。

EA(自動売買)の場合には、そのまま放置すると大変なことになります。

EAでのリクオート(約定拒否)対策

ここで本題のEAでの対応についてです。

EAの場合、OrderSend関数にて注文を発注しますが、リクオート(約定拒否)が発生すると返却値[-1]が返却されエラーコードには下記が設定されてます。

エラーコードID内容
138ERR_REQUOTE レート再提示

今まで私が経験したのはリクオート(約定拒否)が発生する時間は大体数秒~長くても3分以内でした。

そこで、Ordersendを行う場合、リクオート(約定拒否)されても注文が通るまで発注するというものです。

今回は決済時のコードを参考に記載しておきます。

//指定マジックナンバーの注文を全決済する
void CloseALLMagic(int MAGIC)
{
   for(int i = OrdersTotal() - 1; i >= 0; i--)
   {
      int OS = OrderSelect(i, SELECT_BY_POS);
      if(OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC)
      {
         int type = OrderType();
         bool OC = false;
         switch(type){
             case OP_BUY:
               for(int n = 5; n >= 0; n--){
                  if(IsTradeAllowed() == true){
                     RefreshRates();
                     if(OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0, CLR_NONE)){
                        break;
                     }
                  }
                  Sleep(100);
               }
               //OC = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0, CLR_NONE);
               break;
             case OP_SELL:
               for(int n = 5; n >= 0; n--){
                  if(IsTradeAllowed() == true){
                     RefreshRates();
                     if(OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0, CLR_NONE)){
                        break;
                     }
                  }
                  Sleep(100);
               }
               //OC = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0, CLR_NONE);
               break;
             case OP_BUYLIMIT:
             case OP_BUYSTOP:
             case OP_SELLLIMIT:
             case OP_SELLSTOP:
                 OC = OrderDelete(OrderTicket());
                 break;
         }
      }
   }
}

ここでのPOINTは

               for(int n = 5; n >= 0; n--){
                  if(IsTradeAllowed() == true){
                     RefreshRates();
                     if(OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0, CLR_NONE)){
                        break;
                     }
                  }
                  Sleep(100);
               }

5回までループを回し、決済が完了するまで100ミリ秒間隔で繰り返すことでリクオート(約定拒否)されても5回までチャレンジします。

繰り返し回数とSleep時間を調整することで、リクオート(約定拒否)されても絶対に注文するマンが出来上がります。

ただし、絶対に注文されるまで、繰り返しつづけるとスリッページのような仕様となり、不利な価格での注文可能性があります。

何回か注文を繰り返し、それでもリクオート(約定拒否)された場合は、私の場合は、LINEなどで通知を行い、手動で判断し取引を行っています。

LINE通知については、別途記事に致します。

おわりに

私が利用しているEAでは複数のポジションを一度に決済をするのです仕様ですが、そこでリクオート(約定拒否)がかなりの頻度で発生してしまい、EAの正常な動作をしなくなる場合が多々ありました。

単に運が良かったので、そこまで損は発生しませんでした。

貴方もBブックでのお取引や急なボラリティーでのリクオート(約定拒否)に悩まされている(本当は悩まされる前に!)のであれば、すぐに対策を講じた方が良いです。

「ロボトレ!」公式LINEにお気軽にお問い合わせください。

友だち追加

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次