Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 529

 
YanSay:

Comme ça ?

Je ferais du vélo comme ça :

for(int i=OrdersTotal()-1; i>WRONG_VALUE; i--)

Je suis habitué au postdécrément/postincrément - cela me semble logique, contrairement à l'incrément/décrément préfixe, puisque (d'après l'aide) l'incrément (++i) et le décrément (--k) préfixe sont appliqués à une variable juste avant d'utiliser cette variable dans une expression.

Votre comparaison, en revanche, n'est pas du tout correcte :

if(NormalizeDouble((Ask-OrderStopLoss()>Trailing*Point),Digits))

Ici, vous normalisez une valeur booléenne - le résultat de la comparaison de deux valeurs - la valeur de l'expression Ask-OrderStopLoss() est comparée à la valeur de l'expression Trailing*Point, puis vous normalisez le résultat de cette comparaison.

Le résultat de la comparaison ne peut être que faux (0) ou vrai (non nul). C'est donc ce zéro ou ce non-zéro que vous allez normaliser.

C'est ainsi que vous devez faire la comparaison :

if(NormalizeDouble((Ask-OrderStopLoss())-Trailing*Point,Digits)>DBL_EPSILON)
  {
   // Ask-OrderStopLoss() больше Trailing*Point
  }
 
Juer:
Qu'est-ce que cela signifie qu'il y a une erreur ?


J'ai une fonction avec deux objets :

Une des classes a une structure avec plus de 4000 champs (principalement des enums).

Que faire avec cette erreur ?

bool              CheckCandleOneRules(CCandlePropertiesBase *candle,
                                      CCandleRule *rule,
                                      int dir);

Ici la taille des variables locales est trop grande (plus de 512kb) au moment de la compilation.

Que chercher et que faire ? La fonction possède un tableau de chaînes CArrayString, je pense que l'erreur peut être liée à celui-ci.

Je le remplis en utilisant la méthode Add(), puis je fais Clear() et Shutdown() à nouveau. Puis je le remplis à nouveau avec de nouvelles données en utilisant la méthode Add(). Dans ce cas, le tableau sera-t-il à nouveau rempli à partir d'un élément nul ?

 

Comment puis-je connaître, dans l'histoire, la plus longue séquence de bougies consécutives et multidirectionnelles ?

Par exemple : le premier est baissier, le deuxième est haussier, le troisième est baissier et ainsi de suite. Je suppose que nous avons besoin d'une boucle et d'une variable pour enregistrer le nombre de ces bougies, mais je ne sais pas ce que doit être la boucle et comment, par quelle condition, la quitter.

 
PolarSeaman:

Comment puis-je connaître, dans l'histoire, la plus longue séquence de bougies consécutives et multidirectionnelles ?

Par exemple : le premier est baissier, le deuxième est haussier, le troisième est baissier et ainsi de suite. Je suppose que nous avons besoin d'une boucle et d'une variable pour enregistrer le nombre de ces bougies, mais je ne sais pas ce que doit être la boucle et comment la quitter, par quelle condition.

Je ne sais pas quel type de boucle il faut utiliser pour en sortir.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
Получает в массив rates_array исторические данные структуры MqlRates указанного символа-периода в указанном количестве. Отсчет элементов от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар. При копировании заранее неизвестного количества данных рекомендуется в качестве приемного...
 
Alexey Viktorov:

CopyRates et boucle sur un tableau de structures MqlRates.

Merci, une boucle sur un tableau, comment ? et quand en sortir ?

 
PolarSeaman:

Merci, la boucle de tableau, comment ? et quand la quitter ?

La même chose que pour la liste des commandes. Vous devez seulement faire attention à la direction de l'indexation dans le tableau. Et quand sortir... S'il ne doit être fait qu'une seule fois et parmi les dernières mesures, il doit sortir dès que la séquence est brisée. S'il s'agit d'un indicateur, sortez lorsque le tableau est terminé.
 
PolarSeaman:

Comment puis-je connaître, dans l'histoire, la plus longue séquence de bougies consécutives et multidirectionnelles ?

Par exemple : le premier est baissier, le deuxième est haussier, le troisième est baissier et ainsi de suite. Je suppose que nous avons besoin d'une boucle et d'une variable pour enregistrer le nombre de ces chandeliers, mais je ne sais pas ce que doit être la boucle et comment en sortir, par quelle condition.

Je ne sais pas quel type de cycle il devrait être mais je ne sais pas dans quel état le sortir.

 
Alexey Viktorov:
puis sortent dès que la séquence est rompue.

Comment enregistrer cette séquence en premier lieu ?

 
Vitaly Muzichenko:

Et comptez d'où vient la cohérence maximale, de quand forex a été créé ?

Ce serait génial) Mais l'historique du courtier est limité, recherchez dans toutes les données disponibles. ou pour la dernière année, c'est-à-dire depuis le 15.04.17.

 
PolarSeaman:

Comment, en général, cette séquence doit-elle être écrite ?

Comment l'écrire, répondit Alexey. Ce serait formidable s'il pouvait écrire le code, tel qu'il le voit, s'il en a le temps et le désir).

Je vois la mise en œuvre à travers un drapeau, mais cela me semble mauvais, que je ne veux même pas commencer à essayer.

PS. Au fait, s'agit-il d'un indicateur ou d'un EA ?
Raison: