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

 

ひょっとして歴史はバウンドするのか?

いつも1つのシンボルだけなのか、GBPUSDでもそうなのか?

ビルドとは?どのサーバー?

 

ヒストリーバウンドは過去のものです。

simbol1でもsimbol2でも全ての通貨ペアでダメです。

ビルド370、デモ口座(アルパリデモ)


私は一人のトレーダーしか持っていない(上のスクリーンショットより)オーバーシュートがあることに注目したいです。

上のスクリーンショットで、1つのインジケータを残すと、再描画があまり目立たなくなることに注目したいです。

何度か再描画する可能性があります。

パソコンが遅いのかと思ったが、2コアのパソコンでも同じで、チャートがスクロールしない

おそらく、アイドルタイムか何かを待っているのでは?

夕方、6つの核でテストします!

また、他の同じような七面鳥では何も起きていないことを指摘しておきたいと思います。

複雑な計算のせいではないはずです。ターンテーブルもシンプルに

と、Open価格で動作します。

 
alexluek:

助けてインジケータは正常に動作し、すべて表示、計算されますが

新しいティックが来るとリセットされ、ラインが再計算されます。

通信断の時に定期的に出るんです。再接続後、端末が指示値を再計算しますが、再計算には時間がかかります。参考資料より

OnCalculate()が返す値と2番目の入力パラメータprev_calculatedの関係に注目する必要がある。こ 関数が呼び出されたときのパラメータ prev_calculated には 前回の 呼び出し 時に OnCalculate() が 返した 値が格納 される。 これにより、この関数の前回の呼び出し以降に変更されていないバーについて、計算を繰り返すことを避けるために、カスタム・インジケータを 計算するための経済的なアルゴリズムが可能になります。

そのためには、通常、現在の関数呼び出しのバーの数を含む rates_total パラメータの値を返せば十分である。OnCalculate()の最後の呼び出し以降に価格データが変更された場合(より深い履歴が読み込まれたか、履歴の空白が埋められたか)、入力パラメータprev_calculatedの値はターミナルによってゼロに設定 されます。

あなたの状況がどうなのかはわかりませんが、私自身は、このような行動を「歴史の穴埋め」と説明しています。あるいは、ティックの到着ごとに全範囲の値を再計算する、非効率的な動作をするインジケータかもしれません。

 

接続性の低下やティックの引きすぎもなく、大きなTFほどレアだった。

そして、開始日から終了日までの計算方法(3つあることがわかった)なし

おそらくそうなる(すべてのバーを再計算する)のでしょうが、まだ正確ではないので、確認方法がわかりません。

とはいえ、あくまで思いつきなので、確認してみましょう...。

もしかしたら、別のアプローチで解消できるかもしれない...。

 
alexluek:

接続性の低下やティックの引きすぎもなく、大きなTFほどレアだった。

そして、開始日から終了日までの計算方法(3つあることがわかった)なし

おそらくそうなる(すべてのバーを再計算する)のでしょうが、まだ正確ではないので、確認方法がわかりません。

とはいえ、あくまで思いつきなので、確認してみましょう...。

もしかしたら、別のアプローチで解消できるかもしれない...。

もちろん、アプローチもあります。If(prev_calculated==0),全ての バーについて初期計算を行う。その後、新しいティックごとに(0 < prev_calculated < rates_total の場合)、最後に現れたバーに対してのみ for(int i=prev_calculated-1;i<rates_total;i++) といった計算をします。
 
Yedelkin:
もちろん、アプローチもあります。If(prev_calculated==0),全ての バーについて初期計算を行う。その後、新しいティックごとに(0 < prev_calculated < rates_total の場合)、最後に現れたバーに対してのみ for(int i=prev_calculated-1;i<rates_total;i++) というタイプの計算を実行します。
いいアイデアですね~、やってみましょう、答えてみましょうありがとうございました。
 

現在のチャートのタイムフレーム値を文字 列として取得したい。こんな風に書いています。

ENUM_TIMEFRAMES period1=Period();
string periodStr;
periodStr=PeriodStr(period1);

コンパイラが'PeriodStr'-関数が定義されていないと言うのですが・・・。

何が言いたいの?同僚、助けてください :-)

ヘルプにそのような機能があります。

期間

ENUM_TIMEFRAMES列挙 型の値を文字列に変換する。

stringPeriodStr(
int val// value
)

Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Перечисления - Документация по MQL5
 

開発者の皆様、オーバーロードされた関数の曖昧な呼び出しとは何か教えてください(コンパイラが悪態をついているのはこのことです)。

set' - オーバーロードされた関数へのあいまいな呼び出し。

class CA
  {
public:
   void set(int i,int j,long n){Print("перегрузка long");};
   void set(int i,int j,int n){Print("перегрузка int");};
  };

void OnStart()
  {
//---
   CA a;
   int Int=3;
   long Long=4;
   a.set(1,2,Int);
   a.set(1,2,Long);
  }

HH 第1、第2パラメーターの定数を変数型intに 置き換えれば、悪態が止まるという方法がわかりました。

しかし、私はコンパイラのロジックを理解していません。最初の2つのパラメータは、すべてのオーバーロードで同じであり、デフォルトのパラメータはありません。

では、なぜコンパイラは誓うのか、呼び出しの曖昧さは何なのか。

Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Типы char, short, int и long - Документация по MQL5
 
denkir:

現在のチャートのタイムフレーム値を文字 列として取得したい。こんな風に書いています。

コンパイラが'PeriodStr'-関数が定義されていないと言うのですが・・・。

どうしたんだ?同僚、助けてください :-)

ほら、ヘルプファイルにはこんな機能がある。

期間

ENUM_TIMEFRAMESの列挙 値を文字列に変換する。

stringPeriodStr(
int val// value
)

不思議なことに、このような機能(PeriodStr)はハンドブックに載って いませんでした。
 
denkir:

現在のチャートのタイムフレーム値を文字 列として取得したい。こんな風に書いています。

コンパイラが'PeriodStr'-関数が定義されていないと言うのですが・・・。

何が問題なのか?同僚、助けてください :-)

ヘルプにそのような機能があります。

期間

ENUM_TIMEFRAMES列挙 型の値を文字列に変換する。

stringPeriodStr(
int val// value
)

これはクラスメソッドです

https://www.mql5.com/ru/docs/standardlibrary/technicalindicators/cindicator

#include<IndicatorsIndicator.mqh>