
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¡Seryozh!
No me gusta ni mi versión (sincronización en el primer trato) ni la tuya,
porque está "en todo momento" y ajusta la hora casitodo el tiempo,
mientras que el tiempo sólo debe ajustarse antes del inicio y al final de las sesiones.
Hay que pensar en hacer un híbrido de nuestras versiones.
Echa un vistazo y dime qué te parece
//| 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;
}
}
//+------------------------------------------------------------------+
Añadido por
Tampoco me gusta que el ping rara vez cambie en el terminal
El primer resultado del nuevo asesor
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 de terminar la sesión de la mañana la hora estaba sincronizada, pero a las 14-01 -- 14-04 no lo estaba :(
Al parecer, esto se debe al hecho de que las aplicaciones sólo fueron retiradas.
Pero sigue habiendo sincronización :)
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
Decidimos lo siguiente
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
Creo que el tema está agotado
Última versión aquí
https://www.mql5.com/ru/forum/167309#comment_4065302
Los desarrolladores tienen ahora la opción de añadir tiempo a los vasos "en sangre pequeña
De la versión de Spectra 5.3
4. cambios tecnológicos.
Modernización del núcleo y del módulo de riesgo del TCS, con el fin de estabilizar el sistema.
En la versión 5.3, los limitadores de flujo de transacciones de la pasarela de clientes han sido sustituidos por un único punto. En versiones anteriores, se utilizaba un limitador por puerta de enlace.
Se ha añadido un nuevo campo moment_ns para las tablas de flujo que emiten transacciones y solicitudes.
¡URRRAAAAAAAA!
Añadido
Spectra 5.3 entrará en funcionamiento en la bolsa el 27 de febrero de 2017.
Añadido
{
ENUM_BOOK_TYPE type; // тип заявки из перечисления ENUM_BOOK_TYPE
double price; // цена
long volume; // объем
ulong moment_ns; //ООООООООО-ЧЕНЬ ЖДЁМ
};
Añadido
{
ENUM_BOOK_TYPE type; // тип заявки из перечисления ENUM_BOOK_TYPE
double price; // цена
long volume; // объем
ulong moment_ns; //ООООООООО-ЧЕНЬ ЖДЁМ
};
Y también sería por sentimiento (por lo que tengo entendido la información sobre OI, warrants, etc se llama así). Un milisegundo será suficiente. Y en general, cuanto más preciso sea, mejor, pero me gustaría una precisión para toda la información posible.
¿Y encajarán los no-segundos ULONG?
Añadido
Hay que ver cómo se anunciael intercambio de moment_ns
En 20 días ya estará en vivo, pero
la documentación no está publicada todavía (como siempre) :(
¿Y encajarán los no-segundos ULONG?
Añadido
Hay que ver cómo se anunciael intercambio de moment_ns
En 20 días ya estará en vivo, pero
la documentación aún no está publicada (como siempre) :(
вечерняя дополнительная торговая сессия на срочном рынке 24 февраля 2017 г.
(является торговым днем на срочном рынке) будет отменена.