Errori, bug, domande - pagina 2826

 

Salve. Spero di aver scelto il ramo giusto.

Il tester visivo non crea quasi mai la finestra dell'indicatore utilizzato dall'EA, non vengono generati errori e tutto il resto funziona.

L'indicatore appare e viene reso solo se apro Sleep(1) nell'inizializzatore dell'EA.

Quale può essere il problema?

Non posso usare Sleep() perchéChartWindowFind(0, short_name) dell'indicatore personalizzato smette di funzionare sul lato sinistro del grafico.

Ecco un semplice esempio con cui ho un problema:

int MACDHandle=INVALID_HANDLE;
double macd_value[];

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   MACDHandle=iMACD(_Symbol,0,12,26,9,PRICE_CLOSE);
//Sleep(1);
   ArraySetAsSeries(macd_value, true);
//--- Нужно проверить, не были ли возвращены значения Invalid Handle
   if(MACDHandle<0)
     {
      Alert("Ошибка при создании индикатора MACD - номер ошибки: ",GetLastError(),"!!");
      return(-1);
     }
   else
     {
      Print("MACD инициализирован, handle: ", MACDHandle);
      return(INIT_SUCCEEDED);
     }
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- Освобождаем хэндлы индикаторов
   IndicatorRelease(MACDHandle);
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   CopyBuffer(MACDHandle, 0, 0, 1, macd_value);
   Print("macd_value: ", macd_value[0]);
  }
//+------------------------------------------------------------------+
mt5 build 2572
 
fxsaber:

Questo è il workaround che stavo considerando, grazie. Questo sembra essere l'unico modo per farlo.

Non so se è cambiato qualcosa, ma al momento di scrivere questo articolo questo codice funziona in modo universale:

FileOpen(filename, FILE_READ | FILE_TXT | FILE_ANSI, 0, CP_UTF8);
Синтаксический анализ MQL средствами MQL
Синтаксический анализ MQL средствами MQL
  • www.mql5.com
Суть программирования заключается в формализации и автоматизации неких процессов с помощью языков общего или специального назначения. Торговая платформа MetaTrader позволяет применять программирование для решения самых разных задач трейдера, благодаря встроенному языку MQL. И обычно процесс программирования строится на анализе и обработке...
 
Potete suggerire un modo per scoprire il numero di kernel in un EA in prova. Non c'è una cosa del genere in MQL API, ma penso che qualcuno abbia fatto un parsing del percorso dell'agente - non è chiaro come le cartelle unificate siano in Tester lì.
 
Stanislav Korotky:
Potete suggerire un modo per scoprire il numero di kernel in un EA in prova. Non c'è una cosa del genere in MQL API, ma penso che qualcuno abbia fatto un parsing del percorso dell'agente - non è chiaro come le cartelle unificate siano in Tester lì.

https://www.mql5.com/ru/forum/1111/page2660#comment_15183572

 

Grazie, farò una prova. Tuttavia, il numero di porta può anche essere di cinque cifre (e tecnicamente meno di 4 cifre, anche se sono considerate come riservate ai servizi standard), quindi correggerò il metodo di estrazione per me stesso.

 

Buona giornata!

Supponiamo che io esegua un EA in modalità debug mentre lo sviluppo. Il valore predefinito di una delle variabili di input è stato appena cambiato nel codice. Il suo valore di run-time, tuttavia, è inserito dal precedente set di input del tester di strategia.

La domanda è "perché diavolo sta succedendo questo? Al diavolo l'assenza di sincronizzazione, ma perché la modalità di debug dà la priorità al set rispetto al codice?

Как в MetaTrader 5 быстро разработать и отладить торговую стратегию
Как в MetaTrader 5 быстро разработать и отладить торговую стратегию
  • www.mql5.com
Скальперские автоматические системы по праву считаются вершиной алгоритмического трейдинга, но при этом они же являются и самыми сложными для написания кода. В этой статье мы покажем, как с помощью встроенных средств отладки и визуального тестирования строить стратегии, основанные на анализе поступающих тиков. Для выработки правил входа и...
 
Nikolai Karetnikov:

Buona giornata!

Supponiamo che io esegua un EA in modalità debug mentre lo sviluppo. Il valore predefinito di una delle variabili di input è stato appena cambiato nel codice. Il suo valore di run-time, tuttavia, è inserito dal precedente set di input del tester di strategia.

La domanda è "perché diavolo sta succedendo questo? Al diavolo la mancanza di sincronizzazione, ma perché la modalità debug dà la priorità al set rispetto al codice?

In breve, basta considerare questa caratteristica.

 

Condividi informazioni, qual è la dimensione dei file EX5 degli EA di trading da combattimento?

Ho(una logica di trading (senza segno) senza risorse esplicite o implicite(array statici) e senza GUI ~1250Kb (EX4 - 450Kb). Allo stesso tempo, la versione Tester (senza wrapper del mondo reale) è ~250Kb.

 
fxsaber:

Condividi info, qual è la dimensione del file EX5 di combattimento trading EAs?

150kb senza indicatori