Errores, fallos, preguntas - página 1614

 
Si un SellLimit en el probador se elimina debido a la expiración o a la finalización del backtest, su fecha de expiración se hace erróneamente igual a la fecha de la orden pendiente.

Si se establece la fecha de vencimiento a través de TRADE_ACTION_MODIFY, no se activa en el probador.

Reproducción
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:

Los datos históricos ocupan bastante espacio (esto no es una queja, es una afirmación). Tengo que usar varios terminales y cada uno de ellos recoge gigabytes de historial, y el historial se duplica en las carpetas de los probadores y de los terminales.

¿Podemos poner todos los archivos del historial en una carpeta y especificar la carpeta de referencia en los terminales? ¿No tendremos problemas de acceso al historial entre diferentes terminales?

Lo he probado. Ahora tengo varios terminales y sus probadores acceden a una sola carpeta con el historial. Excepto por las quejas terminales como:

2016.07.19 16:39:02.276 Spreads config file open error [El proceso no puede acceder al archivo porque está siendo utilizado por otro proceso. (32)]

2016.07.19 16:39:02.276 Spreads config file open error [*****symbols\spreads-*********.dat][El proceso no puede acceder al archivo porque está siendo utilizado por otro proceso. (32)]

No veo ningún problema en la operación. ¡Sí!... Cientos de gigabytes de espacio en disco ahorrados.

Service Desk me ha advertido de que existe un riesgo al hacer esto con el acceso a los datos compartidos.


 
Andrey Dik:

Lo he probado. Ahora tengo varios terminales y sus probadores accediendo a una sola carpeta del historial. Excepto por las quejas terminales como:

2016.07.19 16:39:02.276 Spreads config file open error [El proceso no puede acceder al archivo porque está siendo utilizado por otro proceso. (32)]

2016.07.19 16:39:02.276 Spreads config file open error [*****symbols\spreads-*********.dat][El proceso no puede acceder al archivo porque está siendo utilizado por otro proceso. (32)]

No veo ningún problema en la operación. ¡Sí!... Cientos de gigabytes de espacio en disco ahorrados.

Service Desk me ha advertido de que existe un riesgo al hacer esto con el acceso a los datos compartidos.


¿cómo lo hicieron?
 
coderex:
¿y cómo lo has puesto en práctica?

He creado una carpeta separada llamada Bases y he transferido el historial de uno de los terminales a ella. Después de eso en todos los terminales y sus probadores en lugar de carpetas reales con el historial puse enlaces como Junction a una carpeta común.

Especialmente útil cuando se utilizan varios terminales en un VPS, se puede obtener un ahorro real al elegir un espacio de disco más pequeño.

 
Estoy trabajando en un probador fuera de línea. ¿Cómo puedo asegurarme de que el registro no se obstruya con cientos de miles de entradas?
2016.07.21 07:48:41.578 MQL5.community  authorization failed

 
¿Cómo ha conseguido la biblioteca estándar evitar llamar a ::OrdersTotal()?
 
fxsaber:
Estoy trabajando en un probador fuera de línea. ¿Cómo puedo asegurarme de que el registro no se obstruya con cientos de miles de entradas?

En los ajustes de la comunidad(Menú principal - Herramientas - Ajustes - Pestaña de la comunidad) borre sus datos de autorización
 
Slawa:
En los ajustes de la comunidad (menú principal - Herramientas - Ajustes - pestaña Comunidad), borre sus datos de autorización.
Nunca los he introducido allí. Esa no es la cuestión.
 

¿No hay paneles comerciales? ¿O a qué grupo pertenecen?

 
Vladimir Pastushak:

¿No hay paneles comerciales? ¿O a qué grupo pertenecen?

Hay que seleccionar los servicios públicos. Es cierto que no hay categorías en absoluto.