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

PositionGetInteger関数について

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

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

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

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

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

外為ファイネスト

アヴァトレードジャパン

フィリップ証券

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

スポンサーリンク

機能

PositionGetInteger関数は、未決済ポジションのリクエストされた整数型(int型datetime型)のプロパティを返します。

この関数を使う前に、事前にポジションの選択を行います。

MQL5 公式リファレンスではPositionGetSymbol 関数または PositionSelect関数を使うことよう推奨しています。

が!、基本的にはヘッジングシステム口座ではPositionGetSymbol でポジション選択するべきと考えます。

PositionSelect関数は引数(パラメーター)が取引銘柄名(=シンボル)です。

これは、PositionSelect関数ネッティングシステム口座(1取引銘柄につき1ポジションしか保有できない口座タイプ)、を想定した関数と思われます。

現状、MT5採用ブローカーのほとんどがヘッジングシステム口座の中、(もし利用しているEAが1ポジション運用が原則のEAならよいのですが)マルチポジション戦略のEAでPositionSelectを使うと、最小チケットのポジションを選択してしまいます

ポジションリスト内の番号を引数に指定するPositionGetSymbol 関数を使うのが望ましいでしょう。

この関数には2パターンの書式があります。

<書式1>

引数で指定したプロパティ値を戻り値として返す書式

long  PositionGetInteger(
  ENUM_POSITION_PROPERTY_INTEGER  property_id      // プロパティ識別子
  );;

<書式2>

関数の実行が成功と戻り値で確認できたときに、第2引数に指定した変数にプロパティ値を参照渡しで返す書式

bool  PositionGetInteger(
  ENUM_POSITION_PROPERTY_INTEGER  property_id,     // プロパティ識別子
  long&                          long_var        // プロパティ値を受け取る
  );

SymbolInfo~関数と同じパターンですね(引数の数に違いはありますが)

よろしければこちらの記事も参考にしてみてください。↓

スポンサーリンク

引数

<書式1>

ENUM_POSITION_PROPERTY_INTEGER  property_id      // プロパティ識別子

<書式2>


  ENUM_POSITION_PROPERTY_INTEGER  property_id,     // プロパティ識別子
  long&                          long_var        // プロパティ値を受け取る

スポンサーリンク

戻り値

<書式1>

指定したプロパティ識別子の値を返します。

<書式2>

関数実行の成功に応じて true または false を返します。指定したプロパティ識別子の値は第2引数参照渡しで返します。

スポンサーリンク

サンプルコード

#include <Trade\Trade.mqh>
//標準ライブラリーのトレードファイルを使えるようにする

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

void OnTick()
  {
      double Ask=NormalizeDouble(//正規化
                                 SymbolInfoDouble(_Symbol,SYMBOL_ASK),//現在値の取得
                                 _Digits);
      if(PositionsTotal()==0)//ポジションがなければ
      {
         trade.Buy(0.01,NULL,Ask,Ask-1000*_Point,Ask+500*_Point);
         //買い注文
      }//if(PositionsTotal()==0)
      
      BreakEven(Ask);
      //ブレイクイーブンを発動させる
      
  }//void OnTick()
//+------------------------------------------------------------------+

//ブレイクイーブン関数の定義
void BreakEven(double price)
{
   //ポジションプール内を古い方にむかってループチェック
   for(int icounter=PositionsTotal()-1 ; icounter>=0  ;icounter--)
   {
      string positionSymbol=PositionGetSymbol(icounter);//ポジションの通貨ペアを取得
      
      if(_Symbol==positionSymbol)//ポジションの通貨ペアが一致したら
      {
         ulong PosTicketNum=PositionGetInteger(POSITION_TICKET);
         //ポジションのチケット番号を取得
         
         double PosPrice=PositionGetDouble(POSITION_PRICE_OPEN);
         //ポジションのオープン価格を取得
         
         if(price>PosPrice+200*_Point)//現在値がオープン価格より一定数上がったら
         {
            trade.PositionModify(PosTicketNum,PosPrice,PosPrice+500*_Point);
            //ストップロスを建値に引き上げる
            
         }//if(Ask>PosPrice+200*_Point)
      }//if(_Symbol==positionSymbol)
   }//for(int icounter=PositionsTotal()-1 ; icounter>=0  ;i--)
}//void BreakEven(double price)

OnTick関数についてはコチラをご覧ください。

NormalizeDouble関数についてはコチラをご覧ください。

SymbolInfoDouble関数についてはコチラをご覧ください。

PositionsTotal関数についてはコチラをご覧ください。

PositionGetSymbol関数についてはコチラをご覧ください。

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

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

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

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

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

コメント

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