Errores, fallos, preguntas - página 2793

 
Alexey Viktorov:

No me había dado cuenta de que había un gif... Lo he mirado ahora, pero es tan rápido que no me da tiempo a entenderlo. Acabo de notar que no muestras la columna "Intercambio", que es exactamente lo que cuenta por separado en la historia. O explicar con palabras y cifras.

Me sorprende no haberme dado cuenta de la columna de intercambios desactivados.

Gracias, problema resuelto.

 
Andrey Khatimlianskii:

Me sorprende que yo mismo no me haya dado cuenta de la columna de intercambio desactivada.

Gracias, problema resuelto.

Hooray¡¡¡¡ ganamos.

 
Cuando se utiliza ChartSetSymbolPeriod la función OnDeinit devuelve 1 El programa ha sido eliminado del gráfico, mientras que lógicamente debería devolver 3 El símbolo operiodo del gráfico hasido cambiado
 

El fallo es que si se cumple la condición if(...), nada debería interrumpir el bucle

if( (vm + vs * (double)i) * tvp * 250.0 < ml ) { cv = vm + vs * (double)i; Print(i,": L/ML - ",cv," / ",ml); };


Aquí hay un vídeo



Este es el código completo del script

void OnStart()
  {
//---
   
   double tvp  = SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE_LOSS),
          vm   = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN),
          vs   = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP),
          ml   = AccountInfoDouble(ACCOUNT_EQUITY) * 0.015,
          cv   = -1.0,
          loss = 0.0;
   
   for(int i = 0; i < 20000; i++)
     {
      Print(i);
      //if( (vm + vs * (double)i) * tvp * 250.0 < ml ) { cv = vm + vs * (double)i; Print(i,": L/ML - ",cv," / ",ml); };
      /*loss = cv * tvp * 250.0;
      Print(NormalizeDouble(loss,2));
      Print(NormalizeDouble(ml,2)); Print(" ");
     */};
   
  }
 
Alexandr Sokolov:

El fallo es que si se cumple la condición if(...), nada debería interrumpir el bucle

Su código es similar a este

double a = 3;

for(int i = 0; a > 300; i++)
{
 if(a != 3)
  Print("Никогда такого не будет");
}
 

Mi indicador empezó a perder objetos gráficos por alguna razón y no los borra. Utilizo el borrado automático en el destructor de la clase. Yo lo llamo:

ObjectDelete(chartID, name);

Como resultado, obtengo un falso positivo. Llamo a GetLastError() y obtengo el error 4101 ("Errory chart identifier"). Supongamos. Comparo el chartID del objeto gráfico que se borra con el resultado de la función ChartID() y son exactamente iguales. ¿Cuál puede ser el motivo de que no se borre un objeto del gráfico y cómo puedo evitarlo?

 
Mihail Matkovskij:

Mi indicador ha empezado a perder objetos gráficos por alguna razón y no los borra. Utilizo el borrado automático en el destructor de la clase. Yo lo llamo:

Como resultado, obtengo un falso positivo. Llamo a GetLastError() y obtengo el error 4101 ("Errory chart identifier"). Supongamos. Comparo el chartID del objeto gráfico que se borra con el resultado de la función ChartID() y son exactamente iguales. ¿Cuál puede ser el motivo de que no se borre un objeto del gráfico y cómo puedo evitarlo?

Tengo problemas similares https://www.mql5.com/ru/forum/1111/page2785#comment_17002122

Quizás los creadores hagan algo al respecto )

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2020.06.22
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

la falta de comentarios aquí, como si dijera, el tema sólo es necesario para ventilar la negatividad de otro hallazgo desagradable )


#include <Arrays\ArrayObj.mqh>

class CPosition:public CObject
{
   public:
      string      meTicket;
      CPosition::CPosition(string inT)
      {this.meTicket = inT;}         
};

class CColl:public CArrayObj
{
public:
   string   meWrongProperty;
CPosition  *operator[](const int index) const { return (CPosition*)At(index);} 
};

class CCollOfColl:public CArrayObj
{
public:
CColl  *operator[](const int index) const { return (CColl*)At(index);} 
};



void OnStart()
{
   CCollOfColl lCOC;
   CColl       *lC;
   
   lC = new CColl();
   lC.Add(new CPosition("00"));
   lC.Add(new CPosition("01"));
   lCOC.Add(lC);
   
   lC = new CColl();
   lC.Add(new CPosition("10"));
   lC.Add(new CPosition("11"));
   
   lCOC.Add(lC);
   
   for(int i=0;i<lCOC.Total();i++)
     {
       for(int j=0;j<lCOC[i].Total();j++)
         {
          printf(lCOC[i][j].meTicket);
          lCOC[i][j].me
         }
     }
}


Creo que el editor debería haber sugerido meTicket en lugar de meWrongProperty )

 

Imagen 2530

En el tercer aditamento de la estructura, no aparecen inteligencias.

//+------------------------------------------------------------------+
//|                                                   TestStruct.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

//----------------------------------------------------
struct STRUCT_TIME_IN_FORCE
{
   string GTC; 
   string IOC;  
   string FOK; 
}; 
//----------------------------------------------------
struct STRUCT_SYMBOLS  
{
   string               symbol;                
   STRUCT_TIME_IN_FORCE timeInForce;            
};

//----------------------------------------------------
struct STRUCT_EXCH_INFO  
{
   string         timeZone;      
   long           serverTime;     
   STRUCT_SYMBOLS symbols[];  
};


//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   STRUCT_EXCH_INFO Info;
   ArrayResize(Info.symbols, 10);
   
   Info.symbols[0].timeInForce. //??? На третьем вложении не появляется интеллесенс

}
//+------------------------------------------------------------------+
 
Dmytryi Voitukhov:

Al comprobar en el mercado de EA, se produjeron errores con el cálculo del lote.

No hay errores en el probador.

El código es de lo más sencillo. ¿Cómo puede haber un error en él?

Leer el artículo¿Qué tipo de pruebas tiene que pasar un robot de trading antes de ser publicado en el mercado?

Какие проверки должен пройти торговый робот перед публикацией в Маркете
Какие проверки должен пройти торговый робот перед публикацией в Маркете
  • www.mql5.com
Все продукты Маркета перед публикацией проходят обязательную предварительную проверку, так как небольшая ошибка в логике советника или индикатора может привести к убыткам на торговом счете. Именно поэтому нами разработана серия базовых проверок, призванных обеспечить необходимый уровень качества продуктов Маркета. Если в процессе проверки...