indx = rates_total-prev_calculated; //было indx = rates_total-prev_calculated-1; - что чаще всего < 0
if(prev_calculated<1) indx=rates_total-2; //было if(indx<0) indx=0; - то есть всегда i=0 а цикл-то до 1, на i=0 цикл никогда не просчитается
sm_bar = (Close[1] - Open[rates_total-1])/rates_total; //индекс не может быть [rates_total]
i = indx;
k = 0;
ekviti[rates_total-1] = 0; //индекс не может быть [rates_total]
while(i >= 0)
{
if(bar_n == TimeDayOfWeek(iTime(NULL,0,i)))
{
ekviti[i] = ekviti[i+1] + close[i] - open[i] - sm_bar;
k++;
}
else ekviti[i] = ekviti[i + 1];
i--;
}
ありがとうございます、勉強になりました、直しました。
また、(最適化を有効にしない)テスト時には、なぜすべてのコアに負荷をかける必要があるのでしょうか?結局、可視化を伴うテストなら急がないし、可視化を伴わないテストなら最近のコンピュータは1コアでひまわりのようにやってくれる。
まあ、私はすべてのコアが可視化せずにテストで動作する場合は、さらに高速になると思います、私はちょうど現代のプロセッサで静かに動作することを感じる私は速度が不足している、おそらく多くのコードの正しさに依存し、それがうまく最適化されている場合は、すべてが速く、長い場合ではありません。
GPUやビデオカードのOpenCLはテストのスピードに影響するのでしょうか、それともコードを書くためだけ なのでしょうか?
OpenCLがテスト速度に何らかの影響を与えるのか、それともコードを書くためだけのものなのか、もしコードがOpenCLで書かれていれば、テストモードではずっと速く動くでしょうし、コードだけであれば、 教えてください。
私の理解では、MT5のOpenCLは「重い」グラフィックスを扱うのに役立ち、ビデオカードはテストと最適化に関与しません。そうでなければ、誰もがずっと前にビットコインのようにエージェントサービスで採掘して いたでしょう。
そうであれば残念です、全てを巻き込んで欲しいです)
私はちょうどそのサイトmt5でロボットコードを見て、それをダウンロードし、テストを実行し、それは非常に長い時間がかかった、特にすべてのティックで、それは1つではなく、すべてのコアを使用する方が良いだろうが、それはそのサイトに投稿されたコードの大半は間違って書かれていると思われる、テストはとても長い理由です、私のプロセッサは確かにインテルではないが、8コア4000GHzは飛ぶはずですが、私はノートのテスターに座って、それはmt5がそうである理由罪なら悲しいことでしょ うね。
変数はそこにあるべきで、他のものではありません。
どこが間違いなのか教えてください。もう頭が痛いです。(
インジケータウィンドウが-999999からハングアップする...から+9999...99
インジケータウィンドウが-999999からハングアップする...から+9999...99
iの 値が間違ってカウントされ、ループが計算されることはなく、また、数カ所で配列の 外に出口ができます(理由は赤で強調されています)。
この方がいい。