2017.01.13 10:00:03.210 Trades 'xxxxx': sell limit 1.00 MXI-6.17 at 2300.75
2017.01.13 10:00:03.216 Trades 'xxxxx': accepted buy limit 1.00 MXI-6.17 at 2230.15
2017.01.13 10:00:03.218 Trades 'xxxxx': accepted sell limit 1.00 MXI-6.17 at 2300.75
2017.01.13 10:00:03.219 Trades 'xxxxx': failed buy limit 1.00 MXI-6.17 at 2230.15 [Market closed]
2017.01.13 10:00:03.220 Trades 'xxxxx': failed sell limit 1.00 MXI-6.17 at 2300.75 [Market closed]
adicionado
O tempo de negociação é verificado antes que a ordem seja enviada
//+------------------------------------------------------------------+
//| Expert Check traiding time function |
//+------------------------------------------------------------------+
bool CheckTradingTime(MqlDateTime &tick_time)
{
datetime lk_time = TimeCurrent(tick_time);
if ( ( tick_time.day_of_week == int(FirstDay)) ||
( tick_time.day_of_week == int(SecondDay)))//выходные
{
return(false);
}
#ifdef DEBUG
if ((tick_time.hour >= 0) && (tick_time.hour < 6)) // DEBUG 6-00
{
return(false);
}
#else
if ((tick_time.hour >= 0) && (tick_time.hour < 10))
{
return(false);
}
#endif
// 13 * 3600 + 59 * 60 + 30 = 50370 - 13:59:30
// 14 * 3600 = 50400 - 14:00:00
// 14 * 3600 + 30 = 50430 - 14:00:30
// 14 * 3600 + 60 = 50460 - 14:01:00
// 18 * 3600 + 44 * 60 + 30 = 67470 - 18:44:30
// 18 * 3600 + 45 * 60 = 67500 - 18:45:00
// 18 * 3600 + 45 * 60 + 30 = 67530 - 18:45:30
// 18 * 3600 + 46 * 60 = 67560 - 18:46:00
// 19 * 3600 = 68400 - 19:00:00
// 19 * 3600 + 60 = 68460 - 19:01:00
// 23 * 3600 + 49 * 60 + 30 = 85770 - 23:49:30
// 23 * 3600 + 50 * 60 = 85800 - 23:50:00
// 23 * 3600 + 50 * 60 + 30 = 85830 - 23:50:30
// 23 * 3600 + 51 * 60 = 85860 - 23:51:00
//---
ulong trade_time = tick_time.hour * 3600 + tick_time.min * 60 + tick_time.sec;
//--- //10:00:02
if(((trade_time >= time_st_mon) && (trade_time < 50370)) ||
((trade_time >= time_st_day) && (trade_time < 67470)) ||
((trade_time >= time_st_evn) && (trade_time < 85770)))
{
return(true);
}
return(false);
}
ulong time_st_mon = GetStringTime(TimeStMon);
{
int k = 0;
string s_sec, s_min, s_hour;
int str_size = StringLen(a_string);
//---
if(str_size != 8) return(0);
//---
for(int i = str_size - 1; i >= 0; i--)
{
ushort let_symbol = StringGetCharacter(a_string, i);
if(let_symbol == ':')
{
k++;
switch(k)
{
case 1:
s_sec = StringSubstr(a_string, i + 1, str_size - i - 1);
break;
case 2:
s_min = StringSubstr(a_string, i + 1, str_size - i - 4);
s_hour = StringSubstr(a_string, 0, i);
break;
}
//---
}
}
if(k != 2) return(0);
ulong t_sec = ulong(StringToInteger(s_sec));
ulong t_min = ulong(StringToInteger(s_min)) * 60;
ulong t_hour = ulong(StringToInteger(s_hour)) * 3600;
//---
return(t_hour + t_min + t_sec);
}
Vocês são os desenvolvedores!
Quando você vai sincronizar o tempo do terminal com o tempo de troca?
2017.01.13 10:00:03.969 Trades 'xxxxx': sell limit 1.00 ED-6.17 at 1.0813
2017.01.13 10:00:03.975 Trades 'xxxxx': accepted buy limit 2.00 ED-6.17 at 1.0642
2017.01.13 10:00:03.975 Trades 'xxxxx': accepted sell limit 1.00 ED-6.17 at 1.0813
2017.01.13 10:00:03.978 Trades 'xxxxx': failed buy limit 2.00 ED-6.17 at 1.0642 [Market closed]
2017.01.13 10:00:03.979 Trades 'xxxxx': failed sell limit 1.00 ED-6.17 at 1.0813 [Market closed]
É necessário entender quem cospe no tempo do mundo e estabelece o seu próprio tempo, a bolsa ou o corretor. Com interesse próprio ou apenas por estupidez.
Quem tem o mesmo tempo que o tempo mundial?
Você tem que descobrir quem cospe no tempo do mundo e estabelece seu próprio tempo, a bolsa de valores ou o corretor. Seja por interesse próprio ou apenas por estupidez.
Quem tem o mesmo tempo que o tempo mundial?
Sim, esqueça o tempo do mundo, nós negociamos na Bolsa de Moscou ao mesmo tempo,
e não é culpa do corretor, é dos desenvolvedores, porque qualquer cotação que venha da Bolsa
tem tempo, e portanto a hora da última citação conhecida deve ser
tempo conhecido da troca (NÃO O SERVIDOR) e o TERMINAL
TimeCurrent
TimeCurrent, retorna o tempo do SERVIDOR, não o TERMINAL!
É provavelmente daqui que as "pernas crescem".
Sim, que seja, o mundo, nós estamos negociando na Bolsa de Moscou, de acordo com a época da Bolsa,
e não é culpa do corretor, é dos desenvolvedores, porque qualquer cotação que venha da Bolsa
tem tempo, e portanto a hora da última citação conhecida deve ser
tempo conhecido da troca (NÃO O SERVIDOR) e o TERMINAL
TimeCurrent
TimeCurrent, retorna o tempo do SERVIDOR, não a troca!
Portanto, provavelmente "as pernas crescem".
E se o servidor em Moscou, e a troca for no Brasil, pode ser?
E se o servidor estiver em Moscou e a troca estiver no Brasil, isso pode ser?
Não me interessa onde está o servidor!
A cotação (ou melhor, o TEMPO da cotação) é o TEMPO atual.
Adicionado
Neste momento, o que está acontecendo?
O servidor MT5 apenas envia uma cotação para o terminal, independente do momento da cotação,
A hora do servidor e a hora da cotação não estão sincronizadas porque existe um pré-mercado.
A EA envia o pedido, o terminal confirma-o e o servidor verifica o tempo em relação
O servidor verifica o tempo UNLESS I know what it is e o pedido é redirecionado com um erro de cerca de 3 segundos (de acordo com meu tempo computacional) !!!!.
Não me interessa onde está o servidor!
A cotação (ou melhor, o TEMPO da cotação) é a hora atual do COMÉRCIO.
Adicionado por
Neste momento, o que está acontecendo é
O servidor MT5 simplesmente envia uma cotação para o terminal, independentemente da hora da cotação,
A hora do servidor e a hora da cotação não estão sincronizadas porque existe um pré-mercado.
A EA envia o pedido, o terminal confirma-o e o servidor verifica o tempo em relação
o servidor verifica o tempo TUDO e reajusta o pedido com um erro de cerca de 3 segundos!!!!
Citar (ou melhor, citar TIME) é o TIME atual.
este é o tempo de estoque.
O tempo do servidor não é transferido para o terminal: TimeLocal == TimeTradeServer.
Eu também estou farto deste problema. É um tópico que já surgiu no fórum várias vezes. Todos resolvem este problema à sua maneira, mas eu ainda não vi a solução certa. É necessário determinar como corrigir e instar os desenvolvedores a consertá-la.
Agora há três funções para obter o tempo (se a memória servir bem) é:
TimeLocal==TimeTradeServer, tempo de computador,
TimeTradeServer == função sem valor,
TimeCurrent == hora da última cotação.
Precisamos adicionar o tempo de troca, jogar fora oTimeTradeServerou passar o tempo de troca atual, ou adicionar um tipoTimeExchange.
Нужно добавить время биржы, выкинуть TimeTradeServer или вместо него передавать текущее время биржи, или добавить типа TimeExchange.
Ainda não é uma opção para nosso intercâmbio, eu não sei sobre outros.
Eles começam a negociar quando querem, às vezes às 10:00, às vezes às 10:03 ou 10:05.
Aparentemente, quando acordam e bebem café, eles o ligam))).
Sergei!
Leia a ajuda da TimeCurrent - ela diz que este é o tempo SERVIDOR
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Vocês são os desenvolvedores!
Quando você vai sincronizar o tempo do terminal com o tempo de troca?
2017.01.13 10:00:03.969 Trades 'xxxxx': sell limit 1.00 ED-6.17 at 1.0813
2017.01.13 10:00:03.975 Trades 'xxxxx': accepted buy limit 2.00 ED-6.17 at 1.0642
2017.01.13 10:00:03.975 Trades 'xxxxx': accepted sell limit 1.00 ED-6.17 at 1.0813
2017.01.13 10:00:03.978 Trades 'xxxxx': failed buy limit 2.00 ED-6.17 at 1.0642 [Market closed]
2017.01.13 10:00:03.979 Trades 'xxxxx': failed sell limit 1.00 ED-6.17 at 1.0813 [Market closed]