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

 
Integer:


それもありましたね。ポルターガイストや天井から水が垂れてくるのと全く同じ論法です。

見逃したところを繰り返し(コピーペーストでOK)よければ。そうでなければ、何を言っているのかまったくわからない。私のコードがREALに適していないと感じた場合。特に賢い人だけがわかるように、理由を明記してください。自分の考えをはっきり言える。
 
hrenfx:
もしよろしければ、私が見落としていることを繰り返し(コピーペーストでも構いません)教えてください。そうでないと、まったく話が通じないんです。もし、私のコードがREALに適していないと思われるのであれば。特に賢い人だけがわかるように、理由を明記してください。自分の思っていることを明確にできる 。

デジャヴュ!19ページの冒頭からお読みいただけます。絶対的な繰り返し。breakや return演算 子も忘れずに、またループの数もあらかじめ決めておきましょう。
 
読ませていただきましたが、なぜ私のEAがREALに適さないと判断されたのか、まだ理解できていません。書いてあるんだから読み直せ」と言い切るか、具体的に(このスレッドで何度か呼びかけた)自分の意見を主張するかです。今のところ、よくわからない理由で水だけです。
 
hrenfx:
読ませていただきましたが、なぜ私のEAがREALに適さないと判断されたのか、まだ理解できていません。書いてあるんだから読み直せ」と言い切るか、具体的に(このスレッドで何度か呼びかけた)自分の意見を主張するかです。今のところ、よくわからない理由で水だけです。

この質問があったのですが、私は答えたのです。その理由の説明もあった。では、19ページ&while(true)...を見てみましょう。
 
hrenfx:
それを読むと、なぜ私のExpert AdvisorがREALに適していないと思うのか、まだ理解できません。Expert AdvisorはREALには向かない。 書いてあるんだから読み直せ」という誤りに走るもよし、具体的に(このスレッドで何度か呼びかけた)自分の意見を主張するもよし。今のところ、よくわからない理由で水だけです。


正しく計算するためには、IndicatorCounted()のアナログを使用する必要があります。Barsと関数(変数)の値の差が1より大きい場合は、完全な再計算をしなければならない。

差が1の場合、前のバーを計算し、新しいバーを計算する。0の場合、現在のバーのみ再計算する

 
ただし、インジケータの計算を EAに転送する際に、まだ一つ問題があります。このとき、5本前、10本前、あるいはもっと前の値を参照する必要があります。この問題は、いくつかの複雑な問題を解決することができます。しかし、それは解決することができます
 
Vinin:


IndicatorCounted()の類似品を使って、正しく計算する必要があります。Barsと関数(変数)の値の差が1より大きい場合、完全な再計算を行う必要があります。

差が1の場合、前のバーを計算し、新しいバーを計算する。0 の場合、現在のバーの再計算のみ

このコードに 何か気に入らない点がありますか?

double GetEMA()
{
  static int PrevTime = 0;
  
  if (PrevTime == Time[0])
    return(EMA);

  int i = iBarShift(Symbol(), Period(), PrevTime) - 1;  

  PrevTime = Time[0];    
  
  while (i >= 0)
  {
    EMA = EMA * Alpha + (1 - Alpha) * GetPrice(i);
    
    i--;
  }
  
  return(EMA);
} 
 
hrenfx:

このコードに 何か気に入らない点がありますか?


もちろん、好きなわけではありません。エラーもカウントされる
 
もっと具体的にお願いします。
 
hrenfx:
もっと具体的にお願いします。

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