共通ライブラリのなかのトレード関数ポジション情報取得関数では、最後にpos_idという引数が定義されています。

この引数が複数のポジションを区別する番号で、「ポジション番号」と呼びます。ここに代入する値を変えることで、各ポジションを個別に扱えるようになっています。

コード

//共通ライブラリ
#include "LibEA.mqh"

sinput double Lots = 0.1; //売買ロット数

//ティック時実行関数
void Tick()
{
   int sig_entry0 = EntrySignal0(); //仕掛けシグナル0
   int sig_entry1 = EntrySignal1(); //仕掛けシグナル1
   //成行売買
   MyOrderSendMarket(sig_entry0, sig_entry0, Lots, 0);//ポジション番号0
   MyOrderSendMarket(sig_entry1, sig_entry1, Lots, 1);//ポジション番号1
}

//仕掛けシグナル関数0
int EntrySignal0()
{
   int ret = 0; //シグナルの初期化
   //シグナルの生成
   return ret; //シグナルの出力
}

//仕掛けシグナル関数1
int EntrySignal1()
{
   int ret = 0; //シグナルの初期化
   //シグナルの生成
   return ret; //シグナルの出力
}

説明

EntrySignal0()EntrySignal1()という二つの仕掛けシグナルが別々に生成されるものとします。それぞれsig_entry0sig_entry1に代入します。

それぞれのシグナルで別々にポジションを建てたり、決済したりするために、成行注文を送信する関数[MyOrderSendMarket()](<https://toyolab-fx.notion.site/MyOrderSendMarket-3e0c92f431514dc6ba54b78b23c1afc6>)pos_idの引数にそれぞれ01を入れてポジションを区別します。


<aside> 💡 利用できるポジション番号の範囲は、LibEA.mqhに記述してあるPOSITIONSという定数で決まります。例えば、POSITION10と定義されている場合、ポジション番号は0から9までの10個の範囲で指定できます。またポジション番号が0の場合、pos_idの引数は省略できます。

</aside>