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

 
Seric29:
Comment implémenter une variable de type datetame et color dans une bibliothèque dll C++ ? Comment appeler la fonction Print( ) dans une dll ; par quoi la remplacer, parce que c++ ne l'a pas, et pouvez-vous le faire du tout, parce qu'il n'y a pas de débogage dans mql4 et que vous faites souvent des erreurs ou qu'il est difficile d'écrire quelque chose la première fois, que pouvez-vous faire ?

Avez-vous essayé d'appuyer sur F1 ?

"Le type datetime est conçu pour stocker la date et l'heure sous la forme du nombre de secondes écoulées depuis le 01 janvier 1970. Il occupe 8 octets en mémoire."

avec le type de couleur - pratiquez-le vous-même :-)

---

Lorsque vous déboguez une dll, au lieu d'utiliser la fonction Print, imprimez vers un fichier et regardez dedans.

 
Maxim Kuznetsov:

Avez-vous essayé d'appuyer sur F1 ?

avec le type de couleur - pratiquez vous-même :-)

---

Lorsque vous déboguez une dll, au lieu d'utiliser la fonction Print, imprimez vers un fichier et regardez dedans.

J'ai compris pour Print(), merci pour l'astuce, et la console peut être sortie, car je ne peux pas travailler avec des fichiers en C++ et ici, et quant à datetime, je ne comprends pas du tout pourquoi vous l'avez écrit ?

 
Seric29:

Je comprends pour print(), merci pour le conseil, et la console peut être sortie, parce que je ne sais pas encore comment travailler avec des fichiers en C++ et ici, et quant à datetime, je n'ai pas compris pourquoi vous l'avez écrit du tout ?

Tout est question de représentation en C/C++.

c'est un entier non signé de 8 octets unixtime, c'est-à-dire uint64_t ou time64_t selon votre préférence

 
Maxim Kuznetsov:

et cela dit tout sur la représentation en C/C++

c'est un entier non signé de 8 octets unixtime, c'est-à-dire uint64_t ou time64_t selon votre préférence

ni uint64_t ni time64_t ne fonctionnent, j'ai essayé d'écrire <uint64_t > aussi. Et comment travailler avec les couleurs n'est pas clair non plus, je n'ai pas trouvé d'explications dans le réseau aussi, je suis engagé dans cette question 2-th année ?

 
Seric29:

ni uint64_t ni time64_t ne fonctionne j'ai essayé d'écrire <uint64_t > ne fonctionne pas non plus. Et je ne sais pas non plus comment travailler avec les couleurs, je n'ai pas trouvé d'explications sur le web, cela fait 2 ans que je suis confronté à ce problème.

Vous devriez juste étudier le C/C++ d'abord, sans MetaTrader et DLL. Sinon, vous n'aurez que des frustrations et des efforts inutiles.

#include <ctime>

// или для uint64_t (что на мой взгляд вернее)

#include <cstdint>

voir http://www.cplusplus.com/reference/

Reference - C++ Reference
Reference - C++ Reference
  • www.cplusplus.com
The elements of the C language library are also included as a subset of the C++ Standard library. These cover many aspects, from general utility functions and macros to input/output functions and dynamic memory management functions: Containers Input/Output Stream Library Provides functionality to use an abstraction called streams specially...
 
Maxim Kuznetsov:

Vous devriez juste apprendre C/C++ d'abord, sans MetaTrader et DLL. Sinon, vous serez frustré et travaillerez en vain.

#include <ctime>

// или для uint64_t (что на мой взгляд вернее)

#include <cstdint>

voir http://www.cplusplus.com/reference/

Si je comprends bien, il prend des points extrêmes et les compte en secondes, mais je ne sais pas comment afficher le format habituel. J'aimerais avoir des exemples. Et comment travailler avec les couleurs ?

 

Il n'est pas clair comment générer une date dans ce format 2008.09.23 00:00 si la variable time_t stocke les secondes ?

time_t Data()
{ return 100;} Что функции в с++ так выглядят
 

Tous les exemples que je peux trouver sur Internet ne compilent même pas, en voici un.

int main()
{ 
  time_t rawtime;
  struct tm * ptm;
  time( &rawtime );                                     // определить текущую дату в секундах
  ptm = gmtime( &rawtime ); 
return 0;}
Évidemment, il est impossible de comprendre quoi que ce soit de cette façon.
 

Bonjour.

Pouvez-vous me dire pourquoi lorsque j'ouvre un sellstop, si je spécifie une variable dans le paramètre de prix qui stocke le prix désiré, il jure.


int ZeroBufer;              // ticket zero
struct Order_Data_S // Структура которая заполняется по мере поступления данных.
  {
   int               ticket;
   double            price;
  };
Order_Data_S OrderBufer_S[100];

void OnTick()
  {
  double prise_s = MarketInfo(Symbol(), MODE_BID);
  double zero = prise_s;
  OrderSelect(OrderBufer_B[0].ticket,SELECT_BY_TICKET,MODE_TRADES);  //return value of 'OrderSelect' should be checked  

   if(OrderType() == 0) // открыт bay ордер
     {
      ZeroBufer = OrderSend(Symbol(),OP_SELLSTOP,lots,OrderBufer_S[0].price),3,0,0,"bs2",2,0,clrRed);  // sell stop на шаг сетки.  // 'OrderSend' - wrong parameters count. 
      //',' - unexpected token. И еще 100500 ошибок на эту строку. OrderBufer_S[0].price не пустой. Там уже находится нужная цена.
      
      if(OrderSelect(ZeroBufer,SELECT_BY_TICKET,MODE_TRADES) != true)
        {
         ZeroBufer = OrderSend(Symbol(),OP_SELLSTOP,lots,zero),3,0,0,"bs2",2,0,clrRed);
        }  // повторить, пока не откроет
     }
     }
     
     // Если вместо "OrderBufer_S[1].price" воткнуть другую переменную "zero" - в которой хранится цена, то он снова ругается, но гораздо меньше.
     // Его не устраивает эта переменная

Que dois-je faire dans ce cas ?

Et une dernière question. Quel est le meilleur moyen de vérifier si la commande est ouverte ensuite ? En d'autres termes, s'il s'agit du premier ordre, le code actuel permettant de sélectionner les transactions dans la pile et de vérifier leur type fera l'affaire. Mais plus tard, on s'est dit qu'il pourrait y avoir une certaine confusion. S'il y a plus d'une commande, comment savoir si cette commande vient d'être ouverte ou si elle est déjà là depuis longtemps ? J'ai consulté le forum et ils conseillent de se baser sur le prix. Nous devons essayer de déterminer s'il existe un ordre à ce prix +/- l'écart. Mais encore une fois, la même question. Comment savoir s'il s'agit d'un ordre nouveau ou ancien ? Si l'ordre est ouvert à partir d'un ordre en attente ou si l'ordre existait déjà et que le prix est simplement à son niveau.

 
Gilmor:

Bonjour.

Pouvez-vous me dire pourquoi lorsque j'ouvre un sellstop, si je spécifie une variable dans le paramètre de prix qui stocke le prix désiré, il jure.


Que dois-je faire dans ce cas ?

Gardez un œil sur l'appariement des parenthèses.

ZeroBufer = OrderSend(Symbol(),OP_SELLSTOP,lots,OrderBufer_S[0].price),3,0,0,"bs2",2,0,clrRed);