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

 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

MetaTrader 5ビルド1730の新バージョン:MetaEditorと合成ツールのプロジェクト

レナート・ファットフーリン さん 2017.12.28 08:59

1730ビルドでは、このエラーを発見し修正しました(現在は検索に失敗するとキャッシュをリセット するようになっています)。

 
Ivan Ivanov:

一度に1つ(選択されたポジションの情報しか 得られません。

事実なのか、参考資料なのか?検索してもどこにもそれらしいものは見つからなかった。

 
pivomoe:

事実を述べているのか、それとも証明書を要求しているのか?検索してもどこにもそんなことは書いてありませんでした。

位置のプロパティを取得するためには、希望する位置があらかじめ選択されている必要があります。
PosotionGetXXXXのポジションのプロパティを取得するための関数については、ヘルプに説明があります。
この関数はPositionGetSymbol またはPositionSelect関数で事前に選択した、オープンポジションの要求されたプロパティを返します
スーパーマーケットで、ジャムの瓶のラベルに書いてあることを読みたいと思ったら、まずジャムの瓶を手に取る必要がある、と考えればよいでしょう。
 
fxsaber:
その結果、あなたの間違いが生じた」ということから判断すると、1730年に間違いが見つかったのではなく、それ以前のバージョンに間違いがあったということになります。つまり、1730年当時の開発者によれば、現在ではこの点に関してすべてが完璧に機能しているのです。
 
Vladimir Karputov:
位置のプロパティを取得するためには、あらかじめ必要な位置を選択しておく必要があります。
PosotionGetXXXXのポジションのプロパティを取得するための関数については、ヘルプに説明があります。
この関数はPositionGetSymbol またはPositionSelect関数で事前に選択した、オープンポジションの要求されたプロパティを返します
スーパーマーケットで、ジャムの瓶のラベルに書いてあることを読みたいと思ったら、まずジャムの瓶を手に取る必要がある、と考えればよいでしょう。
ポジションとオーダーを選択してから、相手の情報を得るというのは理解できるのですが。CPositionInfoクラスがどう関係するのかわからない。クラスがあれば、そのクラスのオブジェクトを大量に作ることができる。そして、その結果、それぞれのオブジェクトの位置を設定することができるのです。これはおかしな話です。CPositionInfoオブジェクトを100万個作っても、そのすべてがSelect()メソッドで最後に選択された位置でしか機能しないのです。
 
pivomoe:
ポジションとオーダーを選んでから情報を得るというのは理解できるのですが。CPositionInfoクラスがどう関係するのか理解できないのですが?クラスがあれば、そのクラスのオブジェクトを大量に作ることができる。そして、その結果、それぞれのオブジェクトの位置を設定することができるのです。これはナンセンスなので、少なくとも100万個のCPositionInfoオブジェクトを作ることができますが、それらはすべてSelect()メソッドで最後に選択された位置に対してのみ機能します。
PositionSelect()関数は位置データをプログラム環境にコピーし、その後のPositionGetDouble()PositionGetInteger()PositionGetString()コピーしたデータを返します
2つ以上のポジションのデータを配列で保存したい場合は、独自の構造体を書き、そこにポジションデータをコピーしてください。
 
pivomoe:
ポジションとオーダーを選択してから情報を得るというのは理解できるのですが。CPositionInfoクラスがどう関係するのか理解できない。クラスがあれば、そのクラスのオブジェクトを大量に作ることができる。そして、その結果、それぞれのオブジェクトの位置を設定することができるのです。これはナンセンスです。CPositionInfoオブジェクトは少なくとも100万個作成できますが、それらはすべてSelect()メソッドで最後に選択された位置でのみ機能することになります。
CArrayObjが お役に立ちます。そして、このリストにオーダー/ポジション・オブジェクトを格納する。そして、必要なデータをすべて取得する。
 

ここで続けましょう。

Vladimir Karputov:
PositionSelect()関数は位置データをプログラミング環境にコピーし、その後のPositionGetDouble()PositionGetInteger()PositionGetString() の呼び出しは先にコピーしたデータを返します

ヘルプでしっかり説明されているので、すべて理解しています。CPositionInfoクラスとの関係がよくわからないのですが?

Volume() 関数を搭載しています。本機能を呼び出す前に必要な条件(使用する位置を選択すること)があります。この条件をクリアしています。なぜ絶対に間違ったボリュームが返されるのかわからない。まあ、それはそうです、私はに興味を持っている最後の呼び出し(このクラスのオブジェクトの)Select()シンボルの時に覚えていて、すでにこのシンボルに対応する位置を見つけ、この位置に対応するボリュームを返すようにボリューム()呼び出しの時であることは困難?



つまり、この場合、PositionInfoクラスのオブジェクトを2つ使うのは間違いです。

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

 
CPositionInfoクラスの Volumeメソッドは、Select()メソッドが最後に呼ばれた時点に対応するボリュームを返すという理解でいいのでしょうか?つまり、このシンボルの1ヶ月前の出来高を知ることは可能なのでしょうか?
 
pivomoe:

ここで続けましょう。

ヘルプでしっかり説明されているので、すべて理解しています。CPositionInfoクラスとの関係がよくわからないのですが。

Volume() という関数があります。本機能を呼び出す前に必要な条件があります(使用する位置を選択する)。この条件をクリアしています。なぜ間違ったボリュームが返されるのかわからない。まあ本当に、それは私が興味を持っている最後の呼び出し(このクラスのオブジェクトの)Select()記号の時に記憶することは困難であり、すでにこのシンボルに対応する位置を見つけ、この位置に対応するボリュームを返すようにボリューム()呼び出しの時にある?


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

CPositionInfo トレーディングクラスは、その機能を理解すれば、完璧に機能します。
説明しますと、CPositionInfo は、選択した位置 のプロパティをすべて保存する棺桶ではなく、選択した位置のプロパティにアクセスするためのキー(便利で高速、コードの束を置き換える)なのです。