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
コメント