見出し画像

MT4/MQLソースサンプル:ショートポジション数の取得

#MQL
#MT4
#ソース公開
#無料


■処理内容

今のショートポジション数を確認したい場合の処理になります。
ショートということで「売り」です。「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();

以上でございます。

間違い・アドバイスなどあればご連絡くださいませ。

この記事が気に入ったらサポートをしてみませんか?