Version bêta du livre en ligne sur la programmation MQL4 - par Sergey Kovalev (SK.) - page 9

 
Climber:
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.
Ce n'est pas un gadget, mais il faut garder l'esprit ouvert. Lisez les messages de Korey à partir de cette page pour y voir plus clair. Et jetez un coup d'œil à mon premier "graal".
 
J'ai déjà lu des choses sur le Graal:)
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 ?
 
Climber:
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 ?

 
SK. писал (а):
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 ?
Je n'en ai pas encore, mais si j'en avais une, je pense qu'elle m'aiderait à comprendre beaucoup de choses. Je suis également enclin à la chance. C'est moi manuellement sur la démo pour le moment.

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.
 
Climber:
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.
À mon avis, le travail nécessaire à la création d'une stratégie solide et rentable est environ deux ordres de grandeur (100 fois) plus élevé que le travail nécessaire à l'apprentissage de la langue. Par essence, la programmation n'est qu'un outil technique, largement prévisible, et donc soumis à la volonté du créateur de la stratégie. Mais pour être juste, il faut aussi dire qu'en entrant dans les détails de la programmation, un trader commence à regarder l'ensemble du phénomène de la stratégie de négociation sur le marché avec une vision plus claire. En ce sens, il est difficile de surestimer la pratique de la programmation. Par conséquent, les développeurs qui ont décidé de miser sur l'auto-trading ont eu raison au centuple.
 

à 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.

 
SK. писал (а):

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.
Je suis d'accord à 100%. J'ai même été surpris au début, je pense que j'essaie d'apprendre la programmation et j'ai appris plus sur le commerce que je ne le savais auparavant. Je vais donc acquérir de l'expérience pour l'instant :)
 
Korey:

à 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.

//----------------------------------------------------------------------------------
int start()
   {
   int tik;                // Инициализация нолём на каждом тике
   instik(tik);            // Вызов функции, передача параметра по ссылке
   Alert (" tick=",tik);   // Всё время выводит 1, как и ожидается
   return;
   }
//----------------------------------------------------------------------------------
double instik(int &t)      // Функция изменяет переменную в вызывающей программе
   {                       // При каждом обращении заходит 0
   t++;                    // Увеличение значения на 1, как и заказано, т.е.
   }                       // ..при каждом исполнении уходит 1
//----------------------------------------------------------------------------------

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.

 
Félicitations à Sergey Kovalev !

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.
 
Sergei !
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...