Errores, fallos, preguntas - página 1028

 
tol64:

Entonces a) por qué funciona para el objeto b) si lo sustituyes, empieza a desmoronarse

'0x00000008' - can't convert enum

No todas, sólo 18 de las 21 líneas...

Intentaré reescribirlos todos, todavía no está claro. Parece ser un tipo.

 
Silent:

Entonces a) por qué funciona para el objeto b) si lo sustituyes, empieza a desmoronarse

No todas, sólo 18 de las 21 líneas...

Intentaré reescribirlos todos, todavía no está claro. Parece ser un tipo.

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:
Sí, lo hice, gracias, es un tic-tac ).
 
Silent:
Sí, lo hice, gracias, es un tic-tac ).

Ahora inténtalo así:

   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:

Ahora inténtalo así:

Probado, no puedo volver de M1 automáticamente. Si enumero como arriba

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

Puedo volver de vez en cuando, pero si asigno _Periodo de una vez, caigo a M1 y me quedo ahí.

upd no se guarda aunque me haya movido al final del indicador

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

No sé por qué se atasca, estoy intentando averiguarlo.

 

Esto es una muleta en lugar de la sincronización (en una salida cuando no hay ticks). La idea es como un tanque - hay un error - cambiar a M1 y volver.

   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);};
sólo de M1 no siempre se libera.
 
Silent:

Lo he intentado, desde M1 no puedo volver automáticamente. Si enumero como arriba

Puedo volver de vez en cuando, pero si asigno _Periodo de una vez, caigo a M1 y me quedo ahí.

Su caso se cura con un pequeño resbalón.

   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);

El mío es peor. (Por cierto, su caso solía funcionar sin Slip, dejó de funcionar hace unas semanas).

El mismo esquema dejó de funcionar sin resbalones espeluznantes en otras cartas (no actuales):

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)
  }
Código desde aquí: https://www.mql5.com/ru/code/224
ChartReinit
ChartReinit
  • votos: 7
  • 2010.11.29
  • Vladimir Gomonov
  • www.mql5.com
Кнопочная переинициализация чарта с перерасчетом всех индикаторов, а также простенький и прозрачный объектно-ориентированный пример обработки всех чартов из одного эксперта.
 
MetaDriver:

Su caso se trata con un pequeño resbalón.

El mío es peor. (Por cierto, tu caso sin Slip solía funcionar, dejó de hacerlo hace unas semanas).

Pero el mismo esquema dejó de funcionar sin resbalones espeluznantes en otras cartas (no actuales):

Código desde aquí: https://www.mql5.com/ru/code/224/10323

El deslizamiento no funciona en los indicadores, ¿verdad?

Enlace a los lanzamientos de la página 404

 
Silent:

El deslizamiento no funciona en los indicadores, ¿verdad?

Es un enlace de página 404.

Sí.

Intenta algún tipo de bucle costoso...

Podrías hacerlo con un temporizador, pero no me gusta todo eso.

// Corregido el enlace. Primero a través de "mis códigos", ahora a través de un login común en kodobaza. // ¿Funciona ahora? ¿O tengo que desloguearme para obtener un enlace público?

 
MetaDriver:

Sí. :(

Intenta algún tipo de ciclo costoso...

Puedo hacerlo a través de un temporizador, pero no me gusta todo esto.

Intenté adjuntar OnTimer con ChartRedraw en lugar de cambiar a otro marco de tiempo - no hay respuesta, se actualiza, pero el error se cuelga.

Voy a echar otro vistazo.

Update tiene la sospecha de que todo esto está relacionado con los hilos. En algún lugar, no coinciden, uno se cuelga con un error, el otro tickea solo. Sin embargo, la sincronización de Ras. Y no hay ningún comando para el recálculo completo.

También he probado

#define   RESET 0

   if(_LastError!=0)
     {
     return(RESET);
     };
parece que no funciona en absoluto. Sin embargo, lo tomé en el kodobase.
Razón de la queja: