Erreurs, bugs, questions - page 2439

 

Dans une formule d'outil synthétique, une erreur "Unknown parsing error" est générée si le nom du caractère commence par (ou contient) un point.


 
Nikolai Semko:

Dans une formule d'outil synthétique, une erreur "Unknown parsing error" est générée si le nom du caractère commence par (ou contient) un point.


Si le nom d'un symbole contient un point, un tiret ou autre chose de peu clair (comme "RTS-12.19" ?), le nom doit être entouré d'apostrophes.
 
Slava:
Si un nom de caractère contient un point, un tiret ou quelque chose d'autre que vous ne comprenez pas (que diriez-vous de "RTS-12.19" ?), il doit être entouré d'apostrophes.

Merci. Ça a marché.

 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Quelqu'un (de préférence les développeurs) peut-il expliquer les problèmes de l'optimiseur ?

Slava, 2019.02.14 09:42

nous ne nous fions pas à la date du fichier EX5. Et nous comptons la somme de contrôle de toutes les sources.

Pourriez-vous ajouter les données correspondantes à MQLInfoInteger ?

 

Que signifie cette propriété ?

ENUM_MQL_INFO_INTEGER

Identifiant

Description

Type de propriété

MQL_SIGNALS_ALLOWED

Permet les signaux dece programme en cours d'exécution

bool

 
fxsaber:

Pourriez-vous ajouter des données pertinentes dans le MQLInfoInteger ?

Non
 

Bon après-midi. J'ai rencontré un problème très intéressant avec la validation. Le hibou ne le passe pas ! !! Pas étonnant, beaucoup penseront, /*** cette règle. Mais chaque chose en son temps.

Je commencerai par les contrôles déjà en place, pour couper court aux souhaits les plus évidents :

1. lemanque de fonds pour la transaction commerciale.

2. Des volumes incorrects dans les opérations de trading. 3.

3. limitation du nombre d'ordres en cours

4. limitation du nombre de lots par symbole

La logique du hibou implique l'ouverture d'ordres de marché sans aucun stop, puis il ferme tout lui-même sous certaines conditions.

Pour exclure les erreurs dans la logique d'ouverture, je mets toute la logique du hibou dans le four et le seul signal d'ouverture des ordres est leur absence. Ainsi, nous obtenons un signal pour ouvrir une position d'achat ou de vente à chaque tick. Le signal a été traité. Nous avons ensuite commencé à jouer avec les lots pour simplifier la validation dans le système et essayer d'ouvrir une position avec le plus petit lot demandé par le terminal.

Il s'avère donc que je veux ouvrir l'achat et la vente avec le lot minimal à chaque tick, s'il est absent.

Ce que je reçois comme résultat de la validation :

test sur EURUSD,H1 (hedging)

il n'y a pas d'opérations commerciales

test sur XAUUSD,D1 (couverture)

il n'y a pas d'opérations commerciales

test sur GBPUSD,M30 (couverture)

il n'y a pas d'opérations commerciales

test sur EURUSD,M1 (hedging)

il n'y a pas d'opérations commerciales

Si je vérifie "fonds insuffisants pour l'opération commerciale", à la validation, j'obtiens une réponse indiquant que le fichier journal est trop volumineux, ce qui est compréhensible, à chaque tick j'essaie d'ouvrir une position et il n'y a pas assez de fonds. Si je n'écris rien dans le journal, tout est OK, mais il n'y a pas de positions ouvertes à la fin de la validation. Il me semble donc que l'algorithme de validation présente un problème de taille. C'est une affirmation audacieuse, j'en conviens, mais corrigez-moi si je me trompe quelque part.

J'aimerais la corriger si je me trompe.

Je vous remercie tous d'avance pour vos conseils utiles.


 
Sergey Kasirenko:

Bon après-midi. J'ai rencontré un problème très intéressant avec la validation. Le hibou ne le passe pas ! !! Pas étonnant, beaucoup penseront, /*** cette règle. Mais chaque chose en son temps.

Je commencerai par les contrôles déjà en place, pour couper court aux souhaits les plus évidents :

1. lemanque de fonds pour la transaction commerciale.

2. Des volumes incorrects dans les opérations de trading. 3.

3. limitation du nombre d'ordres en cours

4. limitation du nombre de lots par symbole

La logique du hibou implique l'ouverture d'ordres de marché sans aucun stop, puis il ferme tout de lui-même sous certaines conditions.

Pour exclure les erreurs dans la logique d'ouverture, je mets toute la logique du hibou dans le four et le seul signal d'ouverture des ordres est leur absence. Ainsi, nous obtenons le signal à chaque tick pour ouvrir les positions d'achat et de vente si elles ne sont pas présentes. Le signal a été traité. Nous avons ensuite commencé à jouer avec les lots pour simplifier la validation dans le système et essayer d'ouvrir une position avec le plus petit lot demandé par le terminal.

Il s'avère donc que je veux ouvrir l'achat et la vente avec le lot minimal à chaque tick, s'il est absent.

Ce que je reçois comme résultat de la validation :

test sur EURUSD,H1 (hedging)

il n'y a pas d'opérations commerciales

test sur XAUUSD,D1 (couverture)

il n'y a pas d'opérations commerciales

test sur GBPUSD,M30 (couverture)

il n'y a pas d'opérations commerciales

test sur EURUSD,M1 (hedging)

il n'y a pas d'opérations commerciales

Si je vérifie "fonds insuffisants pour l'opération commerciale", à la validation, j'obtiens une réponse indiquant que le fichier journal est trop volumineux, ce qui est compréhensible, à chaque tick j'essaie d'ouvrir une position et il n'y a pas assez de fonds. Si je n'écris rien dans le journal, tout est OK, mais il n'y a pas de positions ouvertes à la fin de la validation. Il me semble donc que l'algorithme de validation présente un problème de taille. C'est une affirmation audacieuse, j'en conviens, mais corrigez-moi si je me trompe quelque part.

J'aimerais la corriger si je me trompe.

Je vous remercie tous d'avance pour vos conseils.


Vous avez écrit que le conseiller ne négocie pas... Découvrez pourquoi le conseiller ne négocie pas...

 
Vladimir Pastushak:

Vous avez écrit que l'EA ne fonctionne pas... Trouvez pourquoi l'EA ne fonctionne pas...

Vous n'avez peut-être pas lu attentivement mon message. Je le place sur n'importe quel graphique, sur n'importe quelle devise, sur n'importe quel symbole et les positions s'ouvrent avec le tick de mon terminal. Je place une position dans n'importe quel graphique, dans n'importe quelle devise, ou symbole et les positions s'ouvrent dans le terminal. Mais si j'ouvre un journal sans argent, à cause du signal à chaque tick, j'obtiens l'erreur de débordement du journal, et comment peut-il être débordé si la seule chose que j'y mets est l'information sur l'absence d'argent pour la transaction. J'en conclus donc que lors de l'autovalidation quelque chose s'est bloqué et que les chèques sont constamment avec 10 centimes sur le compte, d'où l'absence de transactions, car les chèques ne passent tout simplement pas avant l'ouverture. Mais si je désactive cette vérification, l'autovalidation donne bien sûr une erreur d'ouverture de position pour cause de fonds insuffisants.

 
fxsaber:

Je suis encore plus intéressé par l'enregistrement. La lecture fera l'affaire, si le format est connu.

//+------------------------------------------------------------------+
//| заголовок кеша                                                   |
//+------------------------------------------------------------------+
struct TestCacheHeader
  {
   UINT              version;                // версия кеша
   wchar_t           copyright[64];          // копирайт
   UINT              header_size;            // размер заголовка
   UINT              record_size;            // размер кешируемой записи (TestCacheRecord с буфером параметров)
   //---
   wchar_t           expert_name[64];        // имя эксперта
   wchar_t           expert_path[128];       // имя эксперта с путём от MQL5
   wchar_t           server[64];             // источник истории (торговый сервер)
   wchar_t           symbol[32];             // символ тестирования
   UINT16            period;                 // период чарта
   INT64             date_from;              // дата начала данных в настройках тестирования
   INT64             date_to;                // конечная дата в настройках тестирования
   INT64             date_forward;           // конечная дата соответствующего форварда
   int               opt_mode;               // режим оптимизации (0-полная оптимизация, 1-генетика, 2 или 3-форвард)
   int               ticks_mode;             // режим генерации тиков
   int               last_criterion;         // критерий оптимизации при последнем сеансе
   DWORD             msc_min;                // минимальное время выполнения в миллисекундах
   DWORD             msc_max;                // максимальное время выполнения в миллисекундах
   DWORD             msc_avg;                // среднее время выполнения в миллисекундах
   int               common_reserve[16];
   //---
   wchar_t           group[80];              // имя группы + hedging/netting
   wchar_t           trade_currency[32];     // валюта депозита
   int               trade_deposit;          // начальный депозит
   int               trade_condition;        // режим работы торговли (0-без задержек, -1-произвольная задержка, nnn-количество миллисекунд)
   int               trade_leverage;         // плечо
   int               trade_hedging;          // 1 - netting, 2 - hedging
   int               trade_currency_digits;
   int               trade_reserve[6];
   //---
   char              hash_ex5[16];           // контрольная сумма скомпилированного эксперта
   UINT              parameters_size;        // размер буфера параметров эксперта
   UINT              parameters_total;       // количество параметров
   UINT              opt_params_size;        // размер буфера оптимизируемых параметров эксперта
   UINT              opt_params_total;       // количество оптимизируемых параметров
   UINT              dwords_cnt;             // размер номера прохода большой генетики
   UINT              snapshot_size;          // размер снапшота для тотальной оптимизации и для форварда после тотальной оптимизации
   UINT              passes_total;           // общее количество проходов оптимизации (для генетической оптимизации 0)
   UINT              passes_passed;          // количество пройденных проходов
   // далее следуют выставленные параметры эксперта (в т.ч. строковые) в структуре TestCacheInput
   //--- конец заголовка. далее следуют записи о каждом проходе
  };
//+------------------------------------------------------------------+
//| входные параметры тестирования                                   |
//+------------------------------------------------------------------+
struct TestCacheInput
  {
   wchar_t           name[64];
   int               flag;                    // оптимизируемый параметр
   int               type;                    // тип TYPE_XXX
   int               digits;                  // количество знаков после запятой
   int               offset;                  // смещение в буфере параметров
   int               size;                    // размер значения параметра в буфере
   //--- 0-start,1-step,2-stop
   union { INT64 integers[3]; double numbers[3]; };
  };
   m_header.header_size=sizeof(TestCacheHeader)+m_inputs.Total()*sizeof(TestCacheInput)+m_header.parameters_size;
//--- кешируемая запись содержит номер прохода (при генетике - номер по порядку), структуру результатов тестирования (если математика, то 1 double), буфер оптимизируемых параметров и генетический проход
   m_header.record_size=sizeof(INT64)+m_header.opt_params_size;
   if(m_mathematics)
      m_header.record_size+=sizeof(double);
   else
      m_header.record_size+=sizeof(ExpTradeSummary);
   if(m_header.dwords_cnt>1)
      m_header.record_size+=m_header.dwords_cnt*sizeof(DWORD);
   else
     {
      if(m_genetics)
         m_header.record_size+=sizeof(INT64);
     }
//+------------------------------------------------------------------+
//| Структура для статистики торговли                                |
//+------------------------------------------------------------------+
struct ExpTradeSummary
  {
   double            initial_deposit;     // начальный депозит
   double            withdrawal;          // снято средств
   double            profit;              // общая прибыль (+)
   double            grossprofit;         // общий плюс
   double            grossloss;           // общий минус
   double            maxprofit;           // максимально прибыльная сделка
   double            minprofit;           // максимально убыточная сделка
   double            conprofitmax;        // прибыль максимальной последовательности прибыльных сделок
   double            maxconprofit;        // максимальная прибыль среди последовательностей
   double            conlossmax;          // убыток максимальной последовательности убыточных сделок
   double            maxconloss;          // максимальный убыток среди последовательностей
   double            balance_min;         // минимальное значение баланса (для расчёта абсолютной просадки)
   double            maxdrawdown;         // максимальная просадка по балансу
   double            drawdownpercent;     // отношение максимальной просадки по балансу к её пику
   double            reldrawdown;         // максимальная относительная просадка по балансу в деньгах
   double            reldrawdownpercent;  // максимальная относительная просадка по балансу в процентах
   double            equity_min;          // минимальное значение equity (для расчёта абсолютной просадки по equity)
   double            maxdrawdown_e;       // максимальная просадка по equity
   double            drawdownpercent_e;   // отношение максимальной просадки по equity к её пику (+)
   double            reldrawdown_e;       // максимальная относительная просадка по equity в деньгах
   double            reldrawdownpercnt_e; // максимальная относительная просадка по equity в процентах
   double            expected_payoff;     // матожидание выигрыша (+)
   double            profit_factor;       // показатель прибыльности (+)
   double            recovery_factor;     // фактор восстановления (+)
   double            sharpe_ratio;        // коэффициент Шарпа (+)
   double            margin_level;        // минимальный уровень маржи
   double            custom_fitness;      // пользовательский фитнесс - результат OnTester (+)
   int               deals;               // общее количество сделок
   int               trades;              // количество сделок out/inout
   int               profittrades;        // количество прибыльных
   int               losstrades;          // количество убыточных
   int               shorttrades;         // количество шортов
   int               longtrades;          // количество лонгов
   int               winshorttrades;      // количество прибыльных шортов
   int               winlongtrades;       // количество прибыльных лонгов
   int               conprofitmax_trades; // максимальная последовательность прибыльных сделок
   int               maxconprofit_trades; // последовательность максимальной прибыли
   int               conlossmax_trades;   // максимальная последовательность убыточных сделок
   int               maxconloss_trades;   // последовательность максимального убытка
   int               avgconwinners;       // среднее количество последовательных прибыльных сделок
   int               avgconloosers;       // среднее количество последовательных убыточных сделок
  };
PS. Le format peut changer. Ce format correspond à la version 514