Erros, bugs, perguntas - página 3047

 
Yury Lemeshev:
Boa tarde. Ajuda. SymbolSelect eSymbolExist funcionam de forma diferente?

Print(SymbolSelect( "EURUSD " ,true)); recebo um erro - true
Print(SymbolExist("EURUSD",false)); recebo erro - 'true' - variável esperada.

Ler cuidadosamente a documentação:SymbolExist

bool  SymbolExist(
   const string  name,    // имя символа
   bool&   is_custom      // признак пользовательского символа
   );


Eis como fica em código:

   Print(SymbolSelect("EURUSD",true));
   bool exist=false;
   Print(SymbolExist("EURUSD",exist));
Документация по MQL5: Получение рыночной информации / SymbolExist
Документация по MQL5: Получение рыночной информации / SymbolExist
  • www.mql5.com
SymbolExist - Получение рыночной информации - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Karputov:

Leia atentamente a documentação:SymbolExist


Eis como fica no código:

Obrigado, Vladimir

 

Pergunta sobre inicialização de indicadores pelo Consultor Especialista durante os testes em modo visual.

Se inicializo indicadores no OnInit() { } do Expert Advisor, então no testador visual o indicador normalmente não aparece e não é desenhado.

Ao mesmo tempo, no registo, a inicialização é passada e o manípulo é recebido. Sente-se que no modo visual o testador não tem tempo para fazer algo e o indicador não se cola ao gráfico.

Se inicializar indicadores em OnTick() { } da EA, o problema desaparece, mas cria uma escrita desnecessária, verificação e assim por diante.


Se eu descomentar o IndicatorInitialization() no OnTick e o comentar no OnInit, ele começa a funcionar.

int  TicksTesterIndicatorHandle = INVALID_HANDLE;
bool InitComplite=false;
int OnInit()
  {
   IndicatorInitialization();
   return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
   IndicatorRelease(TicksTesterIndicatorHandle);
  }

void OnTick()
  {
//if(!InitComplite)
//  {
//   IndicatorInitialization();
//  }
  }
//+------------------------------------------------------------------+
bool IndicatorInitialization()
  {
//---Получить хэндл индикатора TicksTesterIndicator
   TicksTesterIndicatorHandle=iCustom(NULL, _Period, "OnInit_TestIndicator");

//--- Нужно проверить, не были ли возвращены значения Invalid Handle
   if(TicksTesterIndicatorHandle<0)
     {
      Print("Ошибка при создании индикатора TicksTesterIndicator - номер ошибки: ",GetLastError(),"!!!");
      return(false);
     }
   else
     {
      Print("TicksTesterIndicator инициализирован, хэндл: ", TicksTesterIndicatorHandle);
      ArraySetAsSeries(Buf, true);
      InitComplite=true;
     }
   return(true);
  }
Arquivos anexados:
 

Continuação da históriados ficheirosmágicos:

Depois de o MetaEditor pendurar e depois reiniciar - este ficheiro é agora apresentado como um conjunto de texto vermelho, mas o mesmo bloco de notas abre-o normalmente (removido desnecessariamente)

Arquivos anexados:
main.txt  1 kb
 

Tarde,

Android MT5/MT4: Na janela de colocação de encomendas, as cores das linhas de carraças são misturadas. Também nos esquemas de cores da carta.

 

Olá a todos!

Não é possível ultrapassar o erro [preço inválido] ao colocar uma encomenda pendente. O problema é que tais erros estão a cair nas verificações padrão da publicação da EA. Não consigo olhar para os registos em conformidade para compreender qual é a razão. Não o reproduzi nos meus testes. Evidentemente, a complexidade é que não sei quais os parâmetros que o símbolo representa nas verificações padrão. Tentei usar o terminal MetaQuotes para o reproduzir. A ordem abre no mesmo lugar, mesmo ao mesmo preço e não há erro. Os preços são normalizados por CSymbolinfo::NormilizePrice(), há verificações de StopsLevel, nível de congelamento, para a correcção dos preços de encomendas pendentes, actualizo os dados de preços com cada verificação.

Relatório de verificação padrão

Talvez alguém conheça todos os casos em que um tal erro possa ocorrer em encomendas pendentes? A única de que me consigo lembrar é

  • Preço não normalizado
  • Preço acima/abaixo do preço de mercado para um determinado tipo de ordem
  • Nível de congelação (não tenho a certeza)
Terei todo o prazer em receber quaisquer dicas :)
 

Bom dia.

É possível fazer um corte de teste por parâmetros no testador?

Por exemplo, se for atingido um drawdown de 40% num teste, este pára e os recursos vão a favor dos testes seguintes.

 
Dmitry Homenkov:

Olá a todos!

Não é possível ultrapassar o erro [preço inválido] ao colocar uma encomenda pendente. O problema é que tais erros estão a cair nas verificações padrão da publicação da EA. Não consigo olhar para os registos em conformidade para compreender qual é a razão. Não o reproduzi nos meus testes. Evidentemente, a complexidade é que não sei quais os parâmetros que o símbolo representa nas verificações padrão. Tentei usar o terminal MetaQuotes para o reproduzir. A ordem abre no mesmo lugar, mesmo ao mesmo preço e não há erro. Os preços são normalizados por CSymbolinfo::NormilizePrice(), há verificações de StopsLevel, nível de congelamento, para a correcção dos preços de encomendas pendentes, actualizo os dados de preços com cada verificação.


Talvez alguém conheça todos os casos em que um tal erro possa ocorrer em encomendas pendentes? A única de que me consigo lembrar é

  • Preço não normalizado
  • Preço acima/abaixo do preço de mercado para um determinado tipo de ordem
  • Nível de congelação (não tenho a certeza)
Terei todo o prazer em receber quaisquer dicas :)

Artigo: Que testes é que um robô comercial tem de passar antes de ser publicado no Mercado?

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

É possível fazer um corte de teste por parâmetros no testador?

Por exemplo, se for atingido um drawdown de 40% num teste, este pára e são utilizados recursos para os testes seguintes.

Isto é possível para os seus EAs: precisa de contar o critério de saída dentro (se for pesado - no OnTimer), atingiu o limiar - TesterStop()/ExpertRemove().

 

Algo desnecessário.

Razão: