Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Seryozh!
Eu não gosto nem da minha versão (sincronização no primeiro negócio) nem da sua versão,
porque é "24 horas por dia" e ajusta o tempo quase o tempotodo,
enquanto que o tempo só precisa ser ajustado antes do início e no final das sessões.
Necessidade de pensar em fazer um híbrido de nossas versões.
Dê uma olhada e me diga o que você pensa
//| Time_sync_forts.mq5 |
//| Copyright 2017 Sergey Chalyshev & prostotrader |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017 Sergey Chalyshev & prostotrader"
#property link "https://www.mql5.com"
#property version "1.09"
//---
struct _SYSTEMTIME
{
short wYear;
short wMonth;
short wDayOfWeek;
short wDay;
short wHour;
short wMinute;
short wSecond;
short wMilliseconds;
};
_SYSTEMTIME loc_time;
#import "kernel32.dll"
//void GetLocalTime(_SYSTEMTIME &sys_time);
bool SetLocalTime(_SYSTEMTIME &sys_time);
#import
//
input ENUM_DAY_OF_WEEK FirstDay = SATURDAY; //Первый выходной
input ENUM_DAY_OF_WEEK SecondDay = SUNDAY; //Второй выходной
//
MqlTick tick;
MqlDateTime sv_time, tts_time;
int st_st_mon = 35100; //09-45
int end_st_mon = 36000; //10-00
int st_end_mon = 50280; //13-58
int end_end_mon = 50400; //14-00
int st_st_day = 50460; //14-01
int end_st_day = 50700; //14-05
int st_end_day = 67380; //18-43
int end_end_day = 67500; //18-45
int st_st_evn = 67560; //18-46
int end_st_evn = 68400; //19-00
int st_end_evn = 85680; //23-48
int end_end_evn = 85800; //23-50
//---
bool is_sync;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
is_sync = true;
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert Convert To Time function |
//+------------------------------------------------------------------+
bool ConvertToTime(const ulong n_value,_SYSTEMTIME &a_time)
{
MqlDateTime cur_time={0};
TimeToStruct(datetime(n_value/1000),cur_time);
if(cur_time.year>0)
{
a_time.wDay=short(cur_time.day);
a_time.wDayOfWeek=short(cur_time.day_of_week);
a_time.wHour=short(cur_time.hour);
a_time.wMinute= short(cur_time.min);
a_time.wMonth = short(cur_time.mon);
a_time.wSecond= short(cur_time.sec);
a_time.wYear=short(cur_time.year);
a_time.wMilliseconds=short(n_value%1000);
return(true);
}
return(false);
}
//+------------------------------------------------------------------+
//| Expert On Tick function |
//+------------------------------------------------------------------+
void OnTick()
{
tts_time.year = 0;
TimeTradeServer(tts_time);
if(tts_time.year > 0)
{
if((tts_time.day_of_week == int(FirstDay)) ||
(tts_time.day_of_week == int(SecondDay))) return;
int cur_time = tts_time.hour * 3600 + tts_time.min * 60 + tts_time.sec;
if(((cur_time >= st_st_mon) && (cur_time < end_st_mon)) ||
((cur_time >= st_end_mon) && (cur_time < end_end_mon)) ||
((cur_time >= st_st_day) && (cur_time < end_st_day)) ||
((cur_time >= st_end_day) && (cur_time < end_end_day)) ||
((cur_time >= st_st_evn) && (cur_time < end_st_evn)) ||
((cur_time >= st_end_evn) && (cur_time < end_end_evn)))
{
if(!is_sync)
{
if(!SymbolInfoTick(Symbol(), tick))
{
Print("Error SymbolInfoTick", GetLastError());
return;
}
sv_time.year = 0;
TimeToStruct(tick.time, sv_time);
if(sv_time.year>0)
{
ulong last_ping=ulong(NormalizeDouble(double(TerminalInfoInteger(TERMINAL_PING_LAST))/2000,0));
ulong mls_time=ulong(tick.time_msc%1000);
if((mls_time+last_ping)>999)
{
mls_time=tick.time_msc+last_ping;
if(!ConvertToTime(mls_time, loc_time)) return;
}
else
{
loc_time.wYear = short(sv_time.year);
loc_time.wMonth = short(sv_time.mon);
loc_time.wDay = short(sv_time.day);
loc_time.wDayOfWeek = short(sv_time.day_of_week);
loc_time.wHour = short(sv_time.hour);
loc_time.wMinute = short(sv_time.min);
loc_time.wSecond = short(sv_time.sec);
loc_time.wMilliseconds=short(mls_time+last_ping);
}
if(SetLocalTime(loc_time))
{
is_sync=true;
Print("Local time sync is done. Symbol = ",Symbol()," Sync hour = ",loc_time.wHour, " Sync min = ",loc_time.wMinute,
" Sync sec = ",loc_time.wSecond," Sync ms = ",loc_time.wMilliseconds);
}
}
}
}
else is_sync = false;
}
}
//+------------------------------------------------------------------+
Adicionado por
Eu também não gosto que o ping raramente mude no terminal
O primeiro resultado do novo assessor
2017.02.06 10:33:04.922 Delta_time (BR-3.17,M1) ping : 5 | time current: 2017.02.06 10:33:04 | time server: 10:33:4,710 | time local: 10:33:4,922 | delta ms: -21 | min max delta: 0 : -212
2017.02.06 10:33:08.424 Delta_time (BR-3.17,M1) ping : 5 | time current: 2017.02.06 10:33:08 | time server: 10:33:8,407 | time local: 10:33:8,424 | delta ms: -22 | min max delta: 0 : -212
2017.02.06 10:33:11.244 Delta_time (BR-3.17,M1) ping : 5 | time current: 2017.02.06 10:33:11 | time server: 10:33:11,221 | time local: 10:33:11,244 | delta ms: -25 | min max delta: 0 : -212
2017.02.06 10:33:11.830 Delta_time (BR-3.17,M1) ping : 5 | time current: 2017.02.06 10:33:11 | time server: 10:33:11,806 | time local: 10:33:11,830 | delta ms: -27 | min max delta: 0 : -212
2017.02.06 10:33:11.837 Delta_time (BR-3.17,M1) ping : 5 | time current: 2017.02.06 10:33:11 | time server: 10:33:11,806 | time local: 10:33:11,837 | delta ms: -30 | min max delta: 0 : -212
2017.02.06 10:33:12.026 Delta_time (BR-3.17,M1) ping : 5 | time current: 2017.02.06 10:33:11 | time server: 10:33:11,958 | time local: 10:33:12,26 | delta ms: -37 | min max delta: 0 : -212
Antes do final da sessão da manhã a hora foi sincronizada, mas às 14-01 -- 14-04 não foi :(
Aparentemente, isto se deve ao fato de que as aplicações só foram retiradas.
Mas ainda há sincronização :)
2017.02.06 14:23:10.145 Delta_time (BR-3.17,M1) ping : 7 | time current: 2017.02.06 14:23:10 | time server: 14:23:10,121 | time local: 14:23:10,145 | delta ms: -2 | min max delta: 0 : -24
2017.02.06 14:23:10.158 Delta_time (BR-3.17,M1) ping : 7 | time current: 2017.02.06 14:23:10 | time server: 14:23:10,144 | time local: 14:23:10,158 | delta ms: -3 | min max delta: 0 : -24
2017.02.06 14:23:12.188 Delta_time (BR-3.17,M1) ping : 7 | time current: 2017.02.06 14:23:12 | time server: 14:23:12,168 | time local: 14:23:12,188 | delta ms: -5 | min max delta: 0 : -24
2017.02.06 14:23:12.188 Delta_time (BR-3.17,M1) ping : 7 | time current: 2017.02.06 14:23:12 | time server: 14:23:12,168 | time local: 14:23:12,188 | delta ms: -7 | min max delta: 0 : -24
2017.02.06 14:23:14.590 Delta_time (BR-3.17,M1) ping : 7 | time current: 2017.02.06 14:23:14 | time server: 14:23:14,569 | time local: 14:23:14,590 | delta ms: -9 | min max delta: 0 : -24
2017.02.06 14:23:14.725 Delta_time (BR-3.17,M1) ping : 7 | time current: 2017.02.06 14:23:14 | time server: 14:23:14,694 | time local: 14:23:14,725 | delta ms: -13 | min max delta: 0 : -31
2017.02.06 14:23:14.727 Delta_time (BR-3.17,M1) ping : 7 | time current: 2017.02.06 14:23:14 | time server: 14:23:14,699 | time local: 14:23:14,727 | delta ms: -15 | min max delta: 0 : -31
Decidiu sobre o seguinte
int end_st_mon = 36000; //10-00
int st_tr_mon = 36060; //10-01
int end_tr_mon = 36120; //10-02
int st_end_mon = 50280; //13-58
int end_end_mon = 50400; //14-00
int st_st_day = 50700; //14-05
int end_st_day = 50760; //14-06
int st_end_day = 67380; //18-43
int end_end_day = 67500; //18-45
int st_st_evn = 68700; //19-05
int end_st_evn = 68760; //19-06
int st_end_evn = 85680; //23-48
int end_end_evn = 85800; //23-50
Acho que o assunto está esgotado
Versão mais recente aqui
https://www.mql5.com/ru/forum/167309#comment_4065302
Os desenvolvedores agora têm a opção de adicionar tempo aos copos "em sangue pequeno".
A partir do lançamento do Spectra 5.3
4. As mudanças tecnológicas.
Modernização do núcleo e do módulo de risco do TCS, com o objetivo de estabilizar o sistema.
Na versão 5.3, os limitadores de fluxo de transações de gateway dos clientes foram substituídos por um único ponto. Nas versões anteriores, foi utilizado um restritor por porta.
Um novo campo moment_ns foi adicionado para as transações e solicitações de transmissão de quadros de fluxo.
URRRAAAAAAAAAAAAAA!
Adicionado
O Spectra 5.3 entrará em funcionamento no dia 27 de fevereiro de 2017.
Adicionado
{
ENUM_BOOK_TYPE type; // тип заявки из перечисления ENUM_BOOK_TYPE
double price; // цена
long volume; // объем
ulong moment_ns; //ООООООООО-ЧЕНЬ ЖДЁМ
};
Adicionado
{
ENUM_BOOK_TYPE type; // тип заявки из перечисления ENUM_BOOK_TYPE
double price; // цена
long volume; // объем
ulong moment_ns; //ООООООООО-ЧЕНЬ ЖДЁМ
};
E seria também por sentimento (tanto quanto sei, as informações sobre OI, mandados, etc. são chamadas assim). Um milissegundo será suficiente ali. E em geral, quanto mais preciso melhor, mas eu gostaria de ter uma precisão para todas as informações possíveis.
E os ULONG non-seconds irão se encaixar?
Adicionado
Necessidade de ver como foi anunciadoo momento_na troca
Em 20 dias já estará ao vivo, mas
a documentação ainda não está publicada (como sempre) :(
E os ULONG non-seconds irão se encaixar?
Adicionado
Necessidade de ver como foi anunciadoo momento_na troca
Em 20 dias já estará ao vivo, mas
a documentação ainda não está publicada (como sempre) :(
вечерняя дополнительная торговая сессия на срочном рынке 24 февраля 2017 г.
(является торговым днем на срочном рынке) будет отменена.