見出し画像

発注

//<<<<<>>>>><<<<<>>>>><< include >><<<<<>>>>><<<<<>>>>>
#include <Trade\Trade.mqh>

//<<<<<>>>>><<<<<>>>>><< 発注用変数 >><<<<<>>>>><<<<<>>>>>
CTrade mytrade;
ENUM_ORDER_TYPE_FILLING fillPolicy;
input group "MagicNumber"
input int MagicNumber_bid = 1111; // bidマジックナンバー
input int MagicNumber_ask = 1112; // askマジックナンバー

//<<<<<>>>>><<<<<>>>>><< オーダー用リクエスト >><<<<<>>>>><<<<<>>>>>
MqlTradeRequest myrequest_ask= {};
MqlTradeRequest myrequest_bid= {};
MqlTradeResult  myresult= {};

//<<<<<>>>>><<<<<>>>>><< Tick価格変数 >><<<<<>>>>><<<<<>>>>>
MqlTick last_tick;

//<<<<<>>>>><<<<<>>>>><< 取引ロット >><<<<<>>>>><<<<<>>>>>
input group "lot"
input double entry_lot = 0.01;//取引ロット

OnTick()

//発注価格取得(last_tick.ask:買う場合の価格 last_tick.bid:
売る場合の価格)
SymbolInfoTick(_Symbol,last_tick);

//成行注文
Deal_bidrequest(MagicNumber_bid,entry_lot,last_tick.ask,0,0);
Deal_askrequest(MagicNumber_ask,entry_lot,last_tick.bid,0,0);

Deal_bidrequest(int magic,double volume,double price,double sl,double tp)

//+------------------------------------------------------------------+
//|BIDオーダーのテンプレートを反映した上で、requestベースで発注する       |
//+------------------------------------------------------------------+
void Deal_bidrequest(int magic,double volume,double price,double sl,double tp)
  {
   ZeroMemory(myrequest_bid); //初期化

//固定値
   myrequest_bid.action       = TRADE_ACTION_DEAL; //注文を指定
   myrequest_bid.symbol       = _Symbol;           //通貨ペア名
   myrequest_bid.deviation    = 20;                //スリッページ
   myrequest_bid.comment      = "bid";             //コメント
   myrequest_bid.type_filling = fillPolicy;
   myrequest_bid.type         = ORDER_TYPE_BUY;    //成買

   /*
   //時間制限
      if(order_time_limit > 60)//業者により、有効期限の下限制限あり
        {
         myrequest_bid.type_time    = ORDER_TIME_SPECIFIED; //有効期限あり;
         myrequest_bid.expiration   = TimeCurrent() + order_time_limit;  //有効時間
        }
   */
//可変(オーダー時に代入)
   myrequest_bid.magic      = magic;   //マジックナンバー(識別用)
   myrequest_bid.volume     = volume;  //ロット数
   myrequest_bid.price      = price;   //注文価格
   myrequest_bid.sl         = sl;      //ストップロス価格
   myrequest_bid.tp         = tp;      //リミット価格

//発注
   OrderSend(myrequest_bid, myresult);
   TradeErrorCheck();
   Sleep(500);
  }

Deal_askrequest(int magic,double volume,double price,double sl,double tp)

//+------------------------------------------------------------------+
//|ASKオーダーのテンプレートを反映した上で、requestベースで発注する       |
//+------------------------------------------------------------------+
void Deal_askrequest(int magic,double volume,double price,double sl,double tp)
  {
   ZeroMemory(myrequest_ask); //初期化

//固定値
   myrequest_ask.action       = TRADE_ACTION_DEAL; //注文を指定
   myrequest_ask.symbol       = _Symbol;           //通貨ペア名
   myrequest_ask.deviation    = 20;                //スリッページ
   myrequest_ask.comment      = "ask";             //コメント
   myrequest_ask.type_filling = fillPolicy;
   myrequest_ask.type         = ORDER_TYPE_SELL;   //成売

//可変(オーダー時に代入)
   myrequest_ask.magic      = magic;   //マジックナンバー(識別用)
   myrequest_ask.volume     = volume;  //ロット数
   myrequest_ask.price      = price;   //注文価格
   myrequest_ask.sl         = sl;      //ストップロス価格
   myrequest_ask.tp         = tp;      //リミット価格

   /*
   //時間制限
      if(order_time_limit > 60)//業者により、有効期限の下限制限あり
        {
         myrequest_ask.type_time    = ORDER_TIME_SPECIFIED; //有効期限あり;
         myrequest_ask.expiration   = TimeCurrent() + order_time_limit;  //有効時間
        }
   */

//発注
   OrderSend(myrequest_ask, myresult);
   TradeErrorCheck();
   Sleep(500);
  }


TradeErrorCheck()

//+------------------------------------------------------------------+
//| オーダー成否確認                                                    |
//+------------------------------------------------------------------+
void TradeErrorCheck()
  {
   if(myresult.retcode==TRADE_RETCODE_PLACED || myresult.retcode==TRADE_RETCODE_DONE)
     {
      Print("注文が成功しました。 リターンコード= ",myresult.retcode);
     }
   else
      Print("注文が失敗しました。リターンコード= ",myresult.retcode);
  }
//+------------------------------------------------------------------+



MQL5コード一覧はコチラ


この記事が気に入ったらサポートをしてみませんか?