MQL5 - come creare un datetime personalizzato

 

In MQL5 dovrei creare un tempo di scadenza per gli ordini pendenti impostandolo al giorno attuale, mentre ora e minuti vengono messi in input, come si scrive questa data? ho provato questo codice ma non funziona:

input int  oraChiusura = 22;

input int   minutoChiusura = 30;

datetime m_expiration=__DATETIME__'-'oraChiusura':'minutoChiusura':00'; 


grazie

 

See https://www.mql5.com/it/docs/constants/structures/mqltraderequest and try this sample

//+------------------------------------------------------------------+
//|                                                 PendingOrder.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property description "Esempio di piazzamento dell'ordine pendente"
#property script_show_inputs
#define EXPERT_MAGIC 123456                             // MagicNumber dell'expert
input ENUM_ORDER_TYPE orderType=ORDER_TYPE_BUY_LIMIT;   // tipo d'ordine
//+------------------------------------------------------------------+
//| Piazza l'ordine pendente                                         |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- dichiara ed inizializza la richiesta di trade ed il risultato della richiesta di trade
  MqlTradeRequest request= {};
  MqlTradeResult  result= {};
//--- parametri per piazzare un ordine pendente
  request.action   =TRADE_ACTION_PENDING;                             // tipo di operazione di trade
  request.symbol   =Symbol();                                         // simbolo
  request.volume   =0.1;                                              // volume di 0.1 lotti
  request.deviation=2;                                                // ammonetare di deviazione dal prezzo consentita
  request.magic    =EXPERT_MAGIC;                                     // MagicNumber dell'ordine
  request.expiration=TimeCurrent()+900                              // Will be expired in 15 minutes
  int offset = 50;                                                    // offset from the current price to place the order, in points
  double price;                                                       // prezzo d'innesco dell'ordine
  double point=SymbolInfoDouble(_Symbol, SYMBOL_POINT);               // valore del punto
  int digits=(int)SymbolInfoInteger(_Symbol, SYMBOL_DIGITS);          // numero di cifre decimali (precisione)
//--- controllo del tipo d'operazione
  if(orderType==ORDER_TYPE_BUY_LIMIT)
   {
    request.type     =ORDER_TYPE_BUY_LIMIT;                          // tipo d'ordine
    price=SymbolInfoDouble(Symbol(), SYMBOL_ASK)-offset*point;       // prezzo per l'apertura
    request.price    =NormalizeDouble(price, digits);                // prezzo d'apertura normalizzato
   }
  else
    if(orderType==ORDER_TYPE_SELL_LIMIT)
     {
      request.type     =ORDER_TYPE_SELL_LIMIT;                          // tipo d'ordine
      price=SymbolInfoDouble(Symbol(), SYMBOL_BID)+offset*point;        // prezzo per l'apertura
      request.price    =NormalizeDouble(price, digits);                 // prezzo d'apertura normalizzato
     }
    else
      if(orderType==ORDER_TYPE_BUY_STOP)
       {
        request.type =ORDER_TYPE_BUY_STOP;                                // tipo d'ordine
        price        =SymbolInfoDouble(Symbol(), SYMBOL_ASK)+offset*point; // prezzo per l'apertura
        request.price=NormalizeDouble(price, digits);                     // prezzo d'apertura normalizzato
       }
      else
        if(orderType==ORDER_TYPE_SELL_STOP)
         {
          request.type     =ORDER_TYPE_SELL_STOP;                           // tipo d'ordine
          price=SymbolInfoDouble(Symbol(), SYMBOL_BID)-offset*point;        // prezzo per l'apertura
          request.price    =NormalizeDouble(price, digits);                 // prezzo d'apertura normalizzato
         }
        else
          Alert("Questo esempio è solo per piazzare ordini pendenti");   // se non ci sono ordini pendenti viene selezionato
//--- invia la richiesta
  if(!OrderSend(request, result))
    PrintFormat("OrderSend errore %d", GetLastError());                // se impossibile inviare la richiesta, da in output il codice errore
//--- informazioni riguardo l'operazione
  PrintFormat("retcode=%u  deal=%I64u  order=%I64u", result.retcode, result.deal, result.order);
 }
//+------------------------------------------------------------------+

Result


Documentazione su MQL5: Costanti, Enumerazioni e Strutture / Strutture Dati / Struttura Richiesta di Trade
Documentazione su MQL5: Costanti, Enumerazioni e Strutture / Strutture Dati / Struttura Richiesta di Trade
  • www.mql5.com
Struttura Richiesta di Trade - Strutture Dati - Costanti, Enumerazioni e Strutture - MQL5 Riferimento - Guida al linguaggio di trading algoritmico/automatico per MetaTrader 5
 
See also Tipo Datetime
Documentazione su MQL5: Le basi del linguaggio / Tipi di Dati / Tipi Integer / Tipo Datetime
Documentazione su MQL5: Le basi del linguaggio / Tipi di Dati / Tipi Integer / Tipo Datetime
  • www.mql5.com
Tipo Datetime - Tipi Integer - Tipi di Dati - Le basi del linguaggio - MQL5 Riferimento - Guida al linguaggio di trading algoritmico/automatico per MetaTrader 5