スポンサーリンク
ホーム » MQL5リファレンス » 関数 » 取引関数 » PositionsTotal()関数について
a

PositionsTotal()関数について

スポンサーリンク
取引関数
スポンサーリンク

※【おススメのMT5MQL5対応のFX業者】

MQL5にて開発した、MT5EAを実運用するにあたり、

当サイトでは以下のFX業者をおススメいたします。

外為ファイネスト

アヴァトレードジャパン

フィリップ証券

———————————————————————————-

スポンサーリンク

機能

PositionsTotal()関数は未決済ポジションの数を返す関数です。

<書式>

int  PositionsTotal();
スポンサーリンク

引数

引数はありません。

引数についてはコチラのリンクをご覧ください。

スポンサーリンク

戻り値

現在所有しているポジション数を返します。

戻り値についてはコチラを下記の記事をご覧ください。

スポンサーリンク

備考

ポジションの『ネッティング』計算時(ACCOUNT_MARGIN_MODE_RETAIL_NETTINGとACCOUNT_MARGIN_MODE_EXCHANGE)各シンボルにつき常に一つのポジションのみ(1つ以上の取引の結果である)保有することができます。ポジションと『ツールボックス』パネルの『取引』タブに表示される有効な未決注文と混同しないようにしてください。

ポジションに制限がない場合(ACCOUNT_MARGIN_MODE_RETAIL_HEDGING)各シンボルごとに同時に複数のポジションを保有することができます。

MQL5リファレンス

MT5では、ポジション管理にネッティングシステムヘッジングシステムという2つのシステムを(一応)設けています。

どちらのシステムを採用しているかはブローカーによって異なります。

(一応)と書いているのは、現在はほとんどのブローカーはヘッジングシステムを採用しており、ネッティングシステムは死滅状態に近いからです((+_+))

ネッティングシステムにおいては、一つの通貨ペアにつき、一つのポジションしか持つことができません。

ヘッジングシステムにおいては、同一通貨ペアで複数のポジションを所持することが可能です。メタトレーダー4利用者にはお馴染みのシステムですね。

※詳しくは↓の記事をご覧ください。

なので、PositionsTotal()関数もヘッジングシステムにおいて利用されることが前提の関数となっています。

MQL5では、MQL4においてOrder~という接頭辞の関数を使っていた諸々の処理が、

有効化していないポジションについての操作→Order~関数

注文が成立した結果についての操作→Deal~関数

すでに有効化しているポジションについての操作→Position~関数

と切り分けられています。

<関連リンク↓>

例えばMQL4では、有効化したポジション数のチェックはOrdersTotal関数を使うのが一般的ですが、MQL5においてそれはPositionsTotal()関数が担います。

OrdersTotal関数は待機注文の数のチェックに使ったりします。

こちらの記事でOrdersTotal関数を利用して待機注文を削除する工程を書いていますので、よろしければご覧ください。↓

<待機注文に関する関連リンク↓>

スポンサーリンク

サンプルコード

以下のサンプルコードはTerminal>Common>ディレクトリのFilesフォルダにあるSignal.txtというテキストファイルがあることを前提としたものです。


#include <Trade\Trade.mqh>
//ファイルのインクルード

CTrade trade;
//クラスオブジェクトの宣言

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
      double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
      //チャートの値の取得と正規化
      
      int ExternalFile=FileOpen("Signal.txt",
      FILE_READ|FILE_ANSI|FILE_COMMON,
      '|',
      CP_ACP);
      //テキストファイルを開き、ファイルハンドルを取得
      
      string BuySignal=FileReadString(ExternalFile);
      //Terminal>Common>Filesフォルダにあるテキストを読み取る
      
      FileClose(ExternalFile);//ファイルを閉じる
      
      if(PositionsTotal()==0 && BuySignal=="BUY IT NOW")//読み取った中に"BUY IT NOW"があれば
      {
         trade.Buy(0.1,NULL,Ask,0,Ask+100*_Point,NULL);//買い注文
         
      }//if(PositionsTotal()==0 && BuySignal=="BUY IT NOW")
      
      Comment("BuySignal",BuySignal,"PositionsTotal:",PositionsTotal());//コメント表示
   
  }
//+------------------------------------------------------------------+

他にもPositionsTotal関数の使い方に参考となる記事↓

for文で未決済ポジション内を一番古いポジションからチェック

OnTick関数については↓をご覧ください↓

FileRreadString関数については↓をご覧ください。

Normalizedouble関数については↓をご覧ください

FileOpen関数については↓をご覧ください

FileClose関数については↓をご覧ください。

———————————————————————————

※【おススメのMT5MQL5対応のFX業者】

外為ファイネストに関する記事は↓をご覧ください。

アヴァトレードジャパンに関する記事は↓をご覧ください。

フィリップ証券に関する記事は↓をご覧ください。

取引関数
スポンサーリンク
シェアする
エムキューエルをフォローする
スポンサーリンク
【超入門】MQL5 でEAを作ろうブログ

コメント

タイトルとURLをコピーしました