共通ライブラリのなかのトレード関数やポジション情報取得関数では、最後に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_entry0
、sig_entry1
に代入します。
それぞれのシグナルで別々にポジションを建てたり、決済したりするために、成行注文を送信する関数MyOrderSendMarket()
のpos_id
の引数にそれぞれ0
、1
を入れてポジションを区別します。
<aside>
💡 利用できるポジション番号の範囲は、LibEA.mqh
に記述してあるPOSITIONS
という定数で決まります。例えば、POSITION
が10
と定義されている場合、ポジション番号は0
から9
までの10個の範囲で指定できます。またポジション番号が0
の場合、pos_id
の引数は省略できます。
</aside>