Londres Break-out - página 2

 

Sim, tudo por causa de uma decisão de projeto intrigante da IMO :) Portanto, o horário do servidor pode nem corresponder a nenhum relógio mundial conhecido no decorrer de um ano.

Eu tenho um método para determinar com precisão a hora GMT, especialmente durante os testes de retaguarda. Este método parece funcionar para os corretores que

  • mudaram a TZ no meio de seus dados históricos (Alpari),
  • ou usar DST não padrão contra seu fuso horário (FXCM) como a Treze aponta,

mas a abordagem ainda me parece um pouco hackish.

Envolveu o download de citações baseadas em GMT de outras fontes (dukascopy), e a comparação da hora de cada alta diária. Funciona bem para o backtesting, mas no momento estou baixando manualmente os dados da hora, e filtrando as altas (usando um script perl).

Assim que eu puder obter automaticamente as citações GMT H1 de pelo menos duas fontes, estarei confortável com esta abordagem para meus propósitos.

 
SDC:

Como o MT4 poderia ser mais adequado para fazer isso? Eu não sei quanto a você, mas com certeza não gostaria da tarefa de criar uma calculadora regional de compensação histórica GMT. Você pode simplesmente imaginar ? omg. Se eu fizer isso, vou colocá-la no mercado, é melhor que todos vocês tenham um grande e gordo livro de cheques ;)

Uma calculadora histórica GMT não é por si só particularmente difícil (o sistema operacional Windows já contém todos os dados que você precisa), mas não é a questão principal. O problema é que você pode determinar a compensação atual entre o tempo do corretor e o GMT, mas você não sabe se/quando ele mudou. Usando o exemplo acima, você pode ver que o corretor está atualmente no GMT+3 (assumindo que o relógio do computador local é preciso...), mas você não sabe que o corretor estava no GMT+2 na semana passada.

É muito possível que o terminal do cliente MT4 simplesmente não tenha esta informação.

Se ele a tivesse, então o MT4 poderia fornecer ou os dados vazios que você mesmo poderia processar, ou uma função que lhe permitisse dizer "converter qualquer data do corretor no passado para GMT". Uma vez que tivesse isso, você poderia usar uma tabela de pesquisa (ou a API do Windows) para converter essa hora histórica GMT para outro fuso horário como Londres. Entretanto, seria preferível que o MT4 fizesse isso também para você, por exemplo, um par de funções como as seguintes:

datetime ConvertToBrokerTime(datatime HistoricRegionalTime, SortSortOfTimeZoneInfo FromTimeZone);

datetime ConvertFromBrokerTime(datetime HistoricBrokerTime, SortSortOfTimeZoneInfo ToTimeZone);

 
ydrol:

Sim, tudo por causa de uma decisão de projeto intrigante da IMO :)

(Presumo que a razão para não fixar na UTC é para que os corretores possam correr na EET dando cinco velas D1 por semana, evitando uma sexta vela pequena que leva a subestimações sistêmicas de coisas como D1 ATR em corretores que usam GMTZ).
 
gchrmt4:
(Presumo que a razão para não fixar na UTC é para que os corretores possam correr na EET dando cinco velas D1 por semana, evitando uma sexta vela pequena que leva a subestimações sistêmicas de coisas como D1 ATR em corretores que usam GMTZ).


Eu teria colocado todas essas coisas no cliente, mas isso torna o cliente mais complicado em diferentes lugares :) Mas pelo menos todas as variáveis são conhecidas.
 

Outra abordagem, de acordo com esta página , existem apenas 62 corretores MT4? Então não seria muito difícil ter apenas uma tabela de busca para cada corretor e sua definição de tempo (seja baseado em um fuso horário real ou uma combinação ala FXCM), e também incorporar mudanças históricas (ala Alpari).

Esta é provavelmente a abordagem mais robusta e só precisará de ajustes cada vez que um corretor decidir que quer confundir seus clientes um pouco mais :)

 

gchrmt4:

[1] O horário de seu servidor GMT+3 pode corresponder ao EEST no sentido de que EEST é GMT+3 mas, de acordo com a Wikipedia e o worldclock.com, ainda não deveria estar em nenhum lugar no EEST. Essa mudança não deve acontecer até 30 de março. A hora atual em Chipre, Grécia, Israel, etc. é GMT+2.

[2] Portanto, o que você provavelmente tem é um corretor operando seus servidores no GMT+2, mas mudando para as datas americanas em vez das datas européias.

[3] Isso não é o mesmo que EET/EEST. (E é ainda menos previsível em termos de ser capaz de escrever código que ajusta automaticamente horas e datas sem ter que pedir ao usuário algum tipo de entrada sobre que configurações de horário o corretor usa).

  1. Correto.
  2. Correto.
  3. EET é GMT+2, mas GMT+2 não é apenas EET. Além disso, EEST é GMT+3, mas GMT+3 não é apenas EEST. Ao descrever o fuso horário do meu corretor como EET/EEST, eu pretendia apenas inferir que era GMT+2 enquanto em horário padrão e GMT+3 enquanto em horário de verão, especialmente porque este tópico discute a fuga de Londres. Peço desculpas se a minha descrição gerou alguma confusão :)

Se, portanto, o corretor mudou recentemente de GMT+2 para GMT+3, em vez de estar prestes a mudar de GMT+3 para GMT+4, o que significa que a compensação atual entre o horário do corretor e o GMT estaria errada se você tentasse aplicá-la em bares na semana passada, antes da mudança do relógio dos EUA. Esta semana, os bares do corretor estão 3 horas à frente de Londres. Na semana passada, eles estavam 2 horas à frente. (E, a partir de 30 de março, eles estarão novamente 2 horas à frente.) Se você pegar esse offset atual de 3 horas e usá-lo para tentar obter o preço às 8 horas da manhã de Londres em um dia da semana passada, você terá a resposta errada.

Um corretor geralmente não muda o fuso horário do seu servidor com freqüência, exceto para ajustar o horário de verão. Para o ajuste do horário de verão, posso usar qualquer data/hora (desde 1987 (EUA) e 1996 (UE) até 2020 e além) e calcular, para os EUA e a UE, o dia de horário de verão começa e o dia de horário de verão termina. Uma vez que você tenha esse código, tudo o que você precisa fazer é ajustar a compensação atual para o GMT para acomodar o horário de verão para a hora que você está olhando.

Com o TimeGMT(), que é novo no build 600+, você calcula a compensação atual de seu corretor para o GMT. Mas não se pode (tanto quanto eu sei) determinar o fuso horário de um corretor a partir do passado. Por exemplo, eu mandei um corretor mudar o fuso horário do seu servidor do GMT para o GMT+2 para o horário padrão. Lidei com isso codificando rigidamente um intervalo de tempo antes da mudança porque todos os dados do histórico eram GMT, não GMT+2 (e eu não queria modificar o histórico para refletir GMT+2). A esse respeito, acredito que você e eu concordamos. Desde que um corretor não altere apenas os fusos horários (a não ser para ajustar o horário de verão), você deve ser capaz de calcular a compensação para o GMT e ajustar essa compensação para o horário de verão.

Tudo o que estou dizendo é que a informação que é possível obter apenas do próprio MT4 - compensação atual entre o horário do corretor e o GMT - é inadequada na prática para fazer coisas como dizer "trabalhe o preço de abertura em Londres na última quarta-feira".

Acredito que discordo de vocês. Desde que o corretor não altere os fusos horários, exceto para ajustar o horário de verão, você pode determinar a compensação para o GMT, tanto para a hora atual como para a hora histórica. Se, na semana passada durante a hora padrão, o corretor for GMT+2 e Londres for GMT, então às 8 horas da manhã, a hora de Londres seria 10 horas da manhã, hora do servidor. No próximo mês, durante o horário de verão, quando o corretor for GMT+3 e Londres for GMT+1, o horário de Londres das 8h corresponderia ao horário do servidor das 10h. Hoje, quando o corretor está no horário de verão e Londres está no horário padrão, o corretor é GMT+3 e Londres é GMT, então o horário de Londres às 8 horas da manhã seria o horário do servidor às 11 horas da manhã.

Se o corretor é GMT-5 (EST) e Londres é GMT, 8h de Londres é 3h de horário do servidor.

 
gchrmt4:

Uma calculadora histórica GMT não é em si particularmente difícil (o sistema operacional Windows já contém todos os dados necessários), mas não é a questão principal. O problema é que você pode determinar a compensação atual entre o tempo do corretor e o GMT, mas você não sabe se/quando ele mudou. Usando o exemplo acima, você pode ver que o corretor está atualmente no GMT+3 (assumindo que o relógio do computador local é preciso...), mas você não sabe que o corretor estava no GMT+2 na semana passada.

É muito possível que o terminal do cliente MT4 simplesmente não tenha esta informação.

Se ele a tivesse, então o MT4 poderia fornecer ou os dados vazios que você mesmo poderia processar, ou uma função que lhe permitisse dizer "converter qualquer data do corretor no passado para GMT". Uma vez que tivesse isso, você poderia usar uma tabela de pesquisa (ou a API do Windows) para converter essa hora histórica GMT para outro fuso horário como Londres. Entretanto, seria preferível que o MT4 fizesse isso também para você, por exemplo, um par de funções como as seguintes:

datetime ConvertToBrokerTime(datatime HistoricRegionalTime, SortSortOfTimeZoneInfo FromTimeZone);

datetime ConvertFromBrokerTime(datetime HistoricBrokerTime, SortSortOfTimeZoneInfo ToTimeZone);


Sim, não seria difícil se não houvesse DST, mas há rs... seria um pesadelo para codificar. Anomalias históricas estariam em toda parte. Regiões que mudaram o fuso horário que usam, regiões que experimentaram não usar DST de forma alguma, então voltariam a DST, regiões que respeitam DST em alguns lugares mas não em outros, haveria tantas anomalias a serem levadas em consideração, em todo o mundo ...
 
ydrol:

Outra abordagem, de acordo com esta página , existem apenas 62 corretores MT4? Então não seria muito difícil ter apenas uma tabela de busca para cada corretor e sua definição de tempo (seja baseado em um fuso horário real ou uma combinação ala FXCM), e também incorporar mudanças históricas (ala Alpari).

62 é uma subestimação, e os corretores maiores têm servidores configurados para diferentes fusos horários.
 

Thirteen:

Se, na semana passada, durante o horário padrão, o corretor for GMT+2 e Londres for GMT,

Como, utilizando apenas as informações que o MT4 fornece, você sabe que o corretor estava no GMT+2 na semana passada?
 

A abordagem de senso comum seria o servidor MT4 usar o GMT o tempo todo, mas você sabe que eles não vão fazer isso.

Razão: