Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 835

 
Maxim Kuznetsov:

même le compilateur mettra en évidence "le résultat de OrderSelect doit être vérifié" dans le premier cas ;-)

Si vous changez pour le premier if (!OrderSelect(...)) continue ; alors les options sont identiques.

Dans le premier, le code est visuellement linéaire, dans le second, il ressemble à un escalier. Je préfère le premier, il est plus facile à lire et en général l'apparition d'onglets logiques profonds {{{{ }}}} indique qu'il est temps de changer quelque chose :-)

Merci. L'écriture en escalier affecte-t-elle la vitesse du code ? C'est plus facile pour moi de comprendre l'écriture échelonnée.

 
novichok2018:

Merci. L'enregistrement en escalier affecte-t-il la vitesse d'exécution du code ? C'est plus facile pour moi de comprendre l'écriture en escalier.

C'est l'algorithme qui influence en premier lieu la vitesse d'exécution. Et la façon dont vous le représentez dans le code n'a pas vraiment d'importance.

Ce n'est pas à ça que tu penses.

Vous écrivez du code afin de pouvoir travailler avec lui plus tard. Vous l'écrivez donc comme bon vous semble et ne vous encombrez pas de problèmes que vous ne rencontrez pas dans la réalité.

Eh bien, vous n'avez pas de problèmes de vitesse que vous devez éviter avec des astuces et des particularités de codage. Tout simplement garanti, vous ne le faites pas.

Lorsqu'ils apparaîtront (ce qui est peu probable), vous optimiserez alors les performances.

 
Maxim Kuznetsov:

La vitesse d'exécution est principalement affectée par l'algorithme. Et la façon dont vous le représentez en code n'est pas si importante.

Ce n'est pas à ça que tu penses.

Vous écrivez du code afin de pouvoir le travailler vous-même par la suite. Vous l'écrivez donc comme bon vous semble et ne vous encombrez pas de problèmes que vous ne rencontrez pas dans la réalité.

Eh bien, vous n'avez pas de problèmes de vitesse que vous devez éviter avec des astuces et des particularités de codage. Juste garanti, vous ne le faites pas.

Quand (ce qui a peu de chances d'arriver) vous optimiserez votre code.

Merci beaucoup ! Très compréhensible.

 
Est-il possible dans les anciens dossiers de programmes mt4 de travailler encore sur XP vindos là et installé, si oui comment.
 
Veuillez m'aider à répondre à une question :https://www.mql5.com/ru/forum/160683/page833#comment_11585085
Любые вопросы новичков по MQL4, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4, помощь и обсуждение по алгоритмам и кодам
  • 2019.05.06
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Alexander Layzerevich:
Veuillez m'aider à répondre à cette question :https://www.mql5.com/ru/forum/160683/page833#comment_11585085

Je doute que ça vous aide, mais c'est à peu près tout :

- Vous avez pris une partie du code de MT5 et vous essayez de le "boulonner" à MT4, ce n'est pas comme ça que les indicateurs sont appelés dans MT4.

- Vous n'avez pas déclaré l'en-tête de la fonction correctement

- MT4 ne dispose pas de la fonction CopyBuffer() intégrée.

Cela ne fonctionnera pas en général, cherchez d'autres options pour ajouter des parties de code supplémentaires - la syntaxe de MQL4 et MQL5 est similaire à 95%, mais vous ne pouvez pas copier inconsidérément des parties de code entre les plateformes

 
Igor Makanu:

Je doute que ça vous aide, mais c'est à peu près tout :

- Vous avez pris une partie du code de MT5 et vous essayez de le "boulonner" à MT4, ce n'est pas comme ça que les indicateurs sont appelés dans MT4.

- Vous n'avez pas déclaré l'en-tête de la fonction correctement

- MT4 ne dispose pas de la fonction CopyBuffer() intégrée.

la syntaxe de MQL4 et MQL5 est similaire à 95%, mais vous ne pouvez pas copier inconsidérément des sections de code entre les plateformes

Désolé, j'ai oublié de préciser le code pour MT5

Il n'appelle simplement pas la fonction Deviation(int kanal).

Je voulais demander comment le faire correctement ?

 
Igor Makanu:

exécuter l'exemple d'un-à-un de l'article https://www.mql5.com/ru/articles/18

En option, vous avez compilé un projet pour une dll 64-bit, le terminal MT4 est 32-bit, vous devez configurer et compiler le projet pour une dll 32-bit.

Je pose des questions là aussi, j'ai essayé les exemples proposés là, en fait j'ai posté des photos avec des expériences. Eh bien oui il y a quelque chose avec ces versions, normalement tout cela devrait être dans l'aide, comment connecter quelles nuances. On m'a donné quelques liens avec des codes, j'ai ouvert ces classes et les ai fermées, en général une moquerie de l'information, non ce que vous voulez et faites. Eh bien, excusez-moi, je reviendrai sur ce sujet après 20 ans d'expérience en programmation. Comment puis-je savoir que la compilation est pour 64, comment puis-je le découvrir ?

 
Seric29:

Comment puis-je savoir que la dll est compilée pour 64 ?

Regardez les propriétés du projet dans Visual Studio, il devrait y avoir une option pour la plate-forme à compiler la dll - MT4 a besoin d'un code 32 bits.

PS : google trouve le paramètre VS

 
Igor Makanu:

Je doute que ça vous aide, mais c'est à peu près tout :

- Vous avez pris une partie du code de MT5 et vous essayez de le "boulonner" à MT4, ce n'est pas comme ça que les indicateurs sont appelés dans MT4.

- Vous avez déclaré un mauvais en-tête de fonction

- MT4 ne dispose pas de la fonction CopyBuffer() intégrée.

la syntaxe de MQL4 et MQL5 est similaire à 95%, mais vous ne pouvez pas copier inconsidérément des sections de code entre les plateformes

Avez-vous les fragments de code suivants ?

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie.

Toutes les questions des débutants de MQL4, l'aide et la discussion sur les algorithmes et les codes

Alexander Layzerevich, 2019.05.06 17:21

J'essaie de recevoir les données de l' indicateur dans MT5 en utilisant cette fonction :

//************************************************************************************************/
double Envelopes(string symb, ENUM_TIMEFRAMES TF_1, int period, int method, int shift, int price,double Deviation(ENUM_TIMEFRAMES TF_2, int kanal), int buff, int index)
{
  double buf[1];
  int handle=iEnvelopes(Symbol(), TF_1, period, method, shift, price, Deviation(TF_2, kanal), buff);
   if(handle<0)
   {
    Print("Failed to create handle ATR, Error: ",GetLastError());
    return(WRONG_VALUE);
   } else
   {
    if(CopyBuffer(handle,0,index,1,buf)<0)
    {
     Print("Failed to copy data from the indicator ATR, Error: ",GetLastError());
     return(WRONG_VALUE);
    }
   }
   return(buf[0]);
}
//************************************************************************************************/

Je reçois une erreur :


Veuillez indiquer comment corriger le code pour MT5

La mise en évidence n'est pas différente d'une déclaration de fonction. Il s'avère qu'une fonction est déclarée dans les paramètres d'entrée de la fonction.