はじめに
システムトレードプログラマのmt4/mql4のメモノートです。
初心者向けの簡単なトピックから公開していきます。
.noteでEAそのものも公開していますので良ければそちらも見てください。
目次
処理内容
今のショートポジション数を確認したい場合の処理になります。
ショートということで「売り」です。「SELL」です。「ベア」です。
のポジションがいくつあるかをカウントするコードです。
使いどころとしては
・最大ポジション数を制限したいとき
→ポジションがあるなら追加エントリーしない。とか
・買い売りのどちらの処理を行えばいいかの判定のとき
→買いシグナルが出たので、売りポジションがあるなら決済する。とか
ですかね。
そんな時はこのコードでショートポジション数を算出してください。
mql4ソースコード
こちらが関数側のソースです。呼び出し側の前に記述されている必要があります。
//+------------------------------------------------------------------+
//| ショートポジション数を取得 ShortPositionCnt
//| code by KOUSHIROU
//| https://note.com/mt4_coder
//+------------------------------------------------------------------+
input int MAGIC = 12345;//マジックナンバーを設定
int ShortPositionCnt()
{
int sells=0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
{
if(OrderType()==OP_SELL) sells++;
}
}
return(sells);
}
//+------------------------------------------------------------------+
こちらは呼び出し側の例
呼び出したいタイミングに合わせてOnTick()、OnInit()とかOnTimer()の中で記述してみてください。
SPosCntの中にポジション数が入ります。
int SPosCnt = ShortPositionCnt();
取引所によっては、高頻度でアクセスしたりするとエラーではじかれたりします。
そんなときはsleepなどで間をあけるようコーディングしてみてください。
皆様の手助けになりますように。
間違いなどあればご指摘いただけると助かります。
以上です