インジケーターのないアドバイザー、そんなのあり? - ページ 9

 
Nikolai Semko:

SeriesInfoIntegerに 新しいバーが表示されるのはなぜですか?
私の記憶では、これは非常に遅い非同期関数です(何かが変わったのかもしれませんが、私は確認していません)。
原則として、すべての矛盾と遅さは、非同期関数を使用することの結果です。可能な限り避けてください。
何か別の方法で使ってみてください。例えば、iTimeやiBarsを経由して。
また、OnChartEvent自体は非同期であり、1秒間に64回以上、つまり最大でも15.625ミリ秒に1回しか呼び出されないことを忘れないでください。

SERIES_LASTBAR_DATE を介して新しいバーを取得する。

また、OnChartEvent自体は非同期であり、1秒間に64回以上、つまり最大でも15.625ミリ秒に1回しか呼び出されないことを忘れないでください。

とうしゃばんはいかぬ

 
Dmitry Fedoseev:

なあんだ

ディミトリ、参考までに教えてください。

 
Fast235:

SERIES_LASTBAR_DATE を介して新しいバーを取得する。

SERIES_LASTBAR_DATE は SeriesInfoInteger で使用される IDのみ である。

 
Fast235:

ディミトリ、推薦してくれるかな?

何ですか?もしあなたが指標の書き方を知らないなら、それが正しく機能しないとか、一般的な指標の使い方が悪い、間違っている、不合理であると主張しないでください。

 
Nikolai Semko:

SERIES_LASTBAR_DATE は SeriesInfoInteger で使用される Identifierのみで ある。


if(id>=CHARTEVENT_CUSTOM) // Цикл событий по символам
     {
      static CNewBar M1;
      const int number=id-CHARTEVENT_CUSTOM; //приведем в нормальный вид номер символа 0-7
      //--- проверим новый ли бар
      if(M1.NewBar(number,PERIOD_M1))
 
//+------------------------------------------------------------------+
//| Class Новый бар                                                  |
//+------------------------------------------------------------------+
class CNewBar
  {
protected:
   datetime          oldTime[TRADE_SYMBOLS];
public:
   bool              NewBar(int number,ENUM_TIMEFRAMES timeframe)
     {
      //--- создаем переменную newtime(тип время), присваиваем в нее из функции SeriesInfoInteger дату открытия последнего бара
      datetime newTime=datetime(SeriesInfoInteger(Symbols[number],timeframe,SERIES_LASTBAR_DATE));
      if(newTime!=oldTime[number] && newTime) // проверка на появление нового бара (новое время не равно старому и в newtime есть значение(true))
        {
         oldTime[number]=newTime; //обновим время прошлого бара
         return(true); // вернем функции NewBar true, появился новый бар
         //if(MQLInfoInteger(MQL_DEBUG))
         //   Print("Новый бар",newTime,"старый бар",oldTime); // в режиме отладки, будет выводится сообщение о значениях времен баров
        }
      //--- иначе,
      return(false); // нового бара еще нет
     };
   //---- конструктор класса
//                     CNewBar() {oldTime=NULL;}; // вызывается при создании Объекта, проинициализация тут не нужна, что-бы сразу прошел новый бар
  };
 
これは、NewBar - つまり、1回以上の試行が行われないことを意味します。
 
Dmitry Fedoseev:
このNewBarは、1回以上の試行がないことを意味します。

が何を意味しているかは不明です。

ご覧のように、文字番号が正しく渡され、新しいバークラスで正しく処理されます。
 
Fast235:


if(id>=CHARTEVENT_CUSTOM) // Цикл событий по символам


これは何でしょう?普通のインジケーターと何の関係があるんだ? 記事を読んで正しい方法を学ばずに捏造してるんだろ?だから、指標が「まともに動かない」という甘えがあるんです。とてもクリエイティブですね。

 
Fast235:

が何を意味しているかは不明です。

そして、あなたはそうしないでしょう。NewBarは診断です。