Aqui estão algumas funções úteis para lidar com a hora (você pode determinar se a hora de verão ou de inverno está em vigor para qualquer data).
#propertycopyright"Erics"#propertylink"erics.fx@tut.by"#defineEUR0#defineUSA1//+------------------------------------------------------------------+//| скрипт, демонстрирующий использование некоторых функций времени |//+------------------------------------------------------------------+voidstart(){inttl = TimeLocal();
MessageBox("Сейчас: " + TimeToStr(tl) + ", летнее время = " + getDST(EUR, tl) +
"\n\n20.03.2008 0:00, летнее время в Европе = " + getDST(EUR, MTtime(DateSerial(2008,3,20))) +
"\n20.03.2008 0:00, летнее время в Америке = " + getDST(USA, MTtime(DateSerial(2008,3,20))) +
"\n\n1.04.2008 0:00, летнее время в Европе = " + getDST(EUR, MTtime(DateSerial(2008,4,1))) +
"\n1.04.2008 0:00, летнее время в Америке = " + getDST(USA, MTtime(DateSerial(2008,4,1))));
}intMTtime(doubleserialTime){// переводит дату/время, заданную в днях от 1900 года (Windows)// в дату, заданную в секундах от 1970 года (Unix)return(86400.*(serialTime - 25569.));
}intDateSerial(intyyyy, intmm, intdd){// возвращает дату в формате Windows (от 1.01.1900 г.)yyyy -= 1900; mm++;
if(mm < 4){mm += 12; yyyy--; }intres = MathFloor(365.25*yyyy) + MathFloor(30.6*mm) + dd - 62;
return(res);
}intgetDST(intcountry, inttime){// Daylight Saving Time - возвращает 1, если на время time действует летнее время и 0 - если поясное (зимнее) времяintDSTstarts, DSTends, y, yr = TimeYear(time);
switch(country){caseEUR:
// летнее время в Европе и России начинается в последнее восресенье марта, в 2 часа ночиy = MathFloor(1.25 * yr + 4.);
DSTstarts = MTtime(DateSerial(yr, 3, 31 - y % 7) + 2./24.);
// летнее время в Европе и России заканчивается в последнее восресенье октября, в 3 часа ночиy = MathFloor(1.25 * yr + 1.);
DSTends = MTtime(DateSerial(yr,10, 31 - y % 7) + 3./24.);
break;
caseUSA:
// летнее время в США и Канаде с 2007 г. начинается во второе восресенье марта, в 3 часа ночиy = MathFloor(1.25 * yr + 1.);
DSTstarts = MTtime(DateSerial(yr, 3, 14 - y % 7) + 3./24.);
// летнее время в США и Канаде с 2007 г. заканчивается в первое восресенье ноября, в 3 часа ночиDSTends = MTtime(DateSerial(yr,11, 7 - y % 7) + 3./24.);
break;
}if(time>=DSTstarts && time<=DSTends)return(1); elsereturn(0);
}
P.S. Na América antes de 2007, a mudança de e para a DST foi na mesma época que na Europa. Use o EUR ao ligar.
Se alguém pudesse converter isto em uma biblioteca, disposto a ajudar (asia, austrália).
Eu fiz funções de DST também para a Europa e EUA, elas retornam verdadeiras para a hora de verão e falsas para a hora de inverno. Eles são projetados para trabalhar com o tempo do servidor, para os EUA somente a partir de 2007.
Uma pergunta para o mercado experiente... Você tem algum mês de sorte especial no jogo e vice-versa? É claro que depende de suas táticas comerciais, portanto a questão é muito abstrata. Mas de uma forma ou de outra?
Como prometido, "digeri" tudo o que pude em relação às sessões de negociação e ao horário de verão. Fiz um excelente arquivo com calendário de horário de verão e cálculo da hora de início e fim da sessão.
A primeira folha é apenas um calendário de transição, sem fórmulas. Este calendário é usado para calcular as sessões na segunda folha. Na segunda folha, você pode definir apenas três parâmetros: a data atual para a qual você quer calcular tudo, e dois fusos horários: um para o fuso horário do servidor DC, e outro para a hora local (que você tem no seu relógio de pulso). Por estes você calcula tabelas com horários locais de câmbio, e por eles - os horários do início e do fim (mínimo e máximo) das sessões de negociação.
Parece funcionar, mas eu (por hábito) não posso acreditar que tudo foi feito sem erros. Por quê? Bem, por exemplo, a Austrália e a sessão oceânica. Assim, obtemos fórmulas diferentes para os cálculos: aqui estamos procurando o horário de verão, enquanto eles têm que procurar o horário de verão. Em geral, existem algumas dificuldades :(
Por esta razão, o arquivo que coloquei em meu site e não postado no fórum - como os erros são eliminados, atualizarei o arquivo e o link do fórum será sempre baixado na versão nova e correta (postarei atualizações neste tópico). Você pode fazer o download do arquivo aqui: http: //forextools.com.ua/uploads/files/DST.zip
É o que parece:
Se alguém tiver alguma sugestão construtiva - escreva uma carta. Não posso prometer uma implementação rápida (devido a tempo integral no trabalho principal), mas quando eu tiver tempo - tudo sensato e útil será feito ;)
Mas eu não consigo entender o que você quer dizer com isso. Explicar mais especificamente o que significa "aditivo" (apenas para ter certeza).
E quanto ao servidor TMZ e TMZ local? Qual é a diferença entre a hora local e a hora do CD? Você tem os números 2 e 3 abaixo de cada um, respectivamente? O que isso significa?
Há simplesmente dois cálculos exatamente o mesmo tempo, apenas por conveniência - se o tempo do terminal não corresponder ao tempo do computador local.
A adição é quantas horas (levando em conta a hora de verão ou inverno) serão adicionadas à hora UTC para converter a hora UTC do respectivo intercâmbio para a hora local do fuso horário selecionado. Este campo só é necessário para facilitar os cálculos em excelência.
As regras são muito simples: nós definimos (dependendo do campo Regra) e a data de tempo especificada. É inserido no campo Letn opposite the calculated date. Em seguida, ao horário de trabalho da bolsa de acordo com a UTC, adicionar o número de horas TMZ (da tabela superior) e adicionar a ela a correção Letn (se for horário de verão - então +1) e +TMZ do servidor da corretora ou TMZ local. Como resultado, a hora UTC é convertida para a hora local da respectiva TMZ.
Há um padrão particular de tempo em forex. Esta é a Hora da Europa Central, CET.
Isto é GMT (ou UTC) +1 (+2 no verão).
Em teoria, as velas diárias devem começar à meia-noite CET em qualquer corretora.
Este provavelmente não é o caso, mas a maioria das empresas de corretagem utiliza o tempo CET.
Mais tarde enviarei a você um roteiro que define GMT, horário de verão/inverno, datas de tradução na Europa e América em qualquer ano (na América desde 2007, ou seja, de acordo com as novas regras).
Esclareça: se eu olhar apenas para o relógio do servidor (GMT+1), o horário de início/fim das sessões será constante?
No prgrama eu uso as restrições de hora com o comando Hora(), ou seja, eu verifico a hora atual do servidor, e dentro ou fora.
Se houver uma transição às duas horas, digamos, para trás, então a vela das horas não contém um volume duplo?
Se houver uma transição às duas horas da manhã, digamos, para trás, a vela de uma hora contém um volume duplo?
A transição é sempre no domingo, quando os servidores de negociação (servidores MT de qualquer forma) estão "sem negociação" e, portanto, não há volumes simples ou duplos - há apenas um buraco na história.
A transição é sempre no domingo, quando os servidores comerciais (MT's de qualquer forma) estão "não comercializando" e, portanto, não há lá volumes simples ou duplos - há apenas um buraco na história.
>> Estou vendo, obrigado.
E a primeira pergunta? Eu não preciso saber a hora local. Meu relógio é o servidor comercial. Os horários de abertura das sessões são constantes neste momento?
O programa tem uma restrição: se ( Hora()>t1 && Hout()<t2 ), então vá em frente, senão feche / durma; aproximadamente. Sem nenhuma correção.
Aqui estão algumas funções úteis para lidar com a hora (você pode determinar se a hora de verão ou de inverno está em vigor para qualquer data).
P.S. Na América antes de 2007, a mudança de e para a DST foi na mesma época que na Europa. Use o EUR ao ligar.
Se alguém pudesse converter isto em uma biblioteca, disposto a ajudar (asia, austrália).
Eu fiz funções de DST também para a Europa e EUA, elas retornam verdadeiras para a hora de verão e falsas para a hora de inverno. Eles são projetados para trabalhar com o tempo do servidor, para os EUA somente a partir de 2007.
P.S. Na América antes de 2007 a mudança para e da DST era a mesma que na Europa. Use o EUR quando chamado.
Isto é apenas metade verdade, apenas o final correspondido.
10:00 - Lançamento europeu
Combo, você está enganado. A Europa abre às 09:00 MSK (horário de verão)
Como prometido, "digeri" tudo o que pude em relação às sessões de negociação e ao horário de verão. Fiz um excelente arquivo com calendário de horário de verão e cálculo da hora de início e fim da sessão.
A primeira folha é apenas um calendário de transição, sem fórmulas. Este calendário é usado para calcular as sessões na segunda folha. Na segunda folha, você pode definir apenas três parâmetros: a data atual para a qual você quer calcular tudo, e dois fusos horários: um para o fuso horário do servidor DC, e outro para a hora local (que você tem no seu relógio de pulso). Por estes você calcula tabelas com horários locais de câmbio, e por eles - os horários do início e do fim (mínimo e máximo) das sessões de negociação.
Parece funcionar, mas eu (por hábito) não posso acreditar que tudo foi feito sem erros. Por quê? Bem, por exemplo, a Austrália e a sessão oceânica. Assim, obtemos fórmulas diferentes para os cálculos: aqui estamos procurando o horário de verão, enquanto eles têm que procurar o horário de verão. Em geral, existem algumas dificuldades :(
Por esta razão, o arquivo que coloquei em meu site e não postado no fórum - como os erros são eliminados, atualizarei o arquivo e o link do fórum será sempre baixado na versão nova e correta (postarei atualizações neste tópico). Você pode fazer o download do arquivo aqui: http: //forextools.com.ua/uploads/files/DST.zip
É o que parece:
Se alguém tiver alguma sugestão construtiva - escreva uma carta. Não posso prometer uma implementação rápida (devido a tempo integral no trabalho principal), mas quando eu tiver tempo - tudo sensato e útil será feito ;)
ForexTools, bom trabalho!
Mas eu não consigo entender o que você quer dizer com isso. Explicar mais especificamente o que significa "aditivo" (apenas para ter certeza).
E quanto ao servidor TMZ e TMZ local? Qual é a diferença entre a hora local e a hora do CD? Você tem os números 2 e 3 abaixo de cada um, respectivamente? O que isso significa?
Há simplesmente dois cálculos exatamente o mesmo tempo, apenas por conveniência - se o tempo do terminal não corresponder ao tempo do computador local.
A adição é quantas horas (levando em conta a hora de verão ou inverno) serão adicionadas à hora UTC para converter a hora UTC do respectivo intercâmbio para a hora local do fuso horário selecionado. Este campo só é necessário para facilitar os cálculos em excelência.
As regras são muito simples: nós definimos (dependendo do campo Regra) e a data de tempo especificada. É inserido no campo Letn opposite the calculated date. Em seguida, ao horário de trabalho da bolsa de acordo com a UTC, adicionar o número de horas TMZ (da tabela superior) e adicionar a ela a correção Letn (se for horário de verão - então +1) e +TMZ do servidor da corretora ou TMZ local. Como resultado, a hora UTC é convertida para a hora local da respectiva TMZ.
Há um padrão particular de tempo em forex. Esta é a Hora da Europa Central, CET.
Isto é GMT (ou UTC) +1 (+2 no verão).
Em teoria, as velas diárias devem começar à meia-noite CET em qualquer corretora.
Este provavelmente não é o caso, mas a maioria das empresas de corretagem utiliza o tempo CET.
Mais tarde enviarei a você um roteiro que define GMT, horário de verão/inverno, datas de tradução na Europa e América em qualquer ano (na América desde 2007, ou seja, de acordo com as novas regras).
Esclareça: se eu olhar apenas para o relógio do servidor (GMT+1), o horário de início/fim das sessões será constante?
No prgrama eu uso as restrições de hora com o comando Hora(), ou seja, eu verifico a hora atual do servidor, e dentro ou fora.
Se houver uma transição às duas horas, digamos, para trás, então a vela das horas não contém um volume duplo?
Se houver uma transição às duas horas da manhã, digamos, para trás, a vela de uma hora contém um volume duplo?
A transição é sempre no domingo, quando os servidores de negociação (servidores MT de qualquer forma) estão "sem negociação" e, portanto, não há volumes simples ou duplos - há apenas um buraco na história.
A transição é sempre no domingo, quando os servidores comerciais (MT's de qualquer forma) estão "não comercializando" e, portanto, não há lá volumes simples ou duplos - há apenas um buraco na história.
>> Estou vendo, obrigado.
E a primeira pergunta? Eu não preciso saber a hora local. Meu relógio é o servidor comercial. Os horários de abertura das sessões são constantes neste momento?
O programa tem uma restrição: se ( Hora()>t1 && Hout()<t2 ), então vá em frente, senão feche / durma; aproximadamente. Sem nenhuma correção.