MQL4 EA でコードを作成したいすべての新しいトレーダーは、成行注文、保留中の逆指値注文、指値注文など、OrderSend () 関数を使用して注文を行う方法を知っておく必要があります。 この MQL4 OrderSend 関数の記事で、EA をプログラムして注文する方法を学びましょう。
OrderSend() 関数の構文は次のとおりです。
int OrderSend (stringシンボル、int タイプ、double ロット、double 価格、int スリッページ、double StopLoss、double TakeProfit、string Comment = NULL、int MagicNumber = 0、datetime Expiration = 0、col Arrow = CLR_NONE);
参考までに、上記のパラメータの説明を以下の表に示します。
パラメータ | 説明 |
---|---|
シンボル | 取引シンボル (EURUSD など)。 Symbol() は通貨チャートのペアを表します |
タイプ | 注文タイプ: 買いまたは売り。市場価格、ストップロス、指値のいずれかになります。各タイプは整数値に対応します: OP_BUY – 成行注文の買い (整数値 0) OP_SELL – 成行注文の売り (整数値 1) OP_BUYSTOP – 逆指値注文の買い (整数値 2) OP_SELLSTOP – 売りストップ注文 (整数値 3) OP_BUYLIMIT – 買い指値注文 (整数値 4) OP_SELLLIMIT – 売り指値注文 (整数値 5) |
たくさん | トランザクション数。 ブローカーがマイクロ ロットをサポートしている場合は、マイクロ ロット (0.1) またはマイクロ ロット (0.01) を指定できます。 |
価格 | 注文の価格。 一般的に、Askで買うのが成行注文で、Bidで売るのが成行注文です。 保留中の注文の場合、現在の価格より上下の有効な価格で発注されます。 |
スリッページ | 注文が通過するための最大スリッページ ポイント。 |
ストップロス | ストップロス価格、始値以下で買い、始値以上で売ります。 0 に設定すると、ストップロスは使用されません。 |
利益を得る | 利益確定価格、始値より高く買って、始値より安く売る。 0 に設定すると、テイクプロフィットは使用されません。 |
コメント | 注文のコメントとして使用されるオプションの文字列。 コメントはターミナル ウィンドウの [取引] タブに表示されます。 ターミナルでそれらを表示するには、開いている取引または閉じている取引を右クリックし、開いたボックスの [コメント] の横にチェックマークを入れます。 これらは注文識別子として使用されます。 |
MagicNumber | これは、特定の EA によって発注された注文を識別するオプションの整数値です。 ご利用をお勧めします。 |
有効期限 | 未決注文のオプションの有効期限。 |
矢印 | 始値と時間を示す、チャート上に描画される矢印のオプションの色。 色を指定しない場合、矢印は描画されません。 |
OrderSend() 関数は、注文したチケット番号を返します (「チケット」とは、シリアル番号のみ)。 これらの注文チケットを静的変数に保存して、後で使用できます。
注文が行われなかった場合、エラー状態のため戻り値は -1 になります。 これにより、エラーを分析し、エラー コードに基づいて適切な措置を講じることができます。 取引リクエストの拒否理由に関する情報を取得するには、関数 GetLastError() を使用する必要があります。
成行注文
< p>メタトレーダーで発注できる注文には、成行注文、逆指値注文、指値注文の 3 種類があります。 最も一般的には、成行注文は最新の買値または売値で即座にポジションをオープンします。これは成行買い注文の例です:
OrderSend (Symbol()、OP_BUY、Lots、Ask、スリッページ、Bid-StopLoss *Point、Bid+TakeProfit*Point、「EAName」、MagicNumber、0、Blue)
p >
これは売り市場注文の例です:
OrderSend (Symbol()、OP_SELL、Lots、Bid、Slippage、Ask+StopLoss) *Point 、Ask-TakeProfit*Point、“EAName”、MagicNumber、0、Blue)
symbol() 関数は、現在のチャート シンボルを返します。現在のチャートのシンボルに注文を出します。 OP_SELL が売りの成行注文を指すのと同様に、OP_BUY は買いの成行注文を指します。 Ask は MLQ の事前定義変数で、現在のシンボルの最新の既知のアスク価格 (アスク価格) を保存するために使用されます。
通常、スリッページ パラメータを設定するには外部変数を使用します (例: extern slidepage = 3)。 スリッページ パラメーター (および対応する変数) は、価格スリッページが許容されるピップ数を指します。 言い換えれば、注文が通過する最大スプレッドを表します。 適切なスリッページの量を選択することは、絶妙なバランスをとることができます。適切な価格を与えるために十分に小さいピップ値を選択する必要がありますが、同時に、リクオートされて完全に見逃されないように十分に大きいピップ値を選択する必要があります。スリッページを 0 に設定すると、頻繁に再クォートされる可能性があり、価格を逃す可能性があります。 3 または 4 に設定すると、満たされる可能性が高くなります。
OB_BUY のストップロスとテイクプロフィットのルールについて:
質問 – ストップロス = ストップロスを以下に設定します ( -) アスク価格
アスク + テイクプロフィット = テイクプロフィットを (+) アスク価格より上に設定します
OB_SELL のストップロスとテイクプロフィットのルールについて:
入札 + ストップロス = (+) 入札より高いストップロスを設定します
入札 – テイクプロフィット = (-) 入札価格よりもテイクプロフィットを設定します
p>
上記のルールの場合、外部変数を使用してストップロスとテイクプロフィットを設定します。例:
external int stop loss=50;
outer int take profit=100;
上の例では、ストップロスを買い成行注文より 50 ピップス下に設定し、テイクプロフィットは 100 ピップス上に配置します。 しかし、最近、以下のコメントに示されているように、5 フィギュアブローカーの追加により、ストップロスとテイクプロフィットポイントの計算方法に問題が発生しました。
上記のサンプル売買注文のコメント パラメーター (OrderSend 関数の 8 番目のパラメーター) に、「EAName」と入力しました。 , このフィールドにはEA名を入力できます。 したがって、これはあなたの EA を他の EA と区別する方法です。 外部 MT4 プラットフォームで、オープン注文とクローズ注文を表示しているターミナルを見ると、最後のフィールドにコメント フィールドが表示されていることがわかります。 表示されない場合は、ターミナルを右クリックして、[コメント] にチェックを入れます。 同じアカウントで複数の EA を使用している場合は、コメント フィールドで各 Eas に異なる名前を付ける必要があります。そうすることで、すべての EA が取引の生成を開始したときに、ターミナル フィールドのコメントを見ることで、どの EA がどれを実行したかがわかるようになります。
コメント フィールドは、EA を互いに視覚的に区別するのに役立ちますが、独自のパラメーター (OrderSend 関数の 9 番目のパラメーター) については、デプロイされたマジック ナンバーが使用されます。プログラムが EA を互いに区別するのに役立ちます。 このパラメータには、「1234」などの整数値が入ります。 代わりに「extern double MagicNumber = 1234」を作成し、変数 MagicNumber をこのパラメータに入れることをお勧めします。 外部変数を使用すると、マジックナンバーを簡単に変更できます。 基本的に、マジックナンバーは、Expert Advisor がオープンした注文と別の Expert Advisor がオープンした注文を区別するために、プログラムで注文に割り当てる一意の番号です。