[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 912

 
Dimka-novitsek:

Je suis désolé, je n'arrive pas à gérer mon "Expert Advisor", il donne chroniquement une erreur 130 stops erronés, et ne trade pas. J'ai mis différents stops, 10-60 pips, tous les mêmes.


Pour commencer, au lieu d'un stop et d'un profit dans SendOrders, mettez 0. Vérifiez si les ordres sont ouverts. À première vue, vos stops doivent être 10 fois plus grands, il est probable que vous ayez des cotations à cinq chiffres et que les stops soient trop proches du prix d'ouverture .
 
Dimka-novitsek:

Je suis désolé, je n'arrive pas à comprendre ce qui se passe avec mon "EA", il donne chroniquement l'erreur 130 mauvais stops, et ne trade pas. J'ai mis toutes sortes de stops, 10-60 pips, tous les mêmes.

Je pense que cela devrait fonctionner. car mon EA ne fonctionne pas du tout correctement, mon total est toujours 0, alternant avec une erreur 130.

J'ai défini le double externe Lots=0.1, TakeProfit=50, stoploss=10 ;

Je ne sais pas ce qui ne va pas.

Aide !!!!!!!!!!!! S'il vous plaît !!!!!!!!!!!!


Je suis ok, peut-être cinq chiffres? stops*10 et takeloss*10

 
costy_:


Je vais bien, peut-être cinq chiffres ? Arrêtez*10 et prenez*10.

Le problème des cinq chiffres, et de tous les signes, est facile à résoudre.

Vous l'écrivez dans l'Inite :

   if(Digits==5 || Digits==3) PointX = Point * 10; // Корректировка Point под трёх- пятизнак
   if(Digits==4 || Digits==2) PointX = Point;
Et, en conséquence, déclarer initialement la variable PointX de type double. Ensuite, dans le code de l'EA, remplacez Point par PointX partout.
 
Merci ! !! Je suppose que c'est définitivement ça ! !!!.
 
ivandurak:


comme ceci

static int KolBars ; // cette variable stocke le nombre de barres

si ( votre condition && Bars != KolBars)

{ // si le nombre de barres a changé à l'écran, l'ouverture d'une nouvelle bougie est la condition pour agir.

Des actions selon l'algorithme sont effectuées, ouverture de la position de fermeture, calculs etc ;

KolBars=Bars ; // enregistre le nombre de barres auxquelles les actions sont terminées.

}

Maintenant les trades sont ouverts toutes les heures (TF H1) avec l'apparition d'une nouvelle bougie, malgré ma condition d'ouverture.

Je ne sais pas non plus comment placer un stop loss sur un certain chandelier au lieu d'un stop loss.

"static int KolBars ; // cette variable stocke le nombre de barres" - dois-je spécifier le nombre de chandeliers à analyser ? static int KolBars=3


Je veux construire un EA avec une condition du type "si les 3 bougies précédentes étaient vertes, alors ouvrez une transaction de vente sur une nouvelle bougie, et fermez-la à la clôture de cette bougie ou de la suivante".

 
L'ALGORITHME GENETIQUE donne des résultats différents à chaque fois...... QUE FAIRE ??? a essayé la normalisation. Il n'y a pas de dérapage. En programmation semble ne pas être la première année......... JE NE COMPRENDS PAS !!! AIDE ! !!
 
costy_:

http://forexsystems.ru/sovetniki/26492-poisk-sovetnikov- [kto-ischet-pishem-sdes%60].html

h ttp://www.forexfactory.com/showthread.php?t=168161


Merci beaucoup.
 
Stepan241:
L'ALGORITHME GENETIQUE donne des résultats différents à chaque fois...... QUE FAIRE ??? a essayé la normalisation. Il n'y a pas de dérapage. En programmation semble ne pas être la première année......... JE NE COMPRENDS PAS ! !! AIDE ! !!


Imaginez que vous deviez implémenter vous-même une fonction genlock, que faudrait-il faire pour y parvenir !

Combien de passes devrait-il faire sans algor. gén. et combien de passes devrait-il faire avec un algor. gén.(veuillez l'indiquer pour un cas spécifique).

Si les données sans genlock ne correspondent pas après deux optimisations, alors des nombres pseudo-aléatoires doivent avoir été utilisés quelque part pour faire une condition d'échange (queues ?).

"Pas de glissement" alors que les glissements de test et d'optimisation ne fonctionnent pas du tout.

 

C'est intéressant, j'ai lu le post d'ivandurak et j'ai immédiatement réalisé qu'après chaque tick, seul le début est déclenché, donc si vous ouvrez la variable globalement, il semble que la valeur soit sauvegardée.

Стало быть,где-то так.//+------------------------------------------------------------------+
//| Bollocks.mq4 |
//| Droits d'auteur © 2010, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, MetaQuotes Software Corp."
#lien de propriété "http://www.metaquotes.net"
int KolBars=Bars ;
//+------------------------------------------------------------------+
//| fonction d'initialisation de l'expert |
//+------------------------------------------------------------------+
int init()
{
//----
//----

//----
retour(0) ;
}
//+------------------------------------------------------------------+
//| fonction de désinitialisation des experts |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
retour(0) ;
}
//+------------------------------------------------------------------+
//| fonction de démarrage de l'expert |
//+------------------------------------------------------------------+
int start()
{int r ;
r=Bars- KolBars
//----
for( r>0 )
int k ;
//----
retour(0) ;
}
//+------------------------------------------------------------------+ Donc, le compilateur n'accepte catégoriquement pas la ligne int KolBars=Bars ; il jure 'Bars' - initialisation attendue C:\Program Files (x86)\Alpari ÌÒ4\experts\Áùå.mq4 (8, 13)

Étonnant !!!!! Déclaration de variable normale. Mais peu importe.

Je vais demander l'essentiel - comment déboguer un EA le week-end, si les ticks ne vont pas ?????.

 
artmedia70 16.10.2010 20:56

costy_ :


Je vais bien, peut-être cinq chiffres ? stops*10 et take*10


Bien, le problème avec cinq chiffres, et avec tous les signes n'est pas difficile à résoudre.

Dans l'Inite, écrire :
if(Digits==5 || Digits==3) PointX = Point * 10 ; // Point correct pour les caractères à trois et cinq chiffres
if(Digits==4 || Digits==2) PointX = Point ;
Et, en conséquence, déclarer initialement la variable PointX comme double. Ensuite, dans le code de l'EA partout, remplacez Point par PointX Une fois de plus, merci beaucoup ! !! Je me suis battu avec cela pendant une semaine moi-même ! !!