ロボットコードの一部をインジケータに保持する意味があるのはどんな場合ですか? - ページ 23

 
Vinin:

通信途絶時のEMA値を誤って取得している。最後に算出されたものとする。しかし、これは間違っています。その結果、この関数はn本のバーに対してではなく、もっと多くのバーに対して不正に動作することになります。値が保存されている場合は、もちろん

どうやら、コードに入りきらなかったようです。とコメントした。

// Комментирую для такого случая. Крайний известный M1-бар был в 14:00.
// Произошел разрыв связи на 10 минут после чего происходит вызов start.
void start()
{
  EMA = GetEMA();
  
  return;  
}

double GetEMA()
{
  static int PrevTime = 0;
  
  if (PrevTime == Time[0]) // Выпонится, когда история за крайние 10 минут подгрузится.
                           // Если истории не было, например, сутки, то может произойти ошибка.
                           // Но мы говорим про РЕАЛ, т.е. адекватность человека.
                           // Т.к. если нет связи сутки, советник оставлять нельзя.
    return(EMA);

  int i = iBarShift(Symbol(), Period(), PrevTime) - 1; // Здесь мы получим номер бара в 14:01.

  PrevTime = Time[0]; // запомним текущее время 14:10
  
// Производим расчет текущего EMA с учетом полученных 10 баров.
  while (i >= 0)
  {
    EMA = EMA * Alpha + (1 - Alpha) * GetPrice(i);
    
    i--;
  }
  
  return(EMA);
} 
 
誤差と妥当性というのは、「オールインワン」の場合だけでなく、「インジケーター付き」の場合にも当てはまるという意味です。
 
hrenfx:
誤差と妥当性というのは、「オールインワン」の場合だけでなく、「インジケーター付き」の場合にも適用できる、という意味です。


会話が成立しない、どうやらちょっとした批判を聞きたくない人がいるようだ。

このブランチは無駄であると結論付けられる

 
Vinin:


私は会話をしていない、どうやら誰かが少しの批判を聞きたくないようだ。

このスレッドは役に立たないという結論になるかもしれない

いいか、屁理屈をこねる必要はないんだ。あなたのコードにコメントもしました。何が気に入らないのか?10分の隙間の例では、誤差が生じると思いますか?私はそれを明確にしました。エラーがあるというからには、どこがエラーなのか見るわけです。じゃあ、ダラダラしてないで、どこにあるのか見せてよ。すでに特定されていますね。

追伸:失速したのは2人目ですね。そして、私が理解できないと言わないでください。どこが間違いなのか、はっきり教えてください。間違っていたら、認めます。何の役にも立たない。

 
hrenfx:

ほら、言い逃れする必要はないんだ。あなたのコードにコメントもしました。何が気に入らないのか?私があげた10分のギャップの例でエラーが発生すると思っているのか?私のほうは、かなり具体的に説明しました。エラーがあるというからには、どこがエラーなのか見るわけです。じゃあ、ダラダラしてないで、どこにあるのか見せてよ。すでに特定されていますね。

追伸:失速したのは2人目ですね。そして、私が理解できないと言わないでください。どこが間違いなのか、はっきり教えてください。間違っていたら、認めます。何の役にも立たない。


考えたくないだけの人がいる。作れないし、作りたくもない。
 
Vinin:

ただ、考えたくない人がいるだけです。無理強いはできないし、したくもない。


クソッタレ、誰も詳しく説明してない。また水が出てきた。何人かの人(私はMT4+MQL4をよく知っています)が、私のコードはエラーで動くと言いますが、具体的な例証を示すことができません(私は何度かそれを求めました)。しかも、これをたった10行のコードで。

Integerのコードと私のコードを別スレッドにして、MQL4プログラマーにコードのどこがおかしいか聞いてみるのもいいかもしれません。そして、司会者であるあなたは、洪水が起きないようにすること。この場合、コードは見つかりもしない。

MQL4コミュニティにも役立つと思います。

 
hrenfx:

いいか、屁理屈をこねる必要はないんだ。コードにコメントも返しましたよ。何が気に入らないのか?

価格が先になる。そうすれば、バーがやってくる。バーが到着する頃には、「一応」処理されているが、実は処理された時には存在しなかったので、勘定に入らないということになる。

言うのは2回目です。

 
TheXpert:

価格が先になる。そうすれば、バーがやってくる。バーが届くころには「なんとなく」加工されているが、実は加工の時点で入手できなかったため、考慮されないのである。

はい、価格は最初に到着しますが、新しいバーが あるまでずっとif (PrevTime == Time[0]) の条件がトリガーされます。

過去10分間ページングを行わず、新しいバーが到着した場合、インジケータを搭載したEAは、履歴ページングの前に誤ったEMA値を受信することを理解してください。その結果、EAが何でもできるようになる。
 
hrenfx:


げっ、誰も凝っていない。また水か。何人かの人(MT4+MQL4をよく知っている人)が、私のコードはエラーで動くと言いますが、具体的な例題を出すことはできません(私は何度かそれを求めました)。しかも、これをたった10行のコードで。

Integerのコードと私のコードを別スレッドにして、MQL4プログラマーにコードのどこがおかしいのか聞いてみてはいかがでしょうか?そして、司会者であるあなたは、洪水が起きないようにすること。この場合、コードは見つかりもしない。

MQL4コミュニティにも役立つと思います。


私は、実行可能なアルゴリズムのロジックを提供しました。うまくいかなかった。通じなくてごめんね。
 
hrenfx:
確かに価格は先に来ますが、新しいバーができるまでは、if (PrevTime == Time[0]) という条件がずっと発動しています。
いいえ、価格は新しいバーで 表示されます。これは、端子の電源を入れたときにはっきりと確認できます。最初のうちはバーが点のように見えます。