Erreurs, bugs, questions - page 3026

 
Andrey Dik:

sur M1 utilise un autre indicateur de M5.

En général, ce ne serait pas un problème, s'il n'y avait pas une consommation accrue et déraisonnable de ressources de calcul, critique pendant l'optimisation (dans mon cas, chaque nouveau M5 entraîne une ré-exécution complète de l'indicateur sur l'historique entier, alors que le projet n'est pas encore complètement terminé, je prévois d'utiliser 16 indicateurs de différentes TF).

Andrey, mais la bougie M5 s'ouvre en même temps que la bougie M1. Ou voulez-vous parler de la charge des indicateurs de redécoupage (recalcul)? Donc, si nous leur interdisons de redessiner, de quoi ont-ils besoin alors ? Alors vous n'obtiendrez pas de nouvelles données de leur part...

 

Erreur de compilation :

#define  MACRO( X )      X##X
void OnStart()
{
    Print( 11 );        //(1) нормально
    Print( MACRO( 1 )); //(2) Error: '11' - undeclared identifier
}
et quelle est la différence entre (1) et (2) ?
 
Сергей Таболин:

Andrey, mais la bougie M5 s'ouvre au même moment que la bougie M1. Ou voulez-vous dire la charge de redessiner (recalculer) les indicateurs ? Donc, si nous leur interdisons de redessiner, de quoi ont-ils besoin alors ? Alors vous ne recevrez pas de nouvelles données de leur part...

dès qu'une nouvelle barre de temps apparaît, d'où les données sont obtenues, le compteur prev_calculated sera remis à zéro, ce qui signifie que l'indicateur sera recalculé comme s'il avait été lancé la première fois.

Cette construction vous est-elle familière ?

if (rates_total == prev_calculated) return rates_total;
  
int startInd = rates_total - prev_calculated;

for (int i = startInd; i >= 0; i--)
{
  //тут считаем индикатор, который обращается к другому индикатору на старшем ТФ
}

il ne s'agit pas de la logique de l'EA (redécoupage, non redécoupage, sous-découpage ou autre), mais du fait que prev_calculated est remis à zéro alors que personne ne lui a demandé de le faire !

 
Andrey Dik:

dès qu'il y a une nouvelle barre de temps à partir de laquelle les données sont obtenues, le compteur prev_calculated est remis à zéro. cela signifie que l'indicateur entier est recalculé comme s'il était exécuté la première fois.

Cette construction vous est-elle familière ?

il ne s'agit pas de la logique de l'EA (redessiner, ne pas redessiner, sous-dessiner ou autre), mais du fait que prev_calculated est remis à zéro alors que personne ne le lui a demandé !

Les indicateurs sont mon point faible ))))

Mais !

Soit je ne comprends rien du tout, soit vous vous trompez un peu.

Pour autant que je sache, prev_calculated est un compteur de données non calculées. Et une fois que les données entrantes sont comptées, ce compteur est remis à zéro... Genre, c'est tout, mec, plus de nouvelles données à calculer.... )))

Et pour quelle raison l'indicateur devrait recalculer complètement dans un tel cas - je ne sais pas !

---------------

J'ai un peu menti ))))

Ce ne sont pas les indicateurs qui sont recalculés, ce sont les "indices" qui sont redessinés juste pour avoir l'air "sympa" sur l'historique ;)

 
Сергей Таболин:


J'ai un peu menti ))))

Les indicateurs ne sont pas redessinés, les "indices" sont redessinés uniquement pour qu'ils aient une belle apparence sur l'historique ;)

C'est pourquoi ils se vendent comme des petits pains. Parce qu'ils ont toujours l'air BEAU et BEAU.

 
Vladislav Andruschenko:

C'est pourquoi ils se vendent comme des petits pains. Parce qu'ils ont toujours l'air BEAU et BEAU.

100500 ))))))

 
Сергей Таболин:


Pour autant que je sache, prev_calculated est un compteur de données non calculées.

Hélas, vos connaissances sont en contradiction avec la documentation.

OnCalculate()

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Функции обработки событий - Функции - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Comment puis-je savoir en interne qu'EX5 est compilé en mode débogage ? Pas exécuté en mode Debug, mais compilé une fois à travers Debug et exécuté normalement.

Je l'ai trouvé.

void OnStart()
{      
  #ifdef _DEBUG
    Alert("EX5 - debug.");
  #endif

  if (MQLInfoInteger(MQL_DEBUG))
    Alert("Debugging...");
}


Et comment puis-je savoir que l'EX5 est protégé ?

 
Сергей Таболин:

Les indicateurs sont mon point le plus faible ))))

Mais !

Soit je ne comprends rien du tout, soit vous vous trompez un peu.

Pour autant que je sache, prev_calculated est un compteur de données non calculées. Et une fois que les données entrantes sont comptées, ce compteur est remis à zéro... Comme, c'est tout, mec, plus de nouvelles données à calculer.... )))

Et pour quelle raison l'indicateur devrait recalculer complètement dans un tel cas - je ne sais pas !

---------------

J'ai un peu menti ))))

Ce ne sont pas les indicateurs qui sont recalculés, mais les "indices" qui sont recalculés pour qu'ils soient "beaux" sur l'historique ;)

le compteur est remis à zéro pour des raisons indépendantes de la volonté du programmeur, comme si l'indicateur avait été mis en marche pour la première fois !

Je ne voudrais pas que mon message soit perdu au milieu d'explications incompréhensibles, mais il est finalement parvenu aux développeurs.



Nous devons noter le lien entre la valeur renvoyée par OnCalculate() et le deuxième paramètre d'entrée prev_calculated. Lors de l'appel de la fonction, le paramètre prev_calculated contient une valeur renvoyée par OnCalculate() lors de l'appel précédent. Cela permet d'utiliser des algorithmes économiques pour calculer l'indicateur personnalisé afin d'éviter des calculs répétés pour les barres qui n'ont pas changé depuis l'appel précédent de cette fonction.

-Un calcul qui ne fonctionne pas correctement casse tout le concept des calculs économiques.
Raison: