許容スリッページとは
注文をOpenする際に一定以上のスリッページ(Slippage)があったときに、注文をキャンセルする値を設定することを許容スリッページといいます。例えばスリッページが1pip以上のときには注文をキャンセルすることができます。Requoteという言い方をすることもあります。
用語説明:スリッページ(Slippage)
なぜ許容スリッページが重要なのか
スキャルピングのロジックによっては数pip程度の小さい勝ちを目指す場合もあります。その際にスリッページが1pip以上発生している状態だと勝てる可能性が下がるため、注文をキャンセルすることで、本来負ける可能性が高い取引をなかったことにできます。
許容スリッページが使えるかどうかはFX会社によって異なります。
許容スリッページが利用できるFX会社はこちら
疑似的な許容スリッページの考え方
許容スリッページ利用できないFX会社で、疑似的に許容スリッページを実装します。方法はシンプルで
・今のレートに対して、同じレートで指値注文する
・指値注文が成立しなければ、1秒以内にすぐに指値注文をキャンセルする
分かりやすく、図にしてみます。
用語説明:指値と逆指値
逆指値でも同じことができそうですが、実は指値は基本的に予約した価格で約定するのに対し、逆指値は予約した注文から価格が滑って約定するという特性があるので、指値でないとダメなのです。
またこの疑似許容スリッページを利用できるFX会社は下記の2つの条件を満たす必要があります。
- 指値が成立したときに、予約した価格から滑りがない
- 今と同じ価格で指値を注文することができる
指値は今の価格よりも数pip離れていないと注文できない会社もあります
我々が2019年6月に調べたところでは下記の結果でした。
実装ソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
int BuyTicketNo=0; long starttime=0; bool del_judge; int OnInit(){ return(INIT_SUCCEEDED); } void OnDeinit(const int reason){ ObjectsDeleteAll(); } void OnTick() { BuyTicketNo = OrderSend(Symbol(),OP_BUYLIMIT,0.01,Ask,0,0,0,WindowExpertName(),2000,0,clrRed); //現在の値で買いの指値を注文 if(BuyTicketNo>0) { starttime=GetTickCount(); } while(true){ if(GetTickCount()-starttime>=900){ //900msec待つ。Sleepでもよいが、この方法の方が誤差が少ない。 break; } } del_judge = OrderDelete(BuyTicketNo,NULL); //指値を削除 if(!del_judge) Print("指値を削除できなった=注文成立"); else Print("指値を削除できた=注文不成立"); Sleep(60000); //ひたすら注文しないように、1分間処理を止める } |
補足説明
MT4を動かすPCの性能が悪いと、900msecを待つ処理は900msec時間よりも伸びることがあります。1コアのCPUに対して複数のMT4処理を動かすと、他の処理でCPUが占有されて、WhileのWait処理に関係なく、処理を待たされるためです。時間が長くなる場合には、CPUのコア数を増やすか性能をあげてみてください。(CPU以外のメモリなどが原因の場合もあります)
AIを活用した自動売買EAの無料配布始めました。3年以上の年月をかけて大分安定してきましてので、よければ「機械学習EA(Aizack)とは」をご覧ください。