関数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());
}
}
}