Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 557

 
GSB:

Não tenho objeções aos princípios, mas o homem quer dirigir o consultor especializado no testador, portanto suas opções não lhe convém.

Use minha variante, ela funcionará tanto em real quanto no testador, mas até que eles tenham feito uma função para contabilizar automaticamente o horário de verão, defina o tempo de transição para este ano como

De março de 2013 a novembro de 2014 funcionará e será testado corretamente. Defina o turno de acordo com seu corretor


Eu não vou olhar onde está escrito que o tempo é gerado no testador, você mesmo sabe disso. Mas, na ajuda, diz especificamente que

 var2=StrToTime("17:35");      // возврат текущей даты с указанным временем

Considerando que não diz nada específico sobre StringToTime().

A única coisa a ser levada em conta é o tempo no testador (do servidor DC). E, portanto, ao testar você deve ter um histórico do mesmo tipo de conta na qual esta coruja irá trabalhar.

 
AlexeyVik:


Não vou olhar para cima onde diz que o tempo é gerado no testador, você mesmo sabe disso. Mas, na ajuda, diz especificamente que

Considerando que não diz nada específico sobre StringToTime().

A única coisa a ser levada em conta é o tempo no testador (do servidor DC). E assim, ao testar, você precisa ter um histórico do mesmo tipo de conta na qual essas corujas irão trabalhar.


Alexey, não tenho nenhuma dúvida sobre a função StrToTime() A questão é diferente. Ele retornará na hora certa, mas 21 horas hoje são 22 horas antes de 9 de março. É por isso que eu tenho funções escritas que levam em conta corretamente a DST de corretor.

Sem ele, se um Expert Advisor trabalhar de acordo com algum cronograma é impossível de testar. Tudo se desloca em uma hora. Não há problemas no comércio real, mas há problemas com o testador. Há muito tempo venho pedindo aos desenvolvedores que habilitem a função que calcula os turnos de tempo. Eles implementaram o TimeGMT(), mas ele está ligado à hora local e ao fuso horário do computador. E você tem que ter um turno de frenagem. E o DST deles é diferente do nosso. Os corretores mudam no primeiro domingo de novembro no segundo domingo de março e a Rússia (se for....) no último domingo de outubro no último domingo de março. Portanto, você tem que escrever suas próprias funções por enquanto.

 
GSB:

Não tenho objeções aos princípios, mas o homem quer dirigir o consultor especializado no testador, portanto suas opções não lhe convém.

Use minha variante, ela funcionará tanto em real quanto em teste, mas até que eles não façam uma função para automaticamente levar em conta o horário de verão, determinar a hora de transição para este ano como

De março de 2013 a novembro de 2014 funcionará e testará corretamente. Defina o turno de acordo com seu corretor

OK. Obrigado. Eu lhe informarei o resultado.
 

É necessário verificar nos gráficos < h4 a hora da última barra da sexta-feira atual e da sexta-feira anterior a 8 de março. Se esses tempos coincidirem, então o valor hrd é constante e não depende da mudança de horário inverno-verão e então tudo é simples e funcionará corretamente durante os testes, independentemente da mudança de horário inverno-verão

datetime tc=TimeCurrent();
datetime te=StrToTime("20:45");                    //   время конца сессии по котировкам брокера минус 15 минут или сколько вам надо до конца сессии
if(TimeDayOfWeek(tc)==5 && tc>te) {  CloseAll(); } //    закрытие пятницу позже указанного времени 

mas se estas duas vezes são diferentes (diferem em 1 hora), então como escrevi antes.

 
GSB:

Devemos verificar no gráfico M1 a hora da última barra da sexta-feira atual e a sexta-feira anterior a 8 de março. Se esses tempos coincidirem, então o valor hrd é constante e não depende da transição para a época de inverno-verão, e então tudo é simples e funcionará corretamente durante os testes, independentemente da transição de inverno-verão

mas se estas duas vezes são diferentes (diferem em 1 hora), então como escrevi antes.


Por que há um tempo de 15 minutos no código, ou seja, você quer dizer que 15 minutos antes do final da sessão as carteiras começam a mudar? Certamente notei tais momentos no mt4 no fresch e vi bons níveis em alguns pares de moedas.
 

Por exemplo, eu quero fechar negócios mesmo 1 minuto antes do final da sessão, porque quando uma ordem é deixada para o fim de semana, acontece que na segunda-feira o preço de abertura pode saltar por 100, ou 200, ou até mais pips.

Ainda não o testei. Vou testá-lo mais tarde hoje.

 
Se o corretor está na Rússia e eu estou na Ucrânia, então não há horário de verão ou de inverno, então também não há mudança de horário do servidor para mim, apenas horário local?
 
GSB:

Bem, isto não deve funcionar no testador.

As funções são baseadas na hora atual, e o que escrevi acima funcionará porque TimeCurrent() e TimeDayOfWeek() funcionam corretamente. Você só precisa acrescentar função para mudar para o horário de verão e inverno, ou seja, parâmetro hrd. A troca geralmente ocorre de acordo com o horário DST americano (primeiro domingo de novembro, segundo domingo de março), mas alguns corretores não fazem a troca, então você deve usar seu


Sem entrar em suposições, eu simplesmente dirigi o Consultor Especialista no Testador de Estratégia e olhei para ele. Funciona e fecha.

 
belck:
Se meu corretor está na Rússia e eu estou na Ucrânia, então não há mudança de horário de verão ou de inverno, então acontece que não há mudança de horário de verão no meu corretor, mas apenas o horário local?

Não há necessidade de comparar a hora do corretor e sua hora local. Não importa o quanto você mova seu relógio, o tempo final da sessão do corretor no gráfico não mudará. A questão era sobre a transição para as citações de verão dos corretores em 8 e 9 de março, e alguns corretores o fazem, e outros não.

Eu escrevi - olhe os gráficos para os últimos horários de bar antes e depois de 9 de março, se o mesmo então use a última opção simples, se eles diferem em uma hora então a mais complexa.

 

Rapazes, tirem os chapéus :) Tanto o DayOfWeek() TimeDayOfWeek(datetimedate) como fórmulas similares funcionarão corretamente no testador. Tester modela o tempo de tick que processa, é por isso que no DayOfWeek() que leva o último tempo conhecido do servidor também funciona. Mais corretamente, é claro, use TimeDayOfWeek(dt1)

Em geral tudo está correto, a única coisa que resta é levar em conta o tempo de transição de corretor para o inverno - verão, se houver, como eu escrevi acima.

Razão: