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

 
Alexander Layzerevich:

Correction du code MT5 pour envoyer les données à l'Indicateur :

Mais l'erreur est la même.

Arrêtez de jeter un coup d'oeil dans du code merdique écrit en mql4 et vous l'aurez plus rapidement.

 
Igor Makanu:

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

PS : google trouve le paramètre VS

J'ai essayé de chercher une telle configuration moteur de recherche donne des réponses que comme le contraire de 32 à 64 et en général et n'a pas compris comment faire ce paramètre. Si je comprends un peu ici, je l'ai par défaut, 32 est...

Et j'ai trouvé un menu avec un réglage.

Donc je ne sais pas si c'est par défaut à 32 ici.

 

Pouvez-vous me dire pourquoi le même code fonctionne dans MT4 mais pas dans MT5 ? Dans MT5, la variable strNum est toujours égale à 1, mais dans MT4, le compteur ++ fonctionne comme il le devrait et strNum = nombre de lignes dans le fichier.

int strNum;
void OnStart()
  {
 FileNum();
 Alert1();
  } 

  void FileNum()
{
      int handle=FileOpen("File.csv",FILE_CSV|FILE_READ,';');
      strNum=0; 
      while(!FileIsEnding(handle))
{
      FileReadString(handle);
      strNum++;
      if(FileIsEnding(handle)==true)
      break;
}
      FileClose(handle);
}

      void Alert1()
{
      Alert (strNum);
}
 
Seric29:

J'ai essayé de rechercher un tel paramètre ; le moteur de recherche donne des réponses qui ressemblent à l'inverse de 32 à 64 et en général je n'ai pas compris comment faire ce paramètre. Si je comprends un peu, voici mon paramètre par défaut de 32

Et j'ai trouvé un menu avec un réglage.

Donc je ne sais pas si c'est 32 par défaut ici.

Avec les bibliothèques, il y a aussi le truc du /MT ou du /MD, je les confonds tout le temps :-) C'est aussi quelque part dans la jungle des studios conviviaux.

Montrez-moi l'ensemble du projet, y compris tout ce que vous y avez fait en C++ et Mql. Je ne pense pas que ce soit un droit d'auteur féroce :-)
nous allons vous dire ce qui ne va pas, sinon vous allez fatiguer tout le monde avec la télépathie pendant longtemps.


 
Maxim Kuznetsov:

Il y a aussi le truc de la bibliothèque /MT ou /MD, je les confonds tout le temps :-) C'est aussi quelque part dans la jungle des studios conviviaux.

Montrez-moi l'ensemble du projet, y compris tout ce que vous avez fait en C++ et Mql. Je ne pense pas que ce soit le pire des droits d'auteur :-)
Nous vous dirons ce qui ne va pas avec le code complet, sinon vous allez fatiguer tout le monde avec la télépathie pendant un long moment.


Fichier avec l'extension .def

fichier avec l'extension .cpp

dans mql4, j'ai simplement glissé un fichier du dossier des bibliothèques du terminal

#import "dllmt42.dll"
 int _add(int a=0, int b=0);
#import

Et ensuite appeler bêtement la fonction, elle renvoie juste 18 et ne fait rien d'autre, c'est comme une expérience pour voir si ça marche ou pas.

 
Seric29:

Fichier avec une extension .def

Fichier avec l'extension .cpp

Je viens de copier le fichier du dossier Libraries du terminal vers mql4.

Ensuite, j'appelle simplement la fonction, elle renvoie 18 et ne fait rien d'autre, c'est comme une expérience pour voir si ça marche ou pas.

Pourquoi ajoutez-vous un tiret pour ajouter ? Débarrassez-vous-en.

tous les identificateurs dans tous les fichiers doivent être strictement identiques, sans âge fantaisiste :-)

 
Alexey Viktorov:

Arrêtez de jeter un coup d'oeil dans du code merdique écrit en mql4 et vous l'aurez plus rapidement.

Tout, comme vous le dites, le "code de merde" est écrit selon l'aide de base du langage.https://www.mql5.com/ru/docs/basis/function/call

Il est également dit"Une fonction ne peut pas être déclarée à l'intérieur d'une autre fonction."

C'est exactement ce que ça dit. C'est pour ça que ça ne marche pas.

C'est pourquoi j'essaie de trouver des experts pour savoir comment appeler la fonction(Deviation(Kanal)). Quand cela dépend de l'appel de la fonction(double Enveloppes(...))

upd : Le problème a été partiellement résolu.
 
Maxim Kuznetsov:

Pourquoi ajoutez-vous une ligne __dash à l'addition ? Débarrassez-vous-en.

tous les identifiants dans tous les fichiers doivent être strictement identiques, pas de fantaisie sur l'âge :-)

Eh bien, tout le monde l'a fait selon les instructions et je l'ai fait, maintenant je vais l'enlever et voir. Dans l'ensemble, ça a marché, ça a donné 18. Merci, je vais continuer à expérimenter.

 
Alexander Layzerevich:

Tout, comme vous le dites, le "code de merde" est écrit selon l'aide de base du langage.https://www.mql5.com/ru/docs/basis/function/call

Il est également dit"Une fonction ne peut pas être déclarée à l'intérieur d'une autre fonction."

C'est exactement ce que ça dit. C'est pour ça que ça ne marche pas.

C'est pourquoi j'essaie de trouver des experts pour savoir comment appeler la fonction(Deviation(Kanal)). Quand il dépend de l'appel d'une fonction de l'indicateur(double Enveloppes(...))

upd : Le problème a été partiellement résolu.

Vous avez déjà appelé et passé la valeur renvoyée par la fonctionDéviation(Kanal) à la fonctionEnveloppes(........)*.

et dans la fonctionEnveloppes(........) elle-même, vous déclarez le dernier paramètre, qui prendra la valeur suivante


de même

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

Salutations à tous. Bonne chance dans la vie et profit dans le travail.

J'appelle à l'aide (inattendu, hein ? :) )

...................................................

Et c'est là que j'ai été bloqué :). Ce qu'il faut utiliser à la place de GetProfitOpenPosInPoint(Symbol(),OP_BUY,Magic). The_failure_level(Symbol(),OP_BUY,Magic) devrait être utilisé mais comment l'obtenir...


Je serai heureux si vous m'aidez.
Z.U. Si vous donnez des conseils, je vous en prie, gardez à l'esprit que je suis encore très vert, ne soyez pas paresseux pour me donner un peu plus de détails, vous savez, comme si : FOREST THERE, n'oubliez pas d'indiquer la direction <------ || ------>.

Merci de votre attention :).

Bonjour, après-midi, soir, nuit (souligné).

Je ne veux pas être impoli, mais je vais vous poser une question. J'ai pensé à mon mess..... Je suis censé avoir besoin de la dernière OP_BUY && OP_SELL, son Magik || ticket || open_price..... Ai-je raison ? Si je trouve la dernière commande, je peux en théorie calculer la distance entre celle-ci et l'offre actuelle. J'ai téléchargé quelques "moyenneurs" ici, je pense qu'il devrait y avoir quelque chose de similaire, voire d'identique, ..... pour me rendre compte que j'ai trouvé ce que je cherchais...... :)

Si cela ne dérange personne :), je continuerai à espérer vos conseils, au moins une référence à la source de l'information dont j'ai besoin (si ce n'est pasle livrede Kovalev, je l'ai commencé il y a 3 jours).

Raison: