関数OrderModify()の使い方(MQL4)

関数OrderModify()

関連記事:ORDERMODIFY使用時に出るエラーを防ぐ条件式について

書式

bool  OrderModify(
	int        ticket,      // チケット番号
	double     price,       // 注文価格
	double     stoploss,    // 損切り価格
	double     takeprofit,  // 利益確定価格
	datetime   expiration,  // 有効期限
	color      arrow_color  // 矢印の色
	);

戻り値

int BuyTicket = 0;
BuyTicket = OrderSend(symbol,...);
OrderSelect(BuyTicket,...);
bool res = OrderModify(BuyTicket,OrderOpenPrice(),getAsk(Symbol())-500*_Point,getAsk(Symbol())+300*_Point,0,clrNONE);
if(res==true){
	Print("損益価格の変更は成功しました。");
}else{
	Print("損益価格の変更は失敗しました。");
}

関数OrderStopLoss(),関数OrderTakeProfit()

サンプルコード

下記の画像がサンプルコードの実行結果となります。
buy で約定していて、損切りと利益確定は空欄です。
modify で損切り価格と利益確定価格を変更しています。
t/p でTakeProfit利益確定決済されています。 300

buy で約定していて、損切りと利益確定は空欄です。
modify で損切り価格と利益確定価格を変更しています。
s/l でStopLoss損切り決済されています。-500

※下記のサンプルは私の自作関数が含まれているためコピーしても動きません。

	//グローバル変数
	int BuyTicket=0;
	//チケット初期化
	BuyTicket = TicketInitialization_Buy(BuyTicket);

	//エントリーできる状態であれば
	if(isEntry(BuyTicket)){         
		BuyTicket = OrderSend(Symbol(),OP_BUY,MarketInfo(Symbol(),MODE_MINLOT),
						getAsk(Symbol()),30,
						0,0,
						"sample",12345,0,Green);
		//チケットが選択できた場合
		if(OrderSelect(BuyTicket,SELECT_BY_TICKET)){
			bool res= OrderModify(OrderTicket(),OrderOpenPrice(),getAsk(Symbol())-500*_Point,getAsk(Symbol())+300*_Point,0,clrNONE);
			// エラー処理
			if(res== false){
					Print("errorNO:",GetLastError());
			}
		}
	}

シェアする

  • このエントリーをはてなブックマークに追加

フォローする