OrderSend()関数のバグ? - ページ 5

 
Sepulca:

静止画は100%動作します。ここでテストです。

そして、その結果。


まあ、以前と同じように使えるんですけどね...。変化なし!新しいバーを 開く機能だってあるんです。

bool isNewBar()
   {
      static datetime lastBar;                                   // Задаём переменную для времени открытия последнего бара
      datetime currBar;                                                  // Задаём переменную для времени открытия текущего бара
      currBar = iTime(Symbol(),PERIOD_M1,0);          // Находим время открытия текущего бара
      if(lastBar!=currBar)                                               // Если время открытия последнего бара не равно времени открытия текущего бара, то...
         {
            lastBar=currBar;
            return(true);
         }
      return(false);
   }

も正常に動作します。だから、私のコードが根拠なくピックアップされるのです。そして、その問いはおおむね正解だった。 どうやらテスターに不具合があるようで、測定値がすべて間違っているようです。M5では 何となくすっきりし、M15では H1も すでに似ている。

 
hoz:


まあ、今までと同じように使えるんですけどね...。変化なし!新しいバーオープン機能だってある。

も問題なく動作します。だから、私のコードは根拠なく批判されるのです。しかし、質問は全般的に正しかった。 どうやらテスターに不具合があるようで、測定値がずれているようです。M5では 何とかクリア、M15でも H 1はすでにひどい状態です。


ほとんど何も変わりませんが、すぐに if(lastBar<currBar) と書くことをお勧めします。さらにあなたの投稿を調べてみると、もしかしたらまた何か言うかもしれませんね。
 
hoz:


まあ、今までと同じように使えるんですけどね...。変化なし!新しいバーオープン機能だってある。

も問題なく動作します。だから、私のコードは根拠なく批判されるのです。しかし、質問は全般的に正しかった。 どうやらテスターに不具合があるようで、測定値がずれているようです。M5では 何とかきれいになっていますが、M15でも H 1はもうひどい状態です。



役立つかもしれません。start()関数が少し手直しされていますね。深く突っ込まなかったが、それでも。

int start()
{
   fastMa = iMA(NULL,i_TF,i_fastMaPeriod,0,MODE_EMA,MODE_CLOSE,1);
   slowMa = iMA(NULL,i_TF,i_slowMaPeriod,0,MODE_EMA,MODE_CLOSE,1);
   
 /*  Print("Bid = ", Bid);
   Print("Ask = ", Ask);
   Print("fastMa = ", fastMa);
   Print("i_thresholdFromMa * pt = ", i_thresholdFromMa * pt);
   */
// Отслеживание открытия нового бара
   static datetime lastBarTime = iTime(NULL, 0, 1));    // Время проведения последних рассчётов, изначально принимаем предыдущий бар
   
   if (lastBarTime < iTime(NULL, 0, 0))         // Если случился новый бар
 // Рассчёт сигнала 
    {
     if("На этом баре случилось что-то, что вынуждает ждать следуещего бара")
      {
       ..........// Выполняем действия открытия/закрытия или что-то там ещё...
       lastBarTime = iTime(NULL, 0, 0);              // На текущем баре все необходимые действия выполнены, ждём следуещего бара..
      }
     else
      {
       "Ничего не случилось, ждем до следуещего тика"
      }
    }
                                       // .. успешно выполнены
  return (0);
}
 
Sepulca:



役に立つかもしれません。start()関数が少し手直しされていますね。深く突っ込まなかったが、それでも。


ここでは、計算時間は直前のバーから取得されます。論理的とは思えません。現在のバーが必要です。
 
PapaYozh:

個人的には、機能しないスタティックに出会ったことがありません。

グラフで確認したい場合は、こちらがエキスパートの例です。

1.Expert Advisorを起動します。

2.TFを変更する。

3.ccが再び20にならないように注意してください。

 
hoz:


まあ、今までと同じように使えるんですけどね...。変化なし!新しいバーオープン機能だってある。

も問題なく動作します。だから、私のコードは根拠なく批判されるのです。しかし、質問は全般的に正しかった。 どうやらテスターに不具合があるようで、測定値がずれているようです。M5では 何とかきれいになっていますが、M15でも H 1はもうひどい状態です。

あなたの状況に関して。

時刻は一度初期化されており、EAを起動すると再度初期化されないため、M1からD1に切り替えた場合、チャート更新に約1日待たされる :(

 
tara:

あなたの状況に適用されます。

時刻は一度初期化されており、EAを起動すると再度初期化されないので、M1からD1に切り替えると、チャートが更新されるまで約1日待つ必要があります :(



Expert Advisorは、特定のTFで動作します。なぜ切り替える必要があるのでしょうか?
 
tara:

3.ccが再び20になっていないことを確認する。

これは、EAの特徴として記録されている。
 
TheXpert:
これはEAの特徴として文書化されているものです。


では、スタティックとは何でしょうか?どちらかというとファタリック...


ちなみに、どこに記録されているのでしょうか?

 
hoz:

Expert Advisorは、特定のTFで動作します。なぜ、急に切り替える必要があるのでしょうか?

いくつかのパラメータを変更するだけでいいのです。設定したTFの新しいバーの 最初のティックの後にのみ反応します。

しかし、あなた自身は、なぜExpert Advisorが高いTFで説明できないのか不思議に思っていましたね:)