Erros, bugs, perguntas - página 2793

 
Alexey Viktorov:

Nem sequer reparei que havia um dom... Olhei para ele agora, mas é tão rápido que não tenho tempo para o compreender. Acabou de notar que não se mostra a coluna "Swap", que é exactamente o que conta separadamente na história. Ou explicar em palavras e números.

Surpreendido por eu próprio não ter reparado na coluna das trocas de deficientes.

Obrigado, emissão autorizada.

 
Andrey Khatimlianskii:

Estou surpreendido por não ter reparado na coluna de troca de deficientes.

Obrigado, emissão autorizada.

Hooray¡¡¡¡ ganhámos.

 
Ao utilizar ChartSetSymbolPeriod a função OnDeinit retorna 1 O programa foi removido do gráfico, enquanto que logicamente deve retornar 3 O símbolo ouperíodo do gráficofoi alterado
 

O bug é que se a condição de if(...) for cumprida, nada deve interromper o laço

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


Aqui está um vídeo



Aqui está o código completo do guião

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:

O bug é que se a condição de if(...) for cumprida, nada deve interromper o laço

O seu código é semelhante a este

double a = 3;

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

O meu indicador começou a perder objectos gráficos por alguma razão e não os apaga. Utilizo a eliminação automática no destruidor de classes. Eu chamo-lhe:

ObjectDelete(chartID, name);

Como resultado, recebo um falso positivo. Chamo GetLastError() e recebo o erro 4101 ("Errory chart identifier"). Suponha-se. Comparo o chartID do objecto gráfico que está a ser eliminado com o resultado da função ChartID() e eles são exactamente os mesmos. Qual pode ser a razão para não apagar um objecto do gráfico e como posso contorná-lo?

 
Mihail Matkovskij:

O meu indicador começou a perder objectos gráficos por alguma razão e não os apaga. Utilizo a eliminação automática no destruidor de classes. Eu chamo-lhe:

Como resultado, recebo um falso positivo. Chamo GetLastError() e recebo o erro 4101 ("Errory chart identifier"). Suponha-se. Comparo o chartID do objecto gráfico que está a ser eliminado com o resultado da função ChartID() e eles são exactamente os mesmos. Qual pode ser a razão para não apagar um objecto do gráfico e como posso contorná-lo?

Tenho problemas semelhantes https://www.mql5.com/ru/forum/1111/page2785#comment_17002122

Talvez os criadores façam algo a esse respeito )

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

a falta de qualquer feedback aqui, como que para dizer, o tópico só é necessário para descarregar a negatividade de outra descoberta desagradável )


#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
         }
     }
}


Penso que o editor deveria ter sugerido meTicket em vez de mePropriedade Errada )

 

Bild 2530

No terceiro anexo da estrutura, não aparecem inteligências.

//+------------------------------------------------------------------+
//|                                                   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:

Ao verificar no mercado da EA, ocorreram erros no cálculo do lote.

Não há erros no testador.

O código é tão simples quanto possível. Como pode haver um erro?

Ler artigoQue testes é que um robô comercial tem de passar antes de ser publicado no Mercado

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