Bibliotecas: TradeState - interruptor de modo comercial del experto, dependiendo del tiempo

 

TradeState - interruptor de modo comercial del experto, dependiendo del tiempo:

La clase limita el tiempo de comercio del experto. Posee grandes capacidades de configuración, que permiten establecer una cantidad aleatoria de zonas temporales, así como comerciar solo en determinados días de la semana.

Autor: Vasiliy Sokolov

 

Robado. Ahora puedes hacer un horario para la semana.

He aquí una situación. Me tomó mucho tiempo hacer un horario semanal. Todo funciona. De repente, hola, Nochevieja. Vacaciones. Necesitamos un horario que tenga en cuenta las vacaciones. Es una pena romper el horario semanal. Solución: creo una instancia adicional del horario semanal con la prohibición de operar en días festivos. Pregunta: ¿Debo ampliar m_state al tamaño del siglo del año? ¿O cómo resolver este problema más allá de una semana?

 
Konstantin Gruzdev:

Robado. Ahora puedes hacer un horario para la semana.

He aquí una situación. Me tomó mucho tiempo hacer un horario semanal. Todo funciona. De repente, hola, Nochevieja. Vacaciones. Necesitamos un horario que tenga en cuenta las vacaciones. Es una pena romper el horario semanal. Solución: creo una instancia adicional del horario semanal con la prohibición de operar en días festivos. Pregunta: ¿Debo ampliar m_state al tamaño del siglo del año? ¿O cómo resolver este problema más allá de una semana?

Sí, existe tal tarea. Todavía estoy pensando en cómo hacerlo. Todavía no he llegado a una solución bonita. Pero tengo una idea de cómo debería ser.

  1. La propia interfaz SetTradeState(...) sugiere que si establecemos la fecha en las variables time_begin y time_end en el formato D'hh:mm', entonces este modo estará en efecto todo el tiempo, para todos los días que satisfagan la condición day_of_week. Si la fecha se establece específicamente, especificando el año, el mes y el día en el formato D'AAAA.MM.DD hh:mm', entonces el modo establecido tendrá que actuar específicamente sobre este intervalo de tiempo.
  2. Aparentemente, la segunda variante de tiempo tendrá que ser colocada en otro tipo de datos (puede ser un array de algunas estructuras u otra cosa). Entonces tendremos que buscar el modo de comercio de dos maneras diferentes en dos colecciones diferentes y comparar los modos, decidiendo qué modo debe actuar. En este caso, la interfaz GetTradeState debe permanecer sin cambios.

Entre las sutilezas se puede implementar la carga de estados de comercio desde XML. Puede introducir todos los días festivos en XML una vez, para un año por adelantado, y luego se cargarán automáticamente en todos los Asesores Expertos. Es bastante fácil de hacer esto, ya que ya existe una excelente biblioteca en MQL5 para trabajar con XML.
 

+5

day_of_week - más a menudo se trata de un grupo de días: PN...PT o "excepto viernes" o "excepto lunes y viernes".

 
Alexander Puzanov:

+5

day_of_week - más a menudo se trata de un grupo de días: PN..PT o "excepto viernes" o "excepto lunes y viernes".

El grupo de días se forma de la siguiente manera: supongamos que queremos operar los lunes, martes y viernes. Entonces prohibimos operar el miércoles y el jueves:

//+------------------------------------------------------------------+
//|TestTradeState.mq5
//|Derechos de autor 2015, Vasiliy Sokolov. |
//| http://www.mql5.com
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Vasiliy Sokolov."
#property link      "http://www.mql5.com"
#property version   "1.00"
#include <Strategy\TradeState.mqh>

CTradeState TradeState(TRADE_BUY_AND_SELL);  // Establecer modo por defecto Compra y Venta
//+------------------------------------------------------------------+
//| Función de inicio del programa de script|
//+------------------------------------------------------------------+
void OnStart()
{
   TradeState.SetTradeState(D'00:00', D'23:59', WEDNESDAY, TRADE_STOP);
   TradeState.SetTradeState(D'00:00', D'23:59', THURSDAY, TRADE_STOP);
}
Es decir, cada día de la semana se configura individualmente al minuto.
 
Entendido.
 
El maestro mql5 no lo ve, ¿por qué?
 
Creo que deberíamos introducir el campo del spread típico. Por ejemplo, durante el Rollover y la primera hora después de él, el spread puede aumentar 2-3 veces. Los scalpers nocturnos podrían procesar tal ensanchamiento y operar con mayor precisión.
Yo implemento esto en mis Asesores Expertos, aunque no en la clase.
 

cómo sustituir D'00:00' con dígitos normales 00:00 ?????? datetime es molesto(((((

En TradeState.SetTradeState(D'00:00:00', D'23:59', WEDNESDAY, TRADE_STOP);

 
ponochka:

cómo cambiar D'00:00' a los dígitos habituales 00:00 ????? datetime is annoying((((((

En TradeState.SetTradeState(D'00:00:00', D'23:59', WEDNESDAY, TRADE_STOP);

Por favor:

TradeState.SetTradeState(0, 86399, WEDNESDAY, TRADE_STOP);
 
#include <Strategy\TradeState.mqh>
CTradeState TradeState(TRADE_BUY_AND_SELL);

void OnTick()
  {
     ......здесь работаем с закрытием (тралом и прочим)....
 TradeState.SetTradeState(ontime, offtime, ALL_DAYS_OF_WEEK, TRADE_NO_NEW_ENTRY);
     ......остальной код, в частности для открытия....
  }

ubicación correcta del código?

Pido disculpas de antemano por preguntas tontas!!! sólo un novato)))))))