MT4/MQLソースサンプル:ショートポジション数の取得
■処理内容
今のショートポジション数を確認したい場合の処理になります。
ショートということで「売り」です。「SELL」です。「ベア」です。
のポジションがいくつあるかをカウントするコードです。
外国為替証拠金取引では、「買い」の方の通貨をロング、「売り」の方の通貨をショート、と呼ぶ。常に何らかの通貨を売り、何らかの通貨を買う、という表現をするわけである。2つの通貨のペア間の比率の変動を取引の対象とするから、このような表現となる。通貨のペアは USD/JPY、EUR/JPY、EUR/USD 、などと表記が決まっており、左側の通貨を右側の通貨で売買した場合の数値が取引の数値(=通貨レート)となり、また左側の通貨をどう取引するかを呼称する。たとえばUSDを買って円を売る場合はUSD/JPYのロングと言う。
by wikipedia
使いどころとしては
・最大ポジション数を制限したいとき
→ポジションがあるなら追加エントリーしない。とか
・買い売りのどちらの処理を行えばいいかの判定のとき
→買いシグナルが出たので、売りポジションがあるなら決済する。とか
ですかね。
そんな時はこのコードでショートポジション数を算出してください。
使い方
ショートポジション数(int) = ShortPositionCnt();
■引数
なし
■返り値
ショートポジション数(int)
ソースコード
■関数側のコードです。
呼び出し側の前に記述されている必要があります。
//+------------------------------------------------------------------+
//| ショートポジション数を取得 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()の中で記述してみてください。
int SPosCnt = ShortPositionCnt();
以上でございます。
間違い・アドバイスなどあればご連絡くださいませ。
この記事が気に入ったらサポートをしてみませんか?