エラー、バグ、質問 - ページ 1028

 
tol64:

では、a)なぜその物体に効果があるのか b)交換すると崩れ始めるのか

'0x00000008' - can't convert enum

全部ではなく、21行のうち18行だけですが...。

全部書き換えてみる、まだはっきりしない。1種類であるようです。

 
Silent:

では、a)なぜその物体に効果があるのか b)交換すると崩れ始めるのか

全部ではなく、21行のうち18行だけですが...。

全部書き換えてみる、まだはっきりしない。1種類であるようです。

ENUM_TIMEFRAMES current_period_tf=PERIOD_CURRENT;
   string n="";
   if(_Period==PERIOD_M1)  {current_period_tf=PERIOD_M1;};
   if(_Period==PERIOD_M2)  {current_period_tf=PERIOD_M2;};
   if(_Period==PERIOD_M3)  {current_period_tf=PERIOD_M3;};
   if(_Period==PERIOD_M4)  {current_period_tf=PERIOD_M4;};
   if(_Period==PERIOD_M5)  {current_period_tf=PERIOD_M5;};
   if(_Period==PERIOD_M6)  {current_period_tf=PERIOD_M6;};
   if(_Period==PERIOD_M10) {current_period_tf=PERIOD_M10;};
   if(_Period==PERIOD_M12) {current_period_tf=PERIOD_M12;};
   if(_Period==PERIOD_M15) {current_period_tf=PERIOD_M15;};
   if(_Period==PERIOD_M20) {current_period_tf=PERIOD_M20;};
   if(_Period==PERIOD_M30) {current_period_tf=PERIOD_M30;};
   if(_Period==PERIOD_H1)  {current_period_tf=PERIOD_H1;};
   if(_Period==PERIOD_H2)  {current_period_tf=PERIOD_H2;};
   if(_Period==PERIOD_H3)  {current_period_tf=PERIOD_H3;};
   if(_Period==PERIOD_H4)  {current_period_tf=PERIOD_H4;};
   if(_Period==PERIOD_H6)  {current_period_tf=PERIOD_H6;};
   if(_Period==PERIOD_H8)  {current_period_tf=PERIOD_H8;};
   if(_Period==PERIOD_H12) {current_period_tf=PERIOD_H12;};
   if(_Period==PERIOD_D1)  {current_period_tf=PERIOD_D1;};
   if(_Period==PERIOD_W1)  {current_period_tf=PERIOD_D1;};
   if(_Period==PERIOD_MN1) {current_period_tf=PERIOD_MN1;};
   ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);
   ObjectSetInteger(0,n,OBJPROP_TIMEFRAMES,current_period_tf);
   ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);
 
tol64:
はい、そうです、ありがとうございます、カチカチです )。
 
Silent:
はい、そうです、ありがとうございます、カチカチです )。

今度はこんな風にやってみてください。

   string n="";
   ENUM_TIMEFRAMES current_period_tf=_Period;
   ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);
   ObjectSetInteger(0,n,OBJPROP_TIMEFRAMES,current_period_tf);
   ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);

 
MetaDriver:

今度はこんな風にやってみてください。

試してみたら、M1から自動で戻れない。上記のように列挙すると

if(_Period==PERIOD_M1)  {current_period_tf=PERIOD_M1;};

たまに戻るのはいいのですが、一気に_Periodを割り当てるとM1に落ちてそのままです。

インジケーターの末尾に移動してもupdが保存されない

     if(_Period==PERIOD_M1) {ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);};

なぜ詰まるのか、その原因がわからない。

 

これは、(ティックがないときの出力で)同期の代わりに松葉づえを打つことです。戦車のように、エラーが発生した→M1に切り替えて戻るという発想です。

   if(_LastError!=0)
     {
      ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);
      ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);
     };
   if(_LastError==0)
     {
      ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);
     };
// и контрольный
   if(_Period==PERIOD_M1) {ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);};
は、M1からだけ、非常に常に解放されません。
 
Silent:

試したところ、M1からは自動で戻れない。上記のように列挙すると

たまになら戻れますが、一気に_Periodを割り当てると、M1に落ちてそのままです。

あなたのケースは、小さなスリップで治ります。

   string n="";
   ENUM_TIMEFRAMES current_period_tf=_Period;
   ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);
   Sleep(150);
   ObjectSetInteger(0,n,OBJPROP_TIMEFRAMES,current_period_tf);
   ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);

私のはもっとひどいです。 (ちなみに、あなたのケースは以前はSlipなしでも動いていたのに、数週間前から動かなくなりました)

同じスキームが他の(現在ではない)チャートでクリープスリップ なしに動作しなくなった。

void cChartReInit::Run() // Scanning all charts and reinit if button is pushed
  {
   for(long i=ChartNext(0);i>0;i=ChartNext(i))
    {
     if(!ChartGetInteger(i,CHART_WINDOW_IS_VISIBLE)) continue;
     long wc = ChartGetInteger(i,CHART_WINDOWS_TOTAL);
     long wi = ObjectFind(i, pButtonName);
     if(--wc!=wi) { CreateReinitButton(i); ChartRedraw(i); continue;}
     if(ObjectGetInteger(i,pButtonName,OBJPROP_STATE))
       {
        ObjectSetInteger(i,pButtonName,OBJPROP_STATE,false);
        ENUM_TIMEFRAMES cp = ChartPeriod(i);
        Sleep(1350);  // раньше это было не нужно
        ChartSetSymbolPeriod(i, ChartSymbol(i), ((cp==PERIOD_M1) ? PERIOD_M5 : PERIOD_M1));
        Sleep(1350);  // раньше это было не нужно
        ChartSetSymbolPeriod(i, ChartSymbol(i), cp);
       }
     ChartRedraw(i);
    } // for(Charts)
  }
コードはこちらからhttps://www.mql5.com/ru/code/224
ChartReinit
ChartReinit
  • 投票: 7
  • 2010.11.29
  • Vladimir Gomonov
  • www.mql5.com
Кнопочная переинициализация чарта с перерасчетом всех индикаторов, а также простенький и прозрачный объектно-ориентированный пример обработки всех чартов из одного эксперта.
 
MetaDriver:

あなたのケースは、小さなスリップで処理されます。

私のはもっとひどいです。 (ちなみに、Slipなしのケースは以前は使えたのですが、数週間前に止めました。)

しかし、他の(現在ではない)チャートでは、同じ方式がクリープスリップ せずに機能しなくなった。

コードはこちらからhttps://www.mql5.com/ru/code/224/10323

スリップはインジケータでは機能しませんよね?

404ページスローへのリンク

 
Silent:

スリップはインジケータでは機能しないのですね。

404ページのリンクです。

そうですね。

何かコストのかかるループを試してみてください...

タイマーでもいいんですけど、そういうの全部嫌なんですよ。

// リンクの修正 最初は "my codes "から、今はkodobazaの共通の入り口から。 // これでうまくいくか? それとも、公開リンクを得るには、ログインを解除する必要があるのか?

 
MetaDriver:

ああ :(

何かコストのかかるサイクルを試してみるか...。

タイマーでできるけど、こんなの嫌だ。

他のタイムフレームに切り替えるのではなく、ChartRedrawで OnTimerを付けてみたのですが、反応はなく、更新はされるのですが、エラーがハングアップします。

もう一回見てみるよ。

アップデートには、このすべてがスレッドに関係しているのではないかという疑念があります。どこかで一致せず、一方はエラーでハングアップし、もう一方は勝手にカチカチ音がする。しかし、Ras-synchronizationは。また、完全な再計算を行うコマンドはありません。

も試したことがあります。

#define   RESET 0

   if(_LastError!=0)
     {
     return(RESET);
     };
が、全く機能していないようです。コドバセで撮ったけど。