エラー、バグ、質問 - ページ 1787

 
fxsaber:
現在のキューにあるティックの番号を追加することも論理的に可能でしょう。

そして、ServiceDesk#1666680に直接書き込む。

機能の動作方法の変更をご検討ください

bool SymbolInfoTick( string symbol, MqlTick& tick );

Indicators (OnCalculateボディを含む) で、その説明に従って現在の価格を返すようにする。

という機能で言語を補完しています。

bool SymbolInfoTick_OnCalculate( string& symbol, MqlTick& tick ); //(*)

OnCalculate関数の 呼び出しの原因となったシンボルとティックを返すことになる。

または、別の方法として(*):OnCalculateコールにこれらのパラメータを 追加することができます。

OnCalculate( ..., const string& symbol, const MqlTick& tick );
削除済み  

質問ですが、mql5のツールを使って、チャート上で動いているすべてのプログラムとその名前を特定することは可能ですか?特に、現在のチャートに表示されているすべてのインジケーターの名前を取得するにはどうすればよいですか?

 
Alexey Kozitsyn:

質問ですが、mql5のツールを使って、チャート上で動いているすべてのプログラムとその名前を特定することは可能ですか?特に、現在のチャートに表示されているすべてのインジケーターの名前を取得するにはどうすればよいですか?

https://www.mql5.com/ru/docs/chart_operations/chartindicatorstotal

https://www.mql5.com/ru/docs/chart_operations/chartindicatorname

https://www.mql5.com/ru/docs/chart_operations/chartgetstring

https://www.mql5.com/ru/docs/constants/chartconstants/enum_chart_property#enum_chart_property_string
Документация по MQL5: Операции с графиками / ChartIndicatorName
Документация по MQL5: Операции с графиками / ChartIndicatorName
  • www.mql5.com
Операции с графиками / ChartIndicatorName - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

MT4 Expert Advisorで、複数のチャートバッファを持つカスタムインディケータを直列に呼び出した場合、再計算は呼び出しごとに行われるか、すべてのバッファが一度に計算され、コード内のインディケータに何度も適用でき、資源の浪費があることを期待しないようにアドバイスしてください。もう一つの興味深い問題は、コードが実行を停止しない(1ティックより長く実行する)にもかかわらず、インジケータの値が変化した場合、何が起こるかということです。

 
A100:

そして、ServiceDesk#1666680に直接書き込む。

機能の動作方法の変更をご検討ください

bool SymbolInfoTick( string symbol, MqlTick& tick );

Indicators (OnCalculateボディを含む) で、その説明に従って現在の価格を返すようにする。

という機能で言語を補完しています。

bool SymbolInfoTick_OnCalculate( string& symbol, MqlTick& tick ); //(*)

OnCalculate関数の 呼び出しの原因となったシンボルとティックを返すことになる。

または、代替案として (*) :OnCalculate の呼び出しに以下のパラメータを 追加します。

OnCalculate( ..., const string& symbol, const MqlTick& tick );
私はこの明白な無礼に参加します!))
 
Alexey Kozitsyn:
これは非常に少ないです。数時間測定する。いくつかの楽器で。
オーパ
Test_SymbolInfoTcick (Si-3.17,M1)       OnCalculate: ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!
Test_SymbolInfoTcick (Si-3.17,M1)       OnCalculate: Текущее время мс = 1486493406313 (2017.02.07 18:50:06), предыдущее = 1486493406315
Test_SymbolInfoTcick (Si-3.17,M1)       OnTick: ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!
Test_SymbolInfoTcick (Si-3.17,M1)       OnTick: Текущее время мс = 1486493406313 (2017.02.07 18:50:06), предыдущее = 1486493406315
Test_SymbolInfoTcick (Si-3.17,M1)       OnCalculate: ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!
Test_SymbolInfoTcick (Si-3.17,M1)       OnCalculate: Текущее время мс = 1486495281212 (2017.02.07 19:21:21), предыдущее = 1486495281213
Test_SymbolInfoTcick (Si-3.17,M1)       OnTick: ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!
Test_SymbolInfoTcick (Si-3.17,M1)       OnTick: Текущее время мс = 1486495281212 (2017.02.07 19:21:21), предыдущее = 1486495281213
OnTickにも問題あり。数時間のログによると、 OnCalculateは OnTickの3倍以上の頻度で問題が発生しています。OnTickの問題は常にOnCalculateで繰り返されますが、その逆はありません。
削除済み  
fxsaber:
おっと OnTickにも問題あり。数時間のログによると、
OnCalculateはOnTickの3倍以上の頻度で問題が 発生しています。同時にOnTick-problemは常にOnCalculateでも繰り返されますが、その逆はありません。
SymbolInfoTick() が非同期であることが判明...。
 
-Aleks-:

MT4 Expert Advisorで、複数のチャートバッファを持つカスタムインディケータを直列に呼び出した場合、再計算は呼び出しごとに行われるか、すべてのバッファが一度に計算され、コード内のインディケータに何度も適用でき、資源の浪費があることを期待しないようにアドバイスしてください。もう一つの興味深い問題は、コードが実行を停止しない(1ティックより長く実行する)にもかかわらず、インジケータの値が変化した場合、何が起こるかということです。

すべてのバッファを一度に計算します。静かに指標値を問い合わせる - 再計算はしない

MT4では、Expert Advisorから呼び出されたインジケータは、まさにこのExpert Advisorのフローとその履歴データのコピーで動作します。Expert Advisor をループさせることができますが、同時に OnTick 呼び出し時に計算されたインジケーターデータを受け取ることができます。RefreshRatesを呼び出すまで。RefreshRatesはExpert Advisorの履歴データを更新し、その後、そのすべてのデータはインジケータの 最初の呼び出しで 再計算されます。
 
Slawa:
すべてのバッファを一度に計算します。インジケータの値を静かに呼び出す - 再計算はしない

MT4では、Expert Advisorから呼び出されたインジケータは、まさにこのExpert Advisorのフローとその履歴データのコピーで動作します。Expert Advisor をループさせることができますが、同時に OnTick 呼び出し時に計算されたインジケーターデータを受け取ることができます。RefreshRatesを呼び出すまで。RefreshRatesはExpert Advisorの履歴データを更新し、その後、インジケータの 最初のコールで そのすべてのデータが再計算されます。

ご返信ありがとうございました

先ほど、MT5でZigZagインジケータが点滅していることにも興味を持ちました(MT4ではそのような効果はありません) - 非常に迷惑なのですが、どういうことなのでしょうか?