Auto-apprentissage du langage MQL5 à partir de zéro - page 73

 
Vasiliy Sokolov:

J'ai ajouté quelques fonctions. Je me suis retrouvé avec un code comme celui-ci :

Je ne comprends toujours pas comment travailler avec un MA. Cela n'a aucun sens sur la compensation. Dans tous les cas, vous pouvez facilement supprimer cette vérification, car elle n'est effectuée que dans une seule fonction.

Merci, Vasiliy, pour ces informations intéressantes. On dit que la répétition est la mère de l'apprentissage ! Cette fois-ci, il semble que ce soit moi... :-)

J'ai joint le robot - trawl variants - par son nom, il est intuitif, quand on entre le code EXPA tout est décrit, mais sur MT4. Je fais moi-même du commerce sur MT4 et j'en ai besoin pour le commerce. Ces robots dans la base de code sont de Yuriy Dzyuban, je le remercie beaucoup. (A propos - le sujet - robots similaires pour MT5)

options du robot de chalutage



Vous écrivez un billet et les paramètres des variables externes du chalut approprié, vous le mettez sur un graphique et vous suivez le profit! !!

Voici un exemple de chalut MA :

extern   int      iTicket;             // уникальный номер (тикет) открытой позиции
extern   int      iTmfrm;              // период графика, на котором строится МА (1, 5, 15, 30, 60, 240, 1440, 10080, 43200)
extern   int      iMAPeriod = 21;      // период МА (не меньше 2)
extern   int      iMAShift = 0;        // сдвиг индикатора относительно ценового графика
extern   int      iMAMethod = 0;       // метод усреднения (0 - MODE_SMA, 1 - MODE_EMA, 2 - MODE_SMMA, 3 - MODE_LWMA);
extern   int      iApplPrice = 0;      // используемая цена (0 - PRICE_CLOSE, 1 - PRICE_OPEN, 2 - PRICE_HIGH, 3 - PRICE_LOW, 4 - PRICE_MEDIAN, 5 - PRICE_TYPICAL, 6 - PRICE_WEIGHTED)
extern   int      iShift = 1;          // индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад)
extern   int      iIndent = 3;         // отступ от МА, на котором размещается стоплосс
Dossiers :
 

Bonne journée et bonne humeur à tous !

Je continue à étudier le langage de programmation MQL5. J'ai écrit le code de mon conseiller expert avec un stop suiveur. Au début, j'étais très heureux de le tester, mais il s'est avéré que c'était trop tôt. Le problème est que l'EA ne fonctionne pas de manière stable et je ne comprends pas de quoi il s'agit.

L'essence du problème : je fais tourner l'Expert Advisor sur des données historiques depuis le 6 janvier 2020. Les premiers jours, l'Expert Advisor fonctionne exactement selon l'algorithme, mais dès que le test atteint le 13 janvier 2020, l'algorithme n'est pas exécuté. J'ai découvert que tout le problème se situe au niveau de la fonction de perte du stop suiveur. La seule chose que je n'arrive pas à comprendre, c'est comment cela peut se produire - parfois le chalut fonctionne et parfois non? J'essaie de trouver où j'ai merdé.

Je n'exposerai pas encore le code de la fonction de chalutage, car je veux régler le problème moi-même.

Salutations, Vladimir.

 
MrBrooklin:

Bonne journée et bonne humeur à tous !

Je continue à étudier le langage de programmation MQL5. J'ai écrit le code de mon conseiller expert avec un stop suiveur. Au début, j'étais très heureux de le tester, mais il s'est avéré que c'était trop tôt. Le problème est que l'EA ne fonctionne pas de manière stable et je ne comprends pas de quoi il s'agit.

L'essence du problème : je fais tourner l'Expert Advisor sur des données historiques depuis le 6 janvier 2020. Les premiers jours, le conseiller expert fonctionne exactement selon l'algorithme, mais dès que le test atteint le 13 janvier 2020, l'algorithme n'est pas exécuté. J'ai découvert que l'ensemble du problème est causé par la fonction de perte de suivi (trailing stop). La seule chose que je n'arrive pas à comprendre, c'est comment cela peut se produire - parfois le chalut fonctionne et parfois non? J'essaie de trouver où j'ai merdé.

Je n'exposerai pas encore le code de la fonction de chalutage, car je veux régler le problème moi-même.

Sincèrement, Vladimir.

Vous pouvez utiliser des journaux et des alertes. Et au minimum, enregistrez chaque éternuement dans le fichier)))).

 
Valeriy Yastremskiy:

Un journal de bord et une alerte pour aider. Et au moins un enregistrement dans le dossier de chaque éternuement)))).

Bonjour Valery ! Merci pour le conseil. J'ai regardé le journal de bord le jour où le chalut ne fonctionne pas correctement :

10016

TRADE_RETCODE_INVALID_STOPS

Arrêts incorrects dans la demande


Cependant, même le jour où le trawl stop loss fonctionne bien, le même code de retour du serveur de commerce apparaît. Une ambiguïté.

Salutations, Vladimir.

 
MrBrooklin:

Bonjour Valery ! Merci pour le conseil. J'ai regardé le journal de bord le jour où le chalut ne fonctionne pas correctement :

10016

TRADE_RETCODE_INVALID_STOPS

Arrêts incorrects dans la demande.


Je dois maintenant comprendre comment il se peut qu'un jour de bourse les stops dans la requête soient corrects, alors qu'ils sont faux un autre jour de bourse. Il s'agit d'une erreur.

Sincèrement, Vladimir.

Le journal n'écrit pas tout. Donc, vous avez calculé le stop et l'avez placé. Et juste avant l'ordre, le niveau de gel a changé en cours de route. Ça arrive.

L'alerte est plus rapide et immédiatement visible, l'impression est également visible, mais il y a beaucoup de messages système.

 
Valeriy Yastremskiy:

Le journal de bord n'écrit pas tout. Donc ils ont calculé le stop, l'ont sorti. et avant, juste avant l'ordre il et le niveau de gel ont été sortis. soudainement sur la sortie a changé. Ça arrive.

L'alerte est plus rapide et immédiatement visible, l'impression est également visible, mais il y a beaucoup de messages système.

Valeri, quel est le niveau de congélation ? Peut-être que cela devrait être prescrit dans le code d'une manière ou d'une autre ?

Salutations, Vladimir.

 
MrBrooklin:

Bonjour Valery ! Merci pour le conseil. J'ai regardé le journal de bord le jour où le chalut ne fonctionne pas correctement :

10016

TRADE_RETCODE_INVALID_STOPS

Arrêts incorrects dans la demande


Cependant, même le jour où le trawl stop loss fonctionne bien, le même code de retour du serveur de commerce apparaît. Une ambiguïté.

Salutations, Vladimir.

Bonjour, il est fort probable que le courtier ait changé le niveau des stops, etles stops erronés en cas de trailing est lorsque la distance de trailing est inférieure auniveau des stops autorisés par le courtier, il suffit d'augmenter légèrement la distance de trailing, la distance de trailing nedoit pas être inférieure au niveau des stops, vous pourriez trouver cette information dans les spécifications de chaque instrument.
 
VVT:
Bonjour, il est fort probable que le courtier ait changé le niveau de stop.Un stop erroné en cas de trailing, c'est lorsque la distance de trail est inférieure auniveau de stop autorisé par le courtier, il suffit d'augmenter un peu la distance de trail, la distance de trail nedoit pas être inférieure au niveau de stop, cette information se trouve dans les spécifications de chaque instrument.

Bonjour ! Merci pour le conseil. Honnêtement, je n'étais pas au courant de ça. Je vais essayer de le changer.

Sincèrement, Vladimir.

 
VVT:
Bonjour, il est fort probable que le courtier ait changé le niveau des stops.Un mauvais stop dans le cas d'unstop suiveur, c'est quand la distance du trail est inférieure à ce qui est autorisé par le courtier, il suffit d'augmenter un peu la distance du trail, la distance du trail nedoit pas être inférieure au niveau des stops, cette information se trouve dans les spécifications de chaque instrument.

J'ai essayé de changer la distance. Ça n'a pas marché. C'est la même chose. Je vais continuer à lire sur le trailing stop loss et à utiliser le code.

Sincèrement, Vladimir.

 
MrBrooklin:

J'ai essayé de changer la distance. Ça n'a pas marché. C'est la même chose. Je vais continuer à lire sur le trailing stop loss et à utiliser le code.

Sincèrement, Vladimir.

Arrêt incorrect, c'est étrange. Qu'est-ce qui se passe d'autre pendant le chalutage ?

Raison: