初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 817

 
pivomoe:
CPositionInfoクラスの Volumeメソッドは、Select()メソッドが最後に呼ばれた時点に対応するボリュームを返すという理解でいいのでしょうか?つまり、このシンボルの1ヶ月前にあった出来高を調べることができるのですね。
勘違いしてますね。CPositionInfo クラスの Volume メソッドは、ある位置の体積を返します。PositionSelect で選択されていたポジション。
 

CPositionInfoの 作成方法について説明しました。でも、2つほどわからないことがあるんです。

1) このレシピはCPositionInfo クラスのヘルプからどのように導かれるのでしょうか?

2) 複数のオブジェクトを普通に使うことができないのに、なぜクラス自体が必要なのでしょうか。なぜなら、positionプロパティにアクセスするたびに、Selectメソッドを使って位置を設定する必要があり、そうしないと突然、どこか別のCPositionInfo オブジェクトのSelectメソッドを使うことになるからです。

 
pivomoe:

CPositionInfoの 作成方法について説明しました。でも、2つほどわからないことがあるんです。

1) このレシピはCPositionInfo クラスのヘルプからどのように導かれるのでしょうか?

2) 複数のオブジェクトを普通に使うことができないのに、なぜクラス自体が必要なのでしょうか。なぜなら、positionプロパティにアクセスするたびに、Selectメソッドを使ってその位置を設定する必要があり、そうしないと突然、他の場所にある別のCPositionInfo オブジェクトのSelectメソッドを使うことになるからです。

1).全てはヘルプに記載されています。真面目に注意しながら、さらに自己流で書いてみると、これが理解できるようになります。
2).もう一度言いますが、CPositionInfo クラスは、すべてのポジションのデータを保存する棺桶ではなく、ポジションのプロパティにアクセスするための便利なツールに過ぎないのです。

そして、これはいつもそうなのですが、まずポジションが選択され、そのプロパティが取得されるのです。その後、ポジションがハイライトされ、ポジションのプロパティが取得される、というサイクルが繰り返される。
 

ヘルプの使い方で何が間違いなのか理解できない。

1)プログラム中の位置のボリュームが必要だった。

2) 検索したところ、CPositionInfo クラスの Volume メソッドを見つけました。

3) Volumeを呼び出す前にSelectメソッドを使用することを指します。

4) Selectメソッドの記述に言及がない。念のため、CPositionInfo クラスの記述を勉強しておきます。

5) コードを書くのは私です。リファレンスから導かれない結果が出る。


どこにエラーがあるのか?

改めて、プロパティにアクセスする前にポジションと注文を選択することを知りました。しかし、この知識とヘルプにあるCPositionInfoの 知識は交わることはありません。

 
pivomoe:

どこが間違いなのか?

もっと詳しく書けるようになれば、どこが間違っているのかがわかるようになります。

こんな風に書いてみてください。

CPositionInfo PositionInfoKotiryemii,PositionInfoVedygii;
double Volume1=0; Volume2=0;
string Symbol1=""; Symbol2="";

if ( PositionInfoVedygii.Select("SBRF-12.17") ) // Select 1
{ Volume1=PositionInfoVedygii.Volume(); Symbol1=PositionInfoVedygii.Symbol(); } // Use 1
else Print("Не удалось выбрать позицию по символ SBRF-12.17 ");

if ( PositionInfoKotiryemii.Select("SBRF-3.18") ) // Select 2
{ Volume2=PositionInfoKotiryemii.Volume(); Symbol2=PositionInfoKotiryemii.Symbol(); } // Use 2
els Print("Не удалось выбрать позицию по символ SBRF-3.18 ");
 
Print(Symbol2," Объем ",Volume2," ",Symbol1," Объем ",Volime1);
 
pivomoe:

ヘルプの使い方で何が間違いなのか理解できない。

1)プログラム中の位置のボリュームが必要だった。

2) 検索したところ、CPositionInfo クラスの Volume メソッドを見つけました。

3) Volumeを呼び出す前にSelectメソッドを使用することを指します。

4) Selectメソッドの記述に言及がない。念のため、CPositionInfo クラスの記述を勉強しておきます。

5) コードを書くのは私です。リファレンスから導かれない結果が出る。


どこが間違いなのか?

もう一度、位置の選択について、順序、プロパティにアクセスする前に私は知っている。しかし、この知識とヘルプにあるCPositionInfoの 知識は重なりません。


これは、すべてのポジションをバイパスして、「取引」タブのターミナルにあるものと同様の情報をプリントアウトするコードブロックです。

   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
        {
         string str_position_type=(m_position.PositionType()==POSITION_TYPE_BUY)?"buy":"sell";
         Print(m_position.Symbol()+" | "+
               IntegerToString(m_position.Ticket())+" | "+
               TimeToString(m_position.Time(),TIME_DATE|TIME_MINUTES|TIME_SECONDS)+" | "+
               str_position_type+" | "+
               DoubleToString(m_position.Volume(),2)+" | "+
               DoubleToString(m_position.PriceOpen(),2));

}

作業のアルゴリズム:まず位置を選択し(スーパーの棚からジャムの瓶を取る)、次に選択した位置のプロパティにアクセスし、これらのプロパティを印刷する(ジャムの瓶のラベルを読む)。

 
pivomoe:

通常、このクラスのオブジェクトは1つしか扱えないので、CPositionInfoクラスは意味をなさないことがわかりました。

そう、ラッパーです。
 

Ivan Ivanov ,Vladimir Karputov, fxsaber お世話になりました。

 

Expert Advisorのインジケータからデータを取得するのですが、どうすればいいですか?まずハンドルを計算し、次にインジケーターバッファから直近のいくつかの実測値をコピーします。

質問です。

1.これらの指標における歴史の深さとは?

2.計算の深さを制限する方法はありますか?
この場合、変曲点または上下の方向を決定するために、最後の数個の値だけが必要である。
私のExpert Advisorは多通貨対応で、インジケータも数十種類あるので、無駄な計算をする必要がない。

 
User_mt5:

Expert Advisorのインジケータからデータを取得するのですが、どうすればいいですか?まず、ハンドルを計算し、次にインジケータ・バッファから直近の実際の値をコピーします。

質問です。

1.この指標に込められた歴史は、どれくらい深いものなのでしょうか?

2.計算の深さを制限する方法はありますか?
この場合、変曲点または上下方向を決定するために、最後の数個の値が必要なだけである。
Expert Advisorは多通貨対応で、数十種類のインジケータがあり、無駄な計算をする必要がない。


OnInit()でインジケータハンドルを1回だけ作成すれば良いのでは?

計算の深さはインジケータによって異なります。深さを強制的に制限するような指標は稀で、原則的にすべての履歴を計算するものである。したがって、おそらく次のバリエーションが便利です:インジケータに深さを担当する変数を導入し、Expert AdvisorのiCustomを通じてこのパラメータを渡します。

理由: