MQL5による株式発振器とは - ページ 3

 

DV2010:

...Renat さん、私の理解では、テスト終了後のチャート上のインジケータの 表示は、テスト中に行われた計算とインジケータ配列の充填に基づいて 行われると思います。しかし、テスターからカスタムインジケーターチャートに結果が転送されないというのはどういうことでしょうか?

もちろん、テスターエージェントからの指標演算データはターミナルチャートに転送されない。数百メガバイトの計算データをターミナルに渡すことはなく、それらは即座に(そして次のティックで)インジケータによって再計算されます(関数OnCalculateの呼び出しがキャンセルされていない)。

インジケータは自分で計算する必要があります。

 

sergey1294:
Отвечу вам одно, пока не появиться режим визуализации решить вашу задачу не так просто. Есть одно решение, это записывать данные эквити в файл при тесте. потом данные из этого файла записать в буфер индикатора тем самым построить график эквити.

しかし、具体的にどこにデータをバッファに書き込めばいいのでしょうか?

OnCalculatedにしか 書き込めないと思って、そのように実装しようとしたのです。

 
DV2010:

Roshさん、オンライン用のバリアントはすでに掲載されていますが、Historyを主に扱う者として、過去のデータで動作するバリアントが必要なんです。そして、何が難しいのか、いまだに理解できないでいます。


エクイティ値をファイルに書き込む。そして、これらの値によって指標をプロットする。ただし、テスト中はエージェント名/MQL5/Files フォルダにファイルが書き込まれるため、データファイルは手動で移動する必要があります。
 
DV2010:

しかし、具体的にどこにデータをバッファに書き込めばいいのでしょうか?

OnCalculatedにしか書き込めないと思って、そのように実装しようとしたのです。

ファイルに値を書き込むにはエキスパートを使い、インジケータではファイルからの読み込みとバッファへのデータ書き込みのコードを書いています。コードを書くのに時間がかかるので、まだお見せすることはできません。

 
Renat:

もちろん、算出された指標値をTester-Agentからターミナルチャートに転送することはできません。数百メガバイトの計算データをターミナルに渡すことはなく、それらは即座に(そして次のティックで)インジケータによって再計算されます(関数OnCalculateの呼び出しが キャンセルされていない)。

レナート、インジケータは自分自身を読み取る必要があります

そのため、OnCalculatedメソッド 、インジケータ配列の値を何らかの値で初期化するようにしています。しかし Equityvalues はそうならないのに、なぜこのように指標線を初期化(構築)することが可能 なのでしょうか?

 
DV2010:

レナート、インジケータは自分自身を読み取る必要があります

そのため、OnCalculatedメソッド 、インジケータ配列の値を何らかの値で初期化するようにしています。しかし Equityvalues はそうできないのになぜこの ように 指標線を 初期化(構築)することができるのでしょうか?

なぜなら、価格には歴史があるが、Equityには歴史がないからだ。そのため、Equityの履歴をファイルに書き込んで、自分で履歴を構築する必要があります。
 
Rosh: エクイティ値をファイルに書き込む。そして、その値に基づいて指標を構築する。ただし、データファイルは手動で転送する必要があり、テスト中はAgent_name/MQL5/Filesという フォルダにファイルが書き込まれます。

私の理解では、Expert Advisor の OnInit で AccountInfoDouble(ACCOUNT_EQUITY) を介して定義に基づいてファイルに書き 込まれ、 OnCalculated indicator でファイルから読み込ま れるはず です。

しかし AccountInfoDouble(ACCOUNT_EQUITY) を通して変数Equtyの データをOnCalculatedで 直接 利用できるのはなぜ でしょうか

そうすると、コードが面倒くさくなってしまうので......。

Print AccountInfoDouble(ACCOUNT_EQUITY) のOnCalculated で、何らかの値が出力さ れるのですが、理解 できません。

インジケータ値の配列に即座に割り当てられないのは、具体的に何が原因なのでしょうか?

テスターの履歴表示と現在値の表示は、履歴はすでに記録されており、現在のデータは到着したばかりであるという点だけが異なると思っていました。

 

sergey1294:
потому что цены имеют историю а эквити нет. По этому для эквити вам нужно строить собственную историю записав ее в файл.

しかし、それならOnCalculatedインディケータ(OnTick Expert Advisorだけでなく)の AccountInfoDouble(ACCOUNT_EQUITY)を通じてEqutyダイナミクスが全く表示されないのはなぜでしょうか?

それともOnCalculated Indicatorはテストモード と表示モードとで異なる動作をするのでしょうか?

 

EAのグローバルレベルで2つの配列 Equity[]とTime[] を宣言します。

EAをテストする際に、株式と時間の値を適切な配列に書き込んでください。

テスト 終了時にファイルを読み込み、必要なチャートにエクイティをプロットするスクリプトを使用します。

これはあなたの目的に最適な方法であり、なぜインジケータが必要なのか理解できません。

 
DV2010:

私の理解では、Expert Advisor の OnInit で AccountInfoDouble(ACCOUNT_EQUITY) を介して定義に基づいてファイルに書き 込まれ、 OnCalculated indicator でファイルから読み込ま れるはず です。

しかし AccountInfoDouble(ACCOUNT_EQUITY) を通して変数Equtyの データをOnCalculatedで 直接 利用できるのはなぜ でしょうか

そうすると、コードが面倒くさくなってしまうので......。

Print AccountInfoDouble(ACCOUNT_EQUITY) のOnCalculated で、何らかの値が出力さ れるのですが、理解 できません。

インジケータ値の配列に即座に割り当てられないのは、具体的に何が原因なのでしょうか?

テスターの値を履歴に表示することと、現在の値を表示することは、履歴はすでに記録されており、現在のデータは到着したばかりであるという点だけが異なると思っていました。

どう説明したらいいのかわからないくらいです。AccountInfoDouble(ACCOUNT_EQUITY) には、直近の持分値が格納 されます。 テスト後は、Renatさんのおっしゃる通り、インジケータを再初期化して再計算しています。従って、テスト中にインジケータ・バッファに蓄積されたエクイティ・データは消去される。