MQL4 OrderSend Function

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 種類があります。 最も一般的には、成行注文は最新の買値または売値で即座にポジションをオープンします。

売買時の注意

買値はMT4チャート上で表示される価格、売値はあくまで購入価格よりも高い エントリー価格は数ピップス高く、両者の差はスプレッドです。 売り値で買い注文をオープンし、売り注文をクローズします。 入札価格で売り注文を出し、買い注文を閉じます。

これは成行買い注文の例です:


OrderSend (Symbol()、OP_BUY、Lots、Ask、スリッページ、Bid-StopLoss *Point、Bid+TakeProfit*Point、「EAName」、MagicNumber、0、Blue)


これは売り市場注文の例です:


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 に設定すると、満たされる可能性が高くなります。

スリッページに関するブローカーの 5 つの考慮事項 < p>ブローカーが 4 桁の相場 (または 2 桁の円ペア) を使用している場合、1 ピップ = 1 ピップ; ただし、ブローカーが 5 桁の相場 (または 3 桁の円ペア) を使用している場合、1 ピップ = 0.1 ピップ。この場合、スリッページ設定の最後にゼロを追加する必要があります。 したがって、コードが 4 桁または 5 桁のブローカーを自動的にチェックし、それに応じて調整することは非常に便利です。

OB_BUY のストップロスとテイクプロフィットのルールについて:


質問 – ストップロス = ストップロスを以下に設定します ( -) アスク価格


アスク + テイクプロフィット = テイクプロフィットを (+) アスク価格より上に設定します


OB_SELL のストップロスとテイクプロフィットのルールについて:


入札 + ストップロス = (+) 入札より高いストップロスを設定します


入札 – テイクプロフィット = (-) 入札価格よりもテイクプロフィットを設定します


上記のルールの場合、外部変数を使用してストップロスとテイクプロフィットを設定します。例:


external int stop loss=50;

outer int take profit=100;


上の例では、ストップロスを買い成行注文より 50 ピップス下に設定し、テイクプロフィットは 100 ピップス上に配置します。 しかし、最近、以下のコメントに示されているように、5 フィギュアブローカーの追加により、ストップロスとテイクプロフィットポイントの計算方法に問題が発生しました。

5 ポイント値に関するブローカーのメモ

<スパンjsaction="click:E6Tfl,GFf3ac,tMZCfe; contextmenu:Nqw7Te,QP7LD; Mouseout:Nqw7Te; Mouseover:E6Tfl,c2aHje" jsname="W297wb">上記の整数を適切な小数値に変換するには、外部の StopLoss 変数と TakeProfit 変数を使用します。ポイントを掛ける必要があります。 Point は MQL の事前定義された変数で、小数点以下 4 桁の引用符の場合は Point = 0.001 のように、小数点以下の桁数に応じて通貨の最小価格単位を返します。 しかし、最近では多くのブローカーが小数点見積書、つまり小数点以下 3 桁と小数点以下 5 桁を使用しており、小数点以下 5 桁の見積ではポイント = 0.00001 になります。 この場合の問題は、上記のストップロスが始値から 50 pips ではなく 5 pips として計算されることです。 それは私たちが望んでいることではありません。 したがって、コードが 4 桁または 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 がオープンした注文を区別するために、プログラムで注文に割り当てる一意の番号です。

マジックナンバーに関する注意

マジック ナンバー パラメータ フィールドに一意の整数値を指定するだけでは、プログラムがオープン注文を区別するのに十分ではありません。 コードがオープン取引を参照しようとするときは常に、OrderSelect() 関数と OrderMagicNumber() 関数の組み合わせにマジック ナンバーも含める必要があります。


組み合わせは次のようになります。


int total = OrdersTotal();< /p>

for (int cnt = 0 ; cnt < total ; cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderMagicNumber() == MagicNumber)


コンテキスト内でこの結合コードの良い例として、カスタム close 関数を見てみましょう。