円買い介入対策のEAを作成する

神田財務官の神プレイによる円安阻止が昨今話題だが、米金利が決定的に下げたわけじゃない以上、円安圧力が消えたわけではないのでもう一発ぐらい大きな介入がありそうだと考える。

仮に介入があった場合、直近に行われた介入実績を見ると①最低5円押し下げるまで連続した円買いを入れる②初動で指標直後のような動き、40pipsぐらいの押し下げが見られる③いつ行われるか不明、東京時間の明朝など板が薄い時間を狙ってやったりするなどの特徴がある。うまくやれば介入に合わせてショートで取れるのではなかろうか?


そこで、以下のような仕組みのプログラムを組んだ。やることは単純で、

①一分足が新しく生成されたら、前の一分足の終値を取得する

②その終値から30pips下に逆指値の売りを入れる

③一分経ち次の足が現れるまでその逆指値がヒットしなかったら注文を取り消して①に戻る

(④逆指値がヒットしたらLINEのbotで自分の携帯に連絡を入れると同時に押し目で焼かれない程度に売り増す)


①~③の操作によって、常に直近の終値から30pips下に売り注文があることになる。介入があった場合1分以内に30pips以上押し下げられるはずなので、初動でショートを入れることが出来ることになる。④は更に大きな利益を狙うためである。

普段あまりコードを載せなかった気がするが今回は載せたいと思う。何故ならXMのMT4に入っていたデータが不手際で全て飛んでしまったので今までの知識の累積が消えてしまうことに対する恐怖が芽生えたからだ、、。(Gitに載せろという話なんだけどね) ④は難しいので別の会にやろうと思う。

以下コード

#property strict

double last_close;
int order_ticket, order_delete, order_select, order_type; //広域で変数宣言

int OnInit()
  {
   last_close = Close[1];
   order_ticket = OrderSend(Symbol(), 5, 6, last_close - Point()*400, 0, 0, last_close - Point()*4000, NULL, 0, 0);
   printf("Order ticket: " + IntegerToString(order_ticket));
   return(INIT_SUCCEEDED);  

 //起動時に直近終値から40pips下に売りポジションを構築
  }

void OnDeinit(const int reason)
  {
  }
  
void OnTick()
  {
   static int BarsOnChart = 0;
   if(Bars==BarsOnChart){
      BarsOnChart = Bars;
      return;
   }
   BarsOnChart = Bars; //新しい足が出来た場合のみ動作する仕様
   
   last_close = Close[1];
   order_select = OrderSelect(order_ticket, SELECT_BY_TICKET, MODE_TRADES);
   order_type = OrderType();
   printf("Order type: " + IntegerToString(order_type));
   
   if(order_type==5){
      order_delete = OrderDelete(order_ticket);
      order_ticket = OrderSend(Symbol(), 5, 6, last_close - Point()*400, 0, 0, last_close - Point()*4000, NULL, 0, 0);

   //新しい足が出来たら、先ほどの逆指値の売りを取り消し、一分足で直近終値に対して40pips下の逆指値売りを再発注
   }
   else{
      ExpertRemove();

      //それ以外の状況(既に売りがヒットしたなど)では、不具合が生じているか介入後なのでEAを閉じる
   }
  }
//+------------------------------------------------------------------+

本当はまだまだ入れたい機能がいっぱいあるのだが、とりあえず最低限は満たしたのでこれを作動させて放置し、いつ介入が来たとしても耐えられるようにしておいた。(ただし指標前後では無意味に40pips下行くかもしれないから指標前に動作停止させなきゃいけない!!)