Erros, bugs, perguntas - página 1614

 
Se um SellLimit no testador for eliminado devido à expiração ou conclusão do teste, a sua data de expiração torna-se erroneamente igual à data da encomenda pendente.

Se definir a data de expiração através de TRADE_ACTION_MODIFY, esta não é accionada no testador.

Reprodução
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:

Os dados históricos ocupam bastante espaço (isto não é uma queixa, é uma afirmação). Tenho de utilizar vários terminais e cada um deles recolhe gigabytes de história, e a história é duplicada em pastas de teste e terminais.

Podemos colocar todos os ficheiros de histórico numa só pasta e especificar a pasta de referência nos terminais? Não teremos problemas com o acesso ao histórico entre diferentes terminais?

Já o experimentei. Agora tenho vários terminais e os seus testadores acedem a uma única pasta com o histórico. Excepto para reclamações terminais, como por exemplo:

2016.07.19 16:39:02.276 Spreads config file open error [O processo não pode aceder ao ficheiro porque este está a ser utilizado por outro processo. (32)]

2016.07.19 16:39:02.276 Spreads config file open error [*****symbols\spreads-*****.dat][O processo não pode aceder ao ficheiro porque está a ser utilizado por outro processo. (32)]

Não vejo quaisquer problemas com a operação. Yay!.... Centenas de gigabytes de espaço em disco guardados!

O Service Desk avisou-me que existe um risco ao fazer isto com acesso a dados partilhados.


 
Andrey Dik:

Experimentei-o. Tenho agora vários terminais e os seus testadores a aceder a uma única pasta de histórico. Excepto para reclamações terminais, como por exemplo:

2016.07.19 16:39:02.276 Spreads config file open error [O processo não pode aceder ao ficheiro porque este está a ser utilizado por outro processo. (32)]

2016.07.19 16:39:02.276 Spreads config file open error [*****symbols\spreads- .dat][O processo não pode aceder ao ficheiro porque está a ser utilizado por outro processo. (32)]

Não vejo quaisquer problemas com a operação. Yay!.... Centenas de gigabytes de espaço em disco guardados!

O Service Desk avisou-me que existe um risco ao fazer isto com acesso a dados partilhados.


como é que o fizeram?
 
coderex:
e como o implementou?

Criei uma pasta separada chamada Bases, e transferi o histórico de um dos terminais para ela. Depois disso, em todos os terminais e seus testadores, em vez de pastas reais com história, coloquei links como Junction para uma pasta comum.

Particularmente útil ao utilizar múltiplos terminais num VPS, pode obter poupanças reais ao escolher um espaço de disco mais pequeno.

 
Estou a trabalhar num testador offline. Como posso certificar-me de que o registo não está entupido com centenas de milhares de entradas?
2016.07.21 07:48:41.578 MQL5.community  authorization failed

 
Como é que a biblioteca padrão conseguiu evitar chamadas ::OrderTotal() ?
 
fxsaber:
Estou a trabalhar num testador offline. Como posso certificar-me de que o registo não está entupido com centenas de milhares de entradas?

Nas definições da comunidade(Menu principal - Ferramentas - Definições - separador Comunidade) apague os seus dados de autorização
 
Slawa:
Nas definições da comunidade (Menu principal - Ferramentas - Definições - separador Comunidade), apague os seus dados de autorização.
Nunca lá entrei. Não é essa a questão.
 

Não existem painéis comerciais? Ou em que grupo devem ser colocados?

 
Vladimir Pastushak:

Não existem painéis comerciais? Ou em que grupo devem ser colocados?

As utilidades devem ser seleccionadas. Na verdade, não existem categorias.