[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 616

 

rigonich

Vingt-cinq ans encore. J'ai demandé très précisément si j'avais fait le bon choix au départ. Vous n'avez pas répondu à une question directe, vous n'avez pas dit un mot en substance.

Oui, bien sûr, je lis un manuel, mais comme j'ai une profession qui n'a rien à voir avec la programmation, il est clair que je demande un algorithme clair, simple et concret. C'est difficile à comprendre ? Si vous trouvez qu'il est difficile de répondre sur le fond, alors pourquoi se donner la peine ? Va-t'en.

Et en guise de commentaire - vous n'avez aucune idée du nombre de personnes que je rencontre et que je peux, en tant que médecin généraliste, qualifier de stupides. Il est difficile d'imaginer que les adultes ne comprennent pas les questions de base sur leur propre santé. Si je réagis à tout le monde comme vous le faites, je ne vaudrai rien en tant que spécialiste. Dormez bien.

_______________

S'il vous plaît - quelqu'un m'envoie un email à neroy(dog)mail.ru qui peut carrément prendre le code EA et y coller ce dont vous avez besoin au bon endroit.

 
xant:

rigonich

Vingt-cinq ans encore. J'ai demandé très précisément si j'avais fait le bon choix au départ. Vous n'avez pas répondu à une question directe, vous n'avez pas dit un mot en substance.

Oui, bien sûr, je lis un manuel, mais comme j'ai une profession qui n'a rien à voir avec la programmation, il est clair que je demande un algorithme clair, simple et concret. C'est difficile à comprendre ? Si vous trouvez qu'il est difficile de répondre sur le fond, alors pourquoi se donner la peine ? Va-t'en.

Et en guise de commentaire - vous n'avez aucune idée du nombre de personnes que je rencontre et que je peux, en tant que médecin généraliste, qualifier de stupides. Il est difficile d'imaginer que les adultes ne comprennent pas les questions de base sur leur propre santé. Si je réagis à tout le monde comme vous le faites, je ne vaudrai rien en tant que spécialiste. Dormez bien.

_______________

S'il vous plaît - quelqu'un m'envoie un email à neroy(dog)mail.ru qui peut carrément prendre le code EA et y coller ce dont vous avez besoin au bon endroit.


Vous n'avez pas demandé de prendre votre EA et d'y coller le code requis, vous n'avez pas posté le code de l'EA, vous avez d'abord demandé de l'aide pour résoudre le problème de la perte de données lors de la désactivation de l'EA, lorsque vous avez fait cela, vous avez insulté celui qui vous a aidé, puis vous avez demandé si vous aviez fait la "première étape" correctement, et lorsqu'on vous a dit que c'était faux et que vous avez signalé des erreurs spécifiques, vous avez de nouveau insulté ceux qui vous aident, donc je suppose que personne d'autre ne voudrait faire cela.

P.S. Je ne peux même pas penser à un algorithme plus simple et plus clair que de prendre deux fonctions prêtes à l'emploi, de les copier dans mon EA et de mettre un appel de l'une au début de l'init et de l'autre à la fin du start.

 
rigonich:

C'est en fait votre code, partiellement corrigé par quelqu'un d'autre.


mon code n'a donné aucune erreur. Mais ça n'a pas donné de résultats non plus.

Et son code n'a même pas fonctionné, parce que 24 erreurs....

mais j'ai eu l'idée... et maintenant ça marche.

 

Le compilateur, bien sûr, est inhumain. Maintenant, mon cerveau est presque brisé quant à la raison pour laquelle l'erreur s'affiche.

'(' - définition de fonction inattendue G:\Program_Files_2\MT4-demo\experts\3.mq4 (139, 14)

alors que ce conseiller expert a fonctionné comme un charme hier, mais aujourd'hui je viens d'ouvrir un IF long dans plusieurs if.... court.

Il s'avère que j'ai manqué une virgule inversée à environ un KILLOMETre de l'endroit où le compilateur a montré l'erreur ! De plus, il n'a pas parlé de la virgule inversée, il n'était pas satisfait de la FONCTION, vous voyez.... :((((((((

 

rigonich

Je pourrais vous répondre point par point à chacun de vos mots, mais je n'en vois plus l'intérêt. Si quelqu'un est têtu, il ne sert à rien d'expliquer quoi que ce soit. La question était de savoir comment s'organiser. Ensuite, lorsque vous avez indiqué que les variables globales sont préférables à l'écriture dans un fichier, la question s'est posée de savoir comment le faire correctement. Puis votre cosignataire nerveux a donné un bout de code, ne manquant pas une occasion de plaisanter. C'est simple - une partie du code va dans le bloc d'initialisation, une partie du bloc va dans le bloc principal de l'EA.

C'est ce qui va dans le bloc d'initialisation :

 void fGet_MineGV (string fs_PrefName = "") // префикс имени переменной
     {
        string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
        if (GlobalVariableCheck (ls_Name)) SUA = GlobalVariableGet (ls_Name);
        ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
        if (GlobalVariableCheck (ls_Name)) SUA1 = GlobalVariableGet (ls_Name);
        ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
        if (GlobalVariableCheck (ls_Name)) BUA = GlobalVariableGet (ls_Name);
        ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
        if (GlobalVariableCheck (ls_Name)) BUA1 = GlobalVariableGet (ls_Name);
     }

Voici ce qui va dans le bloc principal

 void fSave_MineGV (string fs_PrefName = "") // префикс имени переменной
{
 static datetime ldt_NewBar;
 datetime ldaTBeginBar = iTime (Symbol(), 1, 0)
 //---- Сохраняемся в начале каждой минуты
 if (ldt_NewBar == ldaTBeginBar) return;
 ldt_NewBar = ldaTBeginBar;
 //---- Сохраняем поочереди значения каждой переменной
 string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
 GlobalVariableSet (ls_Name, SUA);
 ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
 GlobalVariableSet (ls_Name, SUA1);
 ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
 GlobalVariableSet (ls_Name, BUA);
 ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
  GlobalVariableSet (ls_Name, BUA1);
}

Comme vous pouvez le voir, j'ai renommé les variables.

J'ai donc inséré séquentiellement la deuxième partie du code, en commençant juste après le calcul des variables et jusqu'à la fin du bloc de départ, en essayant de l'insérer avant la dernière accolade.

À en juger par votre explication très professionnelle, c'est ce que j'aurais dû faire, car c'est clair pour tout débutant. Selon vous, cela devrait fonctionner. Mais ce n'est pas le cas. Voici ce que j'ai réussi à obtenir de mieux :

8 error(s), 0 warning(s)        
 

n'a pas pu trouver la bonne fonction dans la bibliothèque

Taille du TakeProfit de la dernière position fermée.

Peut-être que quelqu'un en a un ?

 

Ces chaînes sont-elles autorisées ?

si ( (A==1 && B==2) && (C==2 || D==3) && E==4)

c'est-à-dire à la fois AND et OR sur une même ligne ?

 
 lottamer:

Ces chaînes sont-elles autorisées ?

si ( (A==1 && B==2) && (C==2 || D==3) && E==4)

c'est-à-dire à la fois AND et OR sur une même ligne ?


La réponse est oui. Certaines langues ne sont-elles pas autorisées ? Quoi, ils doivent tout réduire à des formes conjonctives et disjonctives-normales ?
 
lottamer:

n'a pas pu trouver la bonne fonction dans la bibliothèque

Taille du TakeProfit de la dernière position fermée.

Peut-être que quelqu'un en a un ?


Écrivez-le vous-même - il y a une seule boucle. Essaie juste de le faire. Et si vous échouez, montrez-nous le code de votre boucle - nous vous aiderons.
 
xant:

rigonich

Je pourrais vous répondre point par point à chacun de vos mots, mais je n'en vois plus l'intérêt. Si quelqu'un est têtu, il ne sert à rien d'expliquer quoi que ce soit. La question était de savoir comment s'organiser. Ensuite, lorsque vous avez indiqué que les variables globales sont préférables à l'écriture dans un fichier, la question s'est posée de savoir comment le faire correctement. Puis votre cosignataire nerveux a donné un bout de code, ne manquant pas une occasion de plaisanter. C'est simple - une partie du code va dans le bloc d'initialisation, une partie du bloc va dans le bloc principal de l'EA.

C'est ce qui va dans le bloc d'initialisation :

Voici ce qui va dans le bloc principal

Comme vous pouvez le voir, j'ai renommé les variables.

J'ai donc inséré séquentiellement la deuxième partie du code, en commençant juste après le calcul des variables et jusqu'à la fin du bloc de départ, en essayant de l'insérer avant la dernière accolade.

À en juger par votre explication très professionnelle, c'est ce que j'aurais dû faire, car c'est clair pour tout débutant. Selon vous, cela devrait fonctionner. Mais ce n'est pas le cas. Voici ce que j'ai réussi à obtenir de mieux :


Lisez attentivement. Ces deux blocs sont appelés descriptions de fonctions et ne peuvent pas être placés à l'intérieur d'autres descriptions de fonctions. Dans l'init devrait être placé

{
fGet_MineGV() ;
}

et dans start un appel similaire à la seconde fonction. Les fonctions elles-mêmes doivent être placées séparément dans votre EA, ni dans init ni dans start dans une fonction personnalisée.

Etvotre cosignataire nerveux ne vous a pas donné une partie du code, mais deux fonctions toutes faites qu'il a écrites pour vous.

Raison: