OrderModify

OrderModify

bool  OrderModify(
   int        ticket,      // チケット番号
   double     price,       // 注文価格
   double     stoploss,    // ストップロス価格
   double     takeprofit,  // テイクプロフィット価格
   datetime   expiration,  // 有効期限
   color      arrow_color  // 色
   );
  • 引数
引数名初期値I/O詳細
ticket-IN変更する注文のチケット番号。
price-IN新しい注文価格。(保留中の注文のみ)
stoploss-IN新しいテイクプロフィット価格
expiration-IN新しい有効期限(保留中の注文のみ)
0で無期限を表す。
arrow_color-INstoploss、takeprofit変更の矢印の色。
パラメータを設定しない又はCLR_NONEを設定した場合は描画しません。
  • 戻り値

成功した場合はtrueを返します。
失敗した場合はfalseを返します。

  • その他

既に実行した未決済の注文に対してのみ変更可能です。
引数に渡された値が不変(現在の注文と同じ値)の場合は、エラーコードが1(ERR_NO_RESULT)が生成されます。

  • サンプルソース
void setLT( int aticketNo ) {

    double limitRate,stopRate;
    int    retryCnt;       // 変更試行回数
    bool   rtn;              // 変更判定
    int    errorcode;
    bool   isSelectOrder;

    isSelectOrder = OrderSelect(aticketNo, SELECT_BY_TICKET); // オーダー中のチケット選択(チケットNo指定)

    limitRate = OrderOpenPrice() + ( 50 * Point() ); // テイクプロフィット価格     = 約定価格 + 50.0pips
    stopRate  = OrderOpenPrice() - ( 10 * Point() ); // ストップロス価格 = 約定価格 - 10.0pips

    limitRate = NormalizeDouble(limitRate , Digits() );  // テイクプロフィット価格    を正規化
    stopRate  = NormalizeDouble(stopRate  , Digits() );  // ストップロス価格を正規化
    

    for( retryCnt = 0; retryCnt < 20; retryCnt++ ) { // 試行回数上限:20
        rtn = OrderModify(
                                 OrderTicket(),     // チケットNo
                                 OrderOpenPrice(),  // 注文価格
                                 stopRate,          // ストップロス価格
                                 limitRate,         // テイクプロフィット価格
                                 OrderExpiration(), // 有効期限
                                 clrYellow          // 色

                     );

        if ( rtn == false ) {             // 注文変更拒否
            Sleep(300);                         // 300msec待ち
            errorcode = GetLastError();        // エラーコード取得
            printf( "%d回目:注文変更拒否。エラーコード:%d , 詳細:%s ",
                                        retryCnt+1, errorcode ,  ErrorDescription(errorcode));
        } else {                                 // 決済注文約定
            Print("注文変更完了。 チケットNo=",aticketNo);
            break;
        }
    }
}

Twitterでフォローしよう

おすすめの記事