Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1002

 
Seric29:
Come implementare la variabile di tipo datetame e colore in una libreria dll C++? Come chiamare la funzione Print() in dll con cosa sostituirla, perché c++ non ce l'ha, e si può fare a tutti, perché non c'è debugging in mql4 e si fanno errori spesso o è difficile scrivere qualcosa la prima volta, cosa si può fare?

Hai provato a premere F1?

"Il tipo datetime è progettato per memorizzare la data e l'ora come il numero di secondi trascorsi dal 01 gennaio 1970. Occupa 8 byte di memoria".

con il tipo di colore - praticatelo voi stessi :-)

---

Quando si esegue il debug di dll, invece della funzione Print - stampa su file e guarda in esso.

 
Maxim Kuznetsov:

Hai provato a premere F1?

con il tipo di colore - praticatelo voi stessi :-)

---

Quando si esegue il debug di dll, invece della funzione Print - stampa su file e guarda in esso.

Ho capito di Print(), grazie per il suggerimento, e la console può essere emessa, perché non posso lavorare con i file in C++ e qui, e per quanto riguarda datetime, non capisco perché l'hai scritto?

 
Seric29:

Ho capito di print(), grazie per il consiglio, e la console può essere emessa, perché non so ancora come lavorare con i file in C++ e qui, e per quanto riguarda datetime, non ho capito perché l'hai scritto?

È tutta una questione di rappresentazione in C/C++

è un intero senza segno a 8 byte unixtime, cioè uint64_t o time64_t come preferite

 
Maxim Kuznetsov:

e dice tutto sulla rappresentazione in C/C++

è un intero senza segno a 8 byte unixtime, cioè uint64_t o time64_t come preferite

né uint64_t né time64_t non funziona, ho provato a scrivere anche <uint64_t >. E come lavorare con i colori non è anche chiaro, non ho trovato spiegazioni anche in rete, sono impegnato in questa domanda 2-th anno?

 
Seric29:

né uint64_t né time64_t funzionano Ho provato a scrivere <uint64_t > anche questo non funziona. E non so nemmeno come lavorare con i colori, non ho trovato nessuna spiegazione sul web, ho avuto a che fare con questo problema per 2 anni.

Dovresti studiare prima C/C++, senza MetaTrader e DLL. Altrimenti non sarà altro che frustrazione e fatica sprecata.

#include <ctime>

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

#include <cstdint>

vedere 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:

Dovresti imparare prima il C/C++, senza MetaTrader e DLL. Altrimenti sarete frustrati e lavorerete invano.

#include <ctime>

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

#include <cstdint>

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

Se ho capito bene, prende punti estremi e li conta in secondi, ma non so come visualizzare il solito formato. Vorrei alcuni esempi. E come lavorare con i colori?

 

Non è chiaro come generare una data in questo formato 2008.09.23 00:00 se la variabile time_t memorizza i secondi?

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

Qualsiasi esempio che posso trovare su internet non si compila nemmeno, eccone uno

int main()
{ 
  time_t rawtime;
  struct tm * ptm;
  time( &rawtime );                                     // определить текущую дату в секундах
  ptm = gmtime( &rawtime ); 
return 0;}
Ovviamente, è impossibile capire qualcosa in questo modo.
 

Salve.

Potete dirmi perché quando apro un sellstop, se specifico una variabile nel parametro price che memorizza il prezzo desiderato, giura.


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" - в которой хранится цена, то он снова ругается, но гораздо меньше.
     // Его не устраивает эта переменная

Cosa devo fare in questo caso?

E un'altra domanda. Qual è il modo migliore per controllare se l'ordine è aperto dopo? Cioè, se questo è il primo ordine, allora l'attuale codice per selezionare le compravendite dallo stack e controllarne il tipo andrà bene. Ma in seguito, è venuto fuori un pensiero che potrebbe esserci un po' di confusione. Se c'è più di un ordine, come facciamo a sapere se questo ordine si è appena aperto o è già lì da molto tempo? Ho controllato il forum e consigliano di usare il prezzo come base. Dovremmo cercare di determinare se c'è un ordine a questo prezzo +/- deviazione. Ma ancora una volta, la stessa domanda. Come facciamo a sapere se questo è un ordine nuovo o vecchio? Se l'ordine viene aperto da uno in sospeso o se l'ordine esisteva già e il prezzo è semplicemente al suo livello.

 
Gilmor:

Salve.

Potete dirmi perché quando apro un sellstop, se specifico una variabile nel parametro price che memorizza il prezzo desiderato, giura.


Cosa devo fare in questo caso?

Tenete d'occhio l'accoppiamento delle staffe.

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