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

 
Climber:
Qu'est-ce qui ne va pas ici ? Qu'est-ce qui fait hurler les erreurs ?

Le compilateur donne une erreur : Start function not found and cannot be run, ce qui signifie : la fonction start() n'a pas été trouvée et ne peut être exécutée.

C'est tout à fait naturel. Si le programme ne comporte pas de fonction spéciale, il ne peut pas être exécuté dans le terminal client MT.

 
Voici une erreur La fonction "GetExtremumZZZBar" n'est pas référencée et sera supprimée du fichier exp (en fait, c'est clair, la fonction n'est utilisée nulle part). J'ai écrit un commentaire dans le code que j'ai ajouté, après quoi les erreurs ont disparu.

//+------------------------------------------------------------------+
//|                                                         1111.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
}    // Добавил вот эту скобку, точнее переместил с конца, в результате 1 ошибка
int GetExtremumZZBar(string sym="", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
  if (sym=="") sym=Symbol();
  double zz;
  int    i, k=iBars(sym, tf), ke=0;
 
  for (i=1; i<k; i++) {
    zz=iCustom(sym, tf, "ZigZag", dp, dv, bc, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(i);
    }
  }
  Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}   
//----
   
//+------------------------------------------------------------------+
Au moment où j'écrivais ce message, il me semblait avoir compris mon problème. La fonction ne doit pas se trouver dans le corps de la fonction de départ. Seul l'appel de cette fonction doit se trouver dans le corps du start. N'est-ce pas ?
 
Climber:
 
En écrivant ce billet, je pense avoir trouvé la solution à mon problème. La fonction ne doit pas se trouver dans le corps de la fonction de départ. Seul l'appel de cette fonction doit se trouver dans le corps du start. N'est-ce pas ?

Oui
 
Climber:
En écrivant ce billet, je pense avoir trouvé la solution à mon problème : la fonction ne doit pas se trouver dans le corps de la fonction de démarrage. Seul l'appel de cette fonction doit se trouver dans le corps du start. N'est-ce pas ?

Correct. Aucune fonction ne peut être décrite dans le corps d'une autre fonction.
 
Climber:
En écrivant ce billet, je pense avoir trouvé la solution à mon problème : la fonction ne doit pas se trouver dans le corps de la fonction de démarrage. Seul l'appel de cette fonction doit se trouver dans le corps du start. N'est-ce pas ?
Oui, jetez un coup d'œil ici : Tutoriel MQL4 Structure du programme MQL4 .
 
Une nouvelle question s'est posée :))
Est-il nécessaire pour un EA multi-devises d'ouvrir les graphiques de tous les symboles utilisés ?
Si un tick apparaît pour le symbole sur le graphique duquel l'EA est attaché, les mêmes critères de transaction pour les autres symboles seront vérifiés. Dans ce cas, je veux utiliser la multidevise pour augmenter le nombre d'ordres ouverts dans la journée. Nous n'ouvrirons pas beaucoup d'ordres car nous travaillons avec des graphiques horaires, nous ne recevons manuellement pas plus de deux ordres d'un symbole par jour.

Et ma prochaine tâche effrayante est l'écriture d'un bloc de comptabilité des ordres pour le conseiller expert multidevises. Mais je suis content que les ordres en attente ne soient pas utilisés dans mon conseiller expert (au moins, cela réduit le blocage comptable :)). Pouvez-vous me suggérer de lire quelque chose sur la comptabilité multidevise à ce sujet ?
 
Climber:
J'ai une nouvelle question :))
Est-il obligatoire pour un EA multi-devises d'ouvrir les graphiques de tous les symboles utilisés ?

Non. Mais tous les symboles utilisés sont d.b. dans la fenêtre Market Watch.

 

Pouvez-vous me dire comment arrêter une EA? Je veux qu'il cesse de fonctionner lorsqu'un stop loss est déclenché. Si quelqu'un peut me donner un indice, veuillez écrire à mininp@list.ru. Merci d'avance !

 
Mister_X:

Pouvez-vous me dire comment arrêter une EA ? Je veux qu'il cesse de fonctionner lorsqu'un stop loss est déclenché. Si quelqu'un peut me donner un indice, veuillez écrire à mininp@list.ru. Merci d'avance !


Il est peut-être plus facile de ne pas s'arrêter, mais de vérifier s'il y a un ordre d'arrêt et s'il y en a un, de ne rien faire.
 
J'ai trouvé un excellent article sur la comptabilisation des commandes complexes dans SK"Book orders in a large program".
Je travaille actuellement manuellement sur mon compte de démonstration. Je travaille manuellement sur ce dernier système depuis environ un mois maintenant.

J'ai commencé avec un dépôt de 1 000ème et un effet de levier de 1/100ème. La taille minimale des lots est toujours de 100 $. Je travaille avec 3-4 paires de devises. Au cours des deux premières semaines, j'ai réussi à multiplier mon dépôt par deux, c'est-à-dire que mon dépôt est devenu = 2 000 dollars. Maintenant, c'est environ 3000.

Pendant cette période, le profit maximum a été de 118 points pour un seul instrument (à partir d'un seul ordre, bien sûr). En moyenne, je ferme les ordres avec un profit de 40-50 points. Pour un tel ordre, une paire d'ordres est fermée avec des stops avec une perte totale proche de 10 points. 100 points par jour au total par plusieurs instruments. Et ce n'est pas moins qu'un dépôt multiplié par deux en un mois. Et si l'on calcule en tenant compte des réinvestissements, alors après 10 mois, le dépôt sera de 1 million 24 mille dollars américains.

Tout serait bien, nous devrions nous réjouir, mais il y a une question raisonnable : quelle société de courtage donne si effrontément devenir populaire en 10 mois avec 1000 dollars ???? .

J'essaie d'écrire un conseiller expert, je devrais faire du commerce par moi-même.

Je dois être honnête avec vous, je pense à tout cet événement, n'est-ce pas une arnaque ?