Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Facebook!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Visualizações:
47
Avaliação:
(3)
Publicado:
\MQL5\Include\Tools\Custom\ \MQL5\Expert\Test\DateTimeMsc\
Freelance MQL5 Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Quando recentemente comecei a testar intensamente a funcionalidade de CopyTicksRange(), encontrei alguns problemas desfavoráveis ao lidar com tempos de milissegundos:

  1. Na verdade, eu queria usar o CDateTime, pois ele é derivado do MqlTimeStruct e você pode editar as diferentes unidades de tempo com muita facilidade usando os métodos de incremento e decremento incluídos.
  2. Ao mesmo tempo, eu precisava de uma maneira de traduzir suavemente os tempos em milissegundos (segundos desde 1º de janeiro de 1970 vezes 1000 no formato ulong) para frente e para trás.

Aqui me deparei com a dificuldade de que o número de milissegundos, por exemplo, é um número muito vago que não informa muito sobre a data exata. Entretanto, se você usar CDateTime ou TimeStruct, todas as unidades de tempo são fáceis de alterar, mas o formato as separa e o resultado também não é muito claro. Essa classe CDateTimeMsc foi criada para resolver esse problema.

#include <Tools\DateTime.mqh>

struct CDateTimeMsc: public CDateTime
  {
public:
   int               msc;               // additional variable for msc storage
   datetime          check_datetime;    // para uma observação conveniente, é necessário um pouco de sobrecarga.

   //--- Métodos CDateTimeMsc

   ulong             MscTime(void) {return(ulong(double(CDateTime::DateTime()) * 1000) + msc);}
   void              MscTime(ulong a_msc_time);  // entrada (datetime*1000)
   void              Msc(int value);
   //bool IsNumInt(const int num);
   void              MscDec(int delta = 1);
   void              MscInc(int delta = 1);
   void              SecTime(int a_int_time);
   ulong             SecTime(void);
   void              UpdateDateTime();   // atualiza a variável de observação check_datetime
   void              DateTime(datetime a_datetime) {CDateTime::DateTime(a_datetime); UpdateDateTime();}
   datetime          DateTime(void) {return(CDateTime::DateTime());}

  };

Os novos métodos foram inseridos sob a herança da estrutura antiga.

Agora, a classe, que na verdade é uma estrutura (consulte Estruturas/Classes), também pode trabalhar com milissegundos, desde que esses horários exatos estejam disponíveis.

Além disso, os métodos de incremento e decremento foram estendidos para a propriedade msc.

Pode-se argumentar agora se a variável adicional "check_datetime" é realmente necessária, pois cria uma certa sobrecarga (para algumas pessoas isso é muito importante). No entanto, presumi que normalmente não são usados muitos objetos CDateTime, mas apenas alguns nos locais importantes em que as unidades de tempo, como horas, minutos, segundos ou dias, precisam ser alteradas. Também tive algumas dúvidas sobre o método UpDateTime(), que é chamado desnecessariamente a cada incremento/decremento.

Em suma, porém, o fator de manipulação foi o foco principal.


O teste
Você não precisa mais consultar a hora com uma variável datetime adicional se quiser saber a data exata, mas pode simplesmente colocar a variável "check_datetime" sob supervisão: (TestEA veja acima)


obs2

O tempo em milissegundos foi automaticamente traduzido para o formato datetime.


Traduzido do alemão pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/de/code/48156

Desempenho triplo intradiário Desempenho triplo intradiário

Defina três cruzamentos e monitore o desempenho percentual diário a partir de um determinado horário (que também pode ser definido).

Strong Historical Levels Strong Historical Levels

Níveis históricos de S/Rs fortes

Caculater Margin Caculater Margin

EA Tools tính toán Margin theo lotsize, có thể tùy chỉnh đòn bẩy

Open Range BreakOut Indicator for MetaTrader 5 Open Range BreakOut Indicator for MetaTrader 5

O indicador Open Range Breakout (ORB) é uma poderosa ferramenta de análise técnica que identifica e rastreia rompimentos de preços a partir do intervalo de abertura das sessões de negociação. Esse indicador se baseia no conceito de que os preços altos e baixos estabelecidos durante os primeiros minutos de uma sessão de negociação geralmente servem como níveis significativos de suporte e resistência durante o restante do dia. O indicador calcula automaticamente a faixa de abertura com base em períodos de tempo definidos pelo usuário, traça várias metas de preço e fornece alertas visuais e sonoros para possíveis oportunidades de negociação. Ele foi projetado para ajudar os traders a identificar negociações de alta probabilidade de rompimento e cenários de reteste.