Errori, bug, domande - pagina 1614

 
Se un SellLimit nel tester viene cancellato a causa della scadenza o del completamento del backtest, la sua data di scadenza diventa erroneamente uguale alla data dell'ordine pendente.

Se si imposta la data di scadenza attraverso TRADE_ACTION_MODIFY, non si attiva nel tester.

Riproduzione
void OnInit()
{
  MqlTradeRequest Request = {0};

  Request.action = TRADE_ACTION_PENDING;
  
  Request.symbol = Symbol();
  Request.volume = 1;
  Request.price = SymbolInfoDouble(Symbol(), SYMBOL_ASK);
  
  Request.type = ORDER_TYPE_SELL_LIMIT;

  MqlTradeResult Result;
  
  if (OrderSend(Request, Result))
  {
    Request.action = TRADE_ACTION_MODIFY;
    Request.order = Result.order;
    
    Request.type_time = ORDER_TIME_SPECIFIED;
    Request.expiration = TimeCurrent() + 10000;
    
    if (OrderSend(Request, Result))
      if (OrderSelect(Request.order))
        Print("SetExpiration = " + (string)(datetime)OrderGetInteger(ORDER_TIME_EXPIRATION)); // установили дату экспирации        
  }
}

void OnDeinit( const int reason )
{  
  if (HistorySelect(0, TimeCurrent()))
  {
    const ulong Ticket = HistoryOrderGetTicket(0);
   
    if (Ticket > 0)
    {
      // Дата экспирации изменилась - стала равна дате установки ордера!
      Print("NowExpiration = " + (string)(datetime)HistoryOrderGetInteger(Ticket, ORDER_TIME_EXPIRATION));
     
      // При этом ордер по ранее установленной дате экспирации не удалился!     
      Print("DeleteTime = " + (string)(datetime)HistoryOrderGetInteger(Ticket, ORDER_TIME_DONE));
    }
  }
}

 
Andrey Dik:

I dati storici occupano molto spazio (questa non è una lamentela, è una constatazione). Devo usare diversi terminali e ognuno di essi raccoglie gigabyte di storia, e la storia è duplicata nelle cartelle del tester e del terminale.

Possiamo mettere tutti i file della storia in una cartella e specificare la cartella con un link nei terminali? Non avremo problemi di accesso alla storia tra diversi terminali?

L'ho provato. Ora ho diversi terminali e i loro tester accedono a una sola cartella con la storia. Tranne che per le lamentele terminali come:

2016.07.19 16:39:02.276 Spreads config file open error [Il processo non può accedere al file perché è utilizzato da un altro processo. (32)]

2016.07.19 16:39:02.276 Spreads config file open error [*****symbols\spreads-*********.dat][Il processo non può accedere al file perché è utilizzato da un altro processo. (32)]

Non vedo alcun problema nell'operazione. Evviva!... Centinaia di gigabyte di spazio su disco risparmiati!

Service Desk mi ha avvertito che c'è un rischio nel fare questo con l'accesso condiviso ai dati.


 
Andrey Dik:

Provato. Ora ho diversi terminali e i loro tester che accedono a un'unica cartella della cronologia. Tranne che per le lamentele terminali come:

2016.07.19 16:39:02.276 Spreads config file open error [Il processo non può accedere al file perché è utilizzato da un altro processo. (32)]

2016.07.19 16:39:02.276 Spreads config file open error [*****symbols\spreads-*********.dat][Il processo non può accedere al file perché è utilizzato da un altro processo. (32)]

Non vedo alcun problema nell'operazione. Evviva!... Centinaia di gigabyte di spazio su disco risparmiati!

Service Desk mi ha avvertito che c'è un rischio nel fare questo con l'accesso condiviso ai dati.


come hanno fatto?
 
coderex:
e come l'avete implementato?

Ho creato una cartella separata chiamata Bases, e vi ho trasferito la storia di uno dei terminali. Dopo di che in tutti i terminali e i loro tester invece di cartelle reali con la storia ho messo dei link come Junction a una cartella comune.

Particolarmente utile quando si utilizzano più terminali su un VPS, è possibile ottenere risparmi reali scegliendo uno spazio su disco più piccolo.

 
Sto lavorando in un tester offline. Come posso assicurarmi che il registro non sia intasato da centinaia di migliaia di voci?
2016.07.21 07:48:41.578 MQL5.community  authorization failed

 
Come ha fatto la libreria standard a evitare di chiamare ::OrdersTotal()?
 
fxsaber:
Sto lavorando in un tester offline. Come posso assicurarmi che il registro non sia intasato da centinaia di migliaia di voci?

Nelle impostazioni della comunità(menu principale - Strumenti - Impostazioni - scheda Comunità) cancella i tuoi dati di autorizzazione
 
Slawa:
Nelle impostazioni della comunità (menu principale - Strumenti - Impostazioni - scheda Comunità), cancella i tuoi dati di autorizzazione.
Non li ho mai inseriti lì. Non è questo il punto.
 

Non ci sono pannelli di scambio? O in quale gruppo dovrebbero essere inseriti?

 
Vladimir Pastushak:

Non ci sono pannelli di scambio? O a quale gruppo appartengono?

Le utilità devono essere selezionate. È vero che non ci sono affatto categorie.