OrderSend

2019/07/17 19:00
263

int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration, color Color=CLR_NONE)

注文や未決注文をするための主関数
トレードサーバによって挿入されたチケット番号を返し、もし失敗すれば-1を返す。
エラー情報の詳細を得たい場合はGetLastError()関数を呼び出す。
Notes:注文(OP_SELLやOP_BUY)する際、Bid(売値)、Ask(買値)の最新の価格しかオープン価格に用いることはできない。もし現在の値を用いて安全に取引をするなら、MaketInfo()関数にMODE_BID、MODE_ASK変数を指定すればよい。
計算済みや正規化されていない価格は適用できない。
もしスレッド価格に要求したエントリー価格が無かったり、小数点以下の桁数が一致していない非正規価格だった場合、129 (ERR_INVALID_PRICE)エラーが生成される。
もしオーダー価格があまりにも古いものならば、slippage変数に関係なく138 (ERR_REQUOTE)エラーを生成する。
もしオーダー価格があまりにも古いが、スレッドに存在している場合、price±slippageの範囲以内に現在の価格があるならば、その価格で約定されるだろう。

ストップロス値と利確値は市場価格とあまりに近くすることはできない。ストップロス値と価格の最低差はMakertInfo()関数にMODE_STOPLEVEL変数を付けることで得られる。もし間違えたり非正規ストップロス値の場合は、130 (ERR_INVALID_STOPS))エラーが生成される。

未決注文を置く場合、そのオープン価格を市場価格とあまりに近くすることはできない。未決注文と価格の最低差はMakertInfo()関数にMODE_STOPLEVEL変数を付けることで得られる。未決注文のオープン価格を失敗した場合、130 (ERR_INVALID_STOPS))エラーが生成される。

未決注文の有効期限が使えないトレードサーバもある。この場合、expiration変数に0でない値を指定すると、147(ERR_TRADE_EXPIRATION_DENIED)エラーを生成する。

あるトレードサーバでは、注文と未決注文の総数に制限を設けているところもある。もしその制限を超えてしまうと、新しいポジションを持つこと(未決注文を置くこと)はできず、トレードサーバから148 (ERR_TRADE_TOO_MANY_ORDERS))エラーが返ってくる。

Parameters:
symbol - 通貨
cmd - 取引タイプ。取引操作子のどれか。
volume - ロット数
price - オープン価格
slippage - スリッページ
stoploss - ストップロス値
takeprofit - 利確値
comment - コメント。コメントの最後の部分はサーバーによって変更される。
magic - オーダー識別番号。ユーザ定義の識別番号。
expiration - 有効期限
arrow_color - チャート上の矢印の色。
もしこの変数が間違っているかCLR_NONE値であれば
チャート上に何も描かれない。
Sample:

  int ticket;
  if(iRSI(NULL,0,14,PRICE_CLOSE,0)<25)
    {
     ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,
                      Ask+25*Point,"example",00001,0,Redn);
     if(ticket<0)
       {
        Print("OrderSend failed with error #",GetLastError());
        return(0);
       }
    }

コメント

質問を投稿する前に、 まず過去の質問と回答を検索 してみましょう!

それでも解決しない場合は、ぜひ新しい質問を投稿してください!