[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 669

 
Diger:

Cela est-il arrivé à quelqu'un ?

Aucune perte dans le journal du testeur de stratégie et la courbe du graphique est en baisse constante.

Qu'est-ce que ça veut dire ?

La force de gravité... :)) Vous n'êtes pas sur Jupiter ? :)) Désolé - je plaisante...
 
Diger: Cela est-il arrivé à quelqu'un ? Aucune perte dans le journal du testeur de stratégie et la courbe du graphique est en baisse constante. Qu'est-ce que ça veut dire ?
L'écart est réduit. Trop d'échanges. Ouvrez le dossier du testeur.
 
artmedia70:
Le pouvoir de la gravité... :)) Vous n'êtes pas sur Jupiter ? :)) Désolé - je plaisante...

Je suis un peu un monstre moi-même. Peut-être que je le suis vraiment. ....
 
Richie:
Egoutter sur la pâte à tartiner. Trop d'échanges. Ouvrez le dossier du testeur.


Tu avais raison !

Contre les 2p habituels, nous avons maintenant 26...

Merci !

 
Diger:


Vous avez eu raison !

Contre les 2p habituels, nous avons maintenant 26...

Merci !

Ajoutez une condition pour le spread maximum au-delà duquel les transactions ne sont pas ouvertes (mais celles déjà ouvertes continuent à être contrôlées par l'EA).

 
chief2000:

Ajoutez une condition pour le spread maximum au-delà duquel les transactions ne sont pas ouvertes (mais celles déjà ouvertes continuent à être contrôlées par l'EA).


Je ne pensais pas que c'était nécessaire avant.

Mais le testeur d'aujourd'hui m'a montré ce besoin.

 

D'ailleurs, c'est aussi intéressant et peu clair pour moi. J'ai ajouté à mon Expert Advisor un lot de perte par un principe : trouver la plus grosse perte et ouvrir une position opposée avec le lot de cette perte multiplié par le coefficient calculé à partir de l'état actuel du marché à tous les TF et de la position par rapport à la perte ouverte et le prix actuel et le graphique de prix lui-même (comme - est-ce que ça vaut vraiment la peine d'ouvrir un lot, si le prix a bougé dans la bonne direction...). Respectivement, lorsque le profit total de ces deux positions est d'environ 50-60 points - nous les fermons toutes les deux, celle qui est rentable en premier.

Ainsi, j'ai remarqué que ce système de trading rentable, qui donne un profit stable pendant deux ans dans le testeur, mais a dans son arsenal des drawdowns sauvages, qui ne peuvent être acceptés, si j'utilise des boucles, il échoue dans les deux mois.... Quelle pourrait être la raison ? Juste une supposition rapide. Je n'ai pas sauvegardé les statistiques de drainage parce que "pourquoi le ferais-je ?".

 

Question :

Je dois me référer à la même séquence de codes de nombreuses fois, à chaque tick dans presque toutes les stratégies mises en œuvre dans l'EA, pour obtenir des données sur l'état actuel du marché.

   CurAsk   =MarketInfo(Symbol(),MODE_ASK);
   CurBid   =MarketInfo(Symbol(),MODE_BID);
   OpnPrice =iOpen(NULL,PERIOD_M5,0);
   OpnPrice1=iOpen(NULL,PERIOD_M5,1);
   ClsPrice1=iClose(NULL,PERIOD_M5,1);
Puis-je les adresser une seule fois au début de la fonction de démarrage, et ensuite n'adresser que les variables globales, qui stockeront les données ? C'est un peu une douleur dans le cul...
 
artmedia70:

Question :

Je dois me référer à la même séquence de codes de nombreuses fois, à chaque tick dans presque toutes les stratégies mises en œuvre dans l'EA, pour obtenir des données sur l'état actuel du marché.

Puis-je les adresser une seule fois au début de la fonction de démarrage, et ensuite n'adresser que les variables globales qui stockeront ces données ? Je deviens un peu huileux ici...


OpnPrice =iOpen(NULL,PERIOD_M5,0) ;

Je comprends que le calcul est effectué sur la barre zéro, c'est-à-dire que chaque tick modifiera les données.

Si vous voulez écrire logiquement un script et le faire tourner en boucle pour qu'il vous fournisse ce calcul dans des variables globales, mais dans ce cas vous devez synchroniser les nouvelles données à chaque tick, je pense qu'il est préférable de le laisser tel quel, mais de le livrer dans une fonction séparée et d'appeler cette fonction uniquement dans les cas nécessaires, c'est-à-dire si le calcul est important pour l'ouverture des ordres, alors juste avant l'ouverture et respectivement la fermeture de ceux-ci.

 
IgorM:


OpnPrice =iOpen(NULL,PERIOD_M5,0) ;

Je comprends que le calcul est effectué sur une barre zéro, c'est-à-dire que chaque tic change les données.

logiquement - vous devriez écrire un script et le faire tourner en boucle et il enverra ce calcul aux variables globales, mais dans ce cas vous devrez synchroniser les nouvelles données à chaque tick. je pense qu'il vaut mieux le laisser tel quel, mais le livrer dans une fonction séparée et appeler cette fonction seulement quand c'est nécessaire, c'est-à-dire si le calcul est important pour l'ouverture des ordres, alors juste avant l'ouverture et respectivement avant la fermeture de ceux-ci

Igor, je le fais jusqu'à présent, mais je crains que cela ne ralentisse le système déjà lent constitué de toutes ces stratégies mélangées et reliées par des conditions, et travaillant parfois par paires. Imaginez que chacun d'entre eux appelle le même code dans une fonction distincte.

Il me semble - tant pis si certaines données sont prises à partir de la barre zéro, puisque j'ouvre déjà à la barre zéro.... Je n'obtiens des données que de la première, deuxième ou troisième barre...
OpnPrice =iOpen(NULL,PERIOD_M5,0) ; J'obtiens le prix ouvert de la barre actuelle et il ne change pas - c'est un fait accompli . En comparant le prix de clôture précédent et le prix d'ouverture de la barre actuelle, certaines fonctions donnent ou refusent d'ouvrir une position...

Donc, que toutes ces données soient lues une fois avec l'arrivée du tick, et ensuite elles seront utilisées par l'Expert Advisor. Ils resteront inchangés et actuels jusqu'au prochain tick, lorsque le Conseiller Expert les mettra à jour pour le prochain cycle de calcul.

Quelle est la probabilité qu'un nouveau tic arrive avant la fin de tous les calculs actuels ? Il me semble que ce n'est que dans ce cas que les données deviendront anciennes et non pertinentes.