Version bêta du livre en ligne sur la programmation MQL4 - par Sergey Kovalev (SK.) - page 9
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
J'ai trouvé cet excellent article sur la comptabilisation des commandes complexes dans SK "Order Bookings in a Large Program".
Honnêtement, je me demande si tout ça n'est pas une arnaque.
Mais contrairement au personnage décrit dans l'article sur le Graal, je ne pense pas comme lui : "Juste moi !". Je pense qu'il y a quelque chose qui cloche ici, ou c'est juste de la chance en ce moment. Cependant, si l'on regarde les résultats du championnat, on constate que les résultats sont bien meilleurs en trois mois, ce qui signifie en gros que rien n'est impossible. Et pourtant, on ne peut s'empêcher de se demander qui donnera un développement aussi "rapide" dans le monde réel ?
Et pourtant, on se demande qui permettra un développement aussi "rapide" dans le monde réel ?
C'est une question simple. Et la réponse est évidente : celui qui travaille honnêtement (les courtiers ne sont pas abordés ici).
La question plus difficile est de savoir si le conseiller expert produit des résultats stables et élevés ? Ou s'agit-il simplement d'une histoire de circonstance ou d'un coup de chance ?
La question la plus difficile est de savoir si le conseiller est vraiment cohérent,
des résultats élevés ? Ou est-ce que ça correspond à l'histoire ou à un coup de chance ?
J'ai juste eu des résultats beaucoup plus modestes auparavant. Et en général, en étudiant votre livre (pendant presque un mois) et toute la langue en général, j`ai appris beaucoup de choses sur le trading que je ne savais pas et que je ne soupçonnais pas pendant 2 ans d`étude du Forex. Je suis même en train de réfléchir à la façon dont je pourrais gagner quelque chose sans en savoir autant ;)) Je pense que même maintenant, je pourrais gagner autant sans rien savoir. C'est juste que lorsque j'ai essayé pour la première fois de trader sur la démo, j'ai eu le sentiment que je ne pourrais pas gagner plus de 300 $ par mois. Ce qui n'est pas mal non plus, surtout si l'on tient compte de mon allergie aux patrons de toutes sortes :) J'ai écrit mon premier conseiller expert dans mon blog, et je n'en ai jamais entendu parler.
J'ai écrit mon premier conseiller dans la semaine qui a suivi la première lecture du livre. Mais je ne l'ai pas écrit, je l'ai copié, en remplaçant seulement le bloc avec les critères de transaction, et le reste a été pris de l'exemple d'EA utilisant MA. Mais quand je l'ai écrit, je voulais seulement savoir ce qui se passerait si je le faisais de cette façon. Je voulais utiliser les capacités du testeur sans avoir à le vérifier manuellement pendant longtemps. Je n'avais pas d'idées comme dans l'article sur le graal. Je suis plus terre-à-terre à cet égard :) Je suis satisfait du résultat, car j'ai complètement perdu mon dépôt (une variante en moins). L'idée était simple comme bonjour, c'était donc un péché de ne pas la vérifier. Mais la dernière stratégie est plus difficile (pour moi) à décrire à l'aide des outils MQL4, je dois donc utiliser mes propres mains. Mais ses résultats en mode manuel nécessitent de poursuivre le développement de l'Expert Advisor. J'essaie donc, lentement mais sûrement, de l'écrire.
J'avais juste des résultats beaucoup plus modestes auparavant. Et en général, en étudiant votre livre (presque un mois) et toute la langue en général, j'ai appris beaucoup de choses sur le trading que je ne savais pas et que je ne soupçonnais pas pendant mes 2 ans de connaissance du forex. Je suis même en train de réfléchir à la manière dont je pourrais gagner quelque chose, sans en savoir beaucoup...).
Mais la dernière stratégie est plus compliquée (pour moi) en termes de description au moyen de MQL4, je dois donc travailler manuellement. Mais ses résultats en mode manuel ne demandent qu'à être perfectionnés par le conseiller expert. Alors j'essaie, lentement, mais en écrivant.
à SK
Variables, .
Vous avez les écrits suivants :
"Tous les tableaux sont statiques par nature, c'est-à-dire qu'ils ont une forme statique, même si cela n'est pas explicitement indiqué lors de l'initialisation "
Cependant
Supposons qu'un indicateur, la sous-routine appelante, possède un tableau :
1)
double summ[] ; //la fonction standard .................................... .......... est appelée
i=ArrayMinimum(summ,iter,0) ; // Erreur au deuxième appel : <incorporé la position de départ 0 pour la fonction ArrayMinimum>
2) variante de l'erreur
statique double summ[] ;
//..............................................
i=ArrayMinimum(summ,iter,0) ; // Même erreur au deuxième appel : <incorporé la position de départ 0 pour la fonction ArrayMinimum>
3) variante sans erreur
double summ[1000] ;
..............................................
i=ArrayMinimum(summ,iter,0) ; // Exécution normale
4) variante sans erreur
statique double summ[1000] ;
..............................................
i=ArrayMinimum(summ,iter,0) ; // Exécution normale
Il ressort des exemples 1 et 2 que les tableaux sont alloués dynamiquement.
L'exemple 2 suggère qu'un tableau sans dimension n'est pas initialisé comme un tableau statique (ce qui est évident), mais cela n'apparaît pas dans les erreurs de compilation ((
L'exemple 3 4 implique que seuls les tableaux prédéfinis ont une distribution statique .
Il est intéressant de noter que le système d'exécution détecte l'erreur et détermine les exemples 1 et 2, ce qui suggère un système de terminal en temps réel bien conçu. C'est-à-dire que le tableau se comporte comme un objet. Félicitations aux développeurs.
Cependant, tout ne va pas si bien avec les simples variables
double instik(int &t) // cette fonction change la variable dans le programme appelant
{
t++ ;
}
Cet appel compte à chaque tic si
//...........................................
statique int tik ;
instik(tik) ;
Imprimer (" tick=",tik) ;
//...............................
Et cela ne compte pas parce que l'allocation de mémoire est dynamique, et que l'adresse liée lors du deuxième appel ne correspond pas.
................
int tik ;
instik(tik) ;
Imprimer (" tick=",tik) ;
// la sous-routine d'instik donne un incrément à l'octet inconnu, mais le terminal ne plante pas !!!!. Encore une fois, bravo aux développeurs.
Mais pour être juste
il faut également dire qu'en entrant dans les détails de la programmation
un trader commence à examiner l'ensemble du phénomène marché-négociation-stratégie
avec une vue plus claire. Et comme ils acquièrent de l'expérience, ils passent au crible
Et à mesure que l'expérience s'accumule, les mauvaises lignes de pensée sont éliminées et les lignes de pensée prometteuses sont identifiées.
à SK
Variables, variables statiques.
...Je pense que vous négligez le fait que les fonctions spéciales sont réexécutées à chaque tick. Les variables statiques conservent leur valeur et ne sont pas initialisées, tandis que les variables non statiques sont initialisées en fonction du code. Dans votre code, la variable entière tik est initialisée à zéro par défaut.
Dans instik(), tout se passe comme prévu. Dans start(), au moment de Alert(), la valeur de la variable tik est 1, ce qui est ce que Alert() sort.
Mais ce n'est pas toute la vérité. Comme la variable tik n'est pas déclarée comme statique, sa valeur n'est pas enregistrée. C'est-à-dire qu'au prochain appel pour l'exécution de la fonction spéciale start(), la variable tik sera de nouveau initialisée à zéro. Et tout recommence. Par conséquent, les sorties d'Alert en toute sécurité se succèdent.
La sortie du tutoriel du langage MQL4 est prévue pour le 1er février et il est déjà intégré au site web MQL4.community. La traduction en anglais est en bonne voie.
Comment implémenter dans l'Expert Advisor la possibilité de fermer un ordre - par un contre-ordre ? Je ne l'ai pas trouvé dans le tutoriel...