Bibliotecas: TradeState - o modo de negociação do EA se altera dependendo do tempo

 

TradeState - o modo de negociação do EA se altera dependendo do tempo:

A classe restringe a negociação do EA pelo tempo. Ele possui opções de configuração flexíveis, o que permite definir um número personalizado de fusos horários, e permite também negociar somente em dias específicos da semana.

Autor: Vasiliy Sokolov

 

Roubado. Agora você pode fazer uma programação para a semana.

Aqui está uma situação. Levei muito tempo para fazer uma programação semanal. Tudo funciona. De repente, olá, véspera de Ano Novo. Feriados. Precisamos de uma programação que leve em conta os feriados. É uma pena quebrar a programação semanal. Solução: crio uma instância adicional da programação semanal com proibição de negociação nos feriados. Pergunta: Devo expandir m_state para o tamanho do século do ano? Ou como você resolve esse problema além de uma semana?

 
Konstantin Gruzdev:

Roubado. Agora você pode fazer uma programação para a semana.

Aqui está uma situação. Levei muito tempo para fazer uma programação semanal. Tudo funciona. De repente, olá, véspera de Ano Novo. Feriados. Precisamos de uma programação que leve em conta os feriados. É uma pena quebrar a programação semanal. Solução: crio uma instância adicional da programação semanal com proibição de negociação nos feriados. Pergunta: Devo expandir m_state para o tamanho do século do ano? Ou como você resolve esse problema além de uma semana?

Sim, existe essa tarefa. Ainda estou pensando em como fazer isso. Ainda não cheguei a uma boa solução. Mas tenho uma ideia de como ela deve ser.

  1. A própria interface SetTradeState(...) sugere que, se definirmos a data nas variáveis time_begin e time_end no formato D'hh:mm', esse modo estará em vigor o tempo todo, para todos os dias que satisfaçam a condição day_of_week. Se a data for definida especificamente, especificando o ano, o mês e o dia no formato D'YYYYY.MM.DD hh:mm', o modo definido terá que agir especificamente nesse intervalo de tempo.
  2. Aparentemente, a segunda variante de tempo terá de ser colocada em outro tipo de dados (pode ser uma matriz de algumas estruturas ou outra coisa). Em seguida, teremos de procurar o modo de negociação de duas maneiras diferentes em duas coleções diferentes e comparar os modos, decidindo qual modo deve atuar. Nesse caso, a interface GetTradeState deve permanecer inalterada.

Entre os recursos, você pode implementar o carregamento de estados comerciais a partir de XML. Você pode inserir todos os feriados no XML uma vez, com um ano de antecedência, e então eles serão carregados automaticamente em todos os Expert Advisors. É muito fácil fazer isso, pois já existe uma excelente biblioteca em MQL5 para trabalhar com XML.
 

+5

day_of_week - mais frequentemente é um grupo de dias: PN...PT ou "exceto sexta-feira" ou "exceto segunda e sexta-feira".

 
Alexander Puzanov:

+5

day_of_week - mais frequentemente é um grupo de dias: PN...PT ou "exceto sexta-feira" ou "exceto segunda e sexta-feira".

O grupo de dias é formado da seguinte forma: digamos que queremos negociar às segundas, terças e sextas-feiras. Então, proibimos a negociação na quarta e na quinta-feira:

//+------------------------------------------------------------------+
//|TestTradeState.mq5
//|Copyright 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);  // Definir o modo padrão Buy And Sell
//+------------------------------------------------------------------+
//| Função de início do 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);
}
Ou seja, cada dia da semana é configurado individualmente, minuto a minuto.
 
Entendi.
 
O mql5 master não o vê, por quê?
 
Acho que deveríamos introduzir o campo de spread típico. Por exemplo, durante o Rollover e na primeira hora depois dele, o spread pode aumentar de 2 a 3 vezes. Os scalpers noturnos poderiam processar esse aumento e negociar com mais precisão.
Implementei isso em meus Expert Advisors, embora não na aula.
 

como substituir D'00:00' por dígitos normais 00:00 ?????? datetime is annoying(((((

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

 
ponochka:

como alterar D'00:00' para os dígitos usuais 00:00 ????? datetime is annoying((((((

Em 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);
     ......остальной код, в частности для открытия....
  }

localização correta do código?

Peço desculpas antecipadamente por perguntas idiotas!!! sou apenas um novato)))))))