![見出し画像](https://assets.st-note.com/production/uploads/images/117883672/rectangle_large_type_2_d78800c79dda4716e04a45a8dd5ffa0a.jpeg?width=800)
発注
//<<<<<>>>>><<<<<>>>>><< 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コード一覧はコチラ
この記事が気に入ったらサポートをしてみませんか?