【MQL4】

OrderSend関数


int  OrderSend(
               string   symbol,               // 通貨ペア名
               int      cmd,                  // 注文タイプ
               double   volume,               // ロット数
               double   price,                // 注文価格
               int      slippage,             // スリッページ
               double   stoploss,             // ストップロス価格
               double   takeprofit,           // リミット価格
               string   comment     = NULL,   // コメント
               int      magic       = 0,      // マジックナンバー(識別用)
               datetime expiration  = 0,      // 有効期限
               color    arrow_color = clrNONE // 色
              );

注文タイプ

OP_BUY を引数にすると「成行買注文」、OP_SELL で「成行売注文」。


OrderSend( Symbol(), opType, lot, price, 20, 0, 0,"新規オーダー", MAGIC_NO );
        // 通貨ペア, 注文形式, 数量, 価格, 許容スリッページ, ストップロス, テイクプロフィット, コメント, マジックナンバー

<許容スリッページ>

int 型の数値 × 0.1 pips = 許容スリッページ。

上の例では20を引数にしているので、20 × 0.1pips = 2.0pips

<ストップロス>

引数に0を指定しておくこと。

業者によっては新規注文(OrderSend)時にストップ・リミット設定は出来ません。
この辺は業者毎に異なるので、確認が必要です。
業者毎に異なるプログラムを組むのも面倒ですので、新規注文時にストップ・リミットを設定しない方法で統一した方が無難です。
デモ口座では設定出来ますが、リアル口座では設定出来ないという事が発生します。
デモ口座でテストした後にライブ口座で稼働させたらストップ・リミットが設定されない・・・なんて事になりかねません。

対策としてOrderSend関数で新規注文が約定された後に、OrderModify関数でストップ・リミット設定を行う必要があります。
新規注文約定直後にOrderModify関数を呼び出すとサーバーが要求過多で拒否されるので、
100msec程のインターバル(Sleep(100))をおいてから行った方が余計なエラーが発生せずに済みます。

参考

<テイクプロフィット>

引数に0を指定しておくこと。上に同じです。

<有効期限>

引数無しでもOK

<色>

引数無しでもOK

 

コメント

タイトルとURLをコピーしました