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
A propósito, é estranho que você chame Sleep() de um indicador, porque é proibido:
A função Sleep() não pode ser chamada a partir de indicadores personalizados, pois os indicadores são executados na rosca de interface e não devem retardá-la. A função tem incorporado a verificação do status da bandeira de parada do especialista a cada 0,1 segundos.
A propósito, é estranho que você chame Sleep() do indicador, pois é proibido:
Alexei!
Um instrumento bastante líquido :)
Não se trata de instrumento (liquidez), trata-se de atraso, que pode ocorrer em QUALQUER instrumento.
Eu tenho negociado ativamente com EAs há quase 4 anos.
Eu não tenho nenhuma pausa em nenhum dos meus EAs (exceto pausa para esperar que os dados sejam baixados do servidor no INDICADORES),
Se você fizer uma pausa, é um sinal certo de que o algoritmo de sua EA não está funcionando corretamente :(
Não sei o que é Sono()
Então é estranho que você e eu estejamos discutindo pausas agora...
Não no sentido do que Sleep() faz, mas no sentido de usá-lo em meu código.
Como você implementa uma pausa em seu indicador?
// Custom indicator Check timer function |
//+------------------------------------------------------------------+
bool CheckTimer(const uint start_value, const uint per_value)
{
uint end_value = GetTickCount();
if(end_value < start_value)
{
if((start_value - end_value) >= per_value) return(true);
}
else
{
if((end_value - start_value) >= per_value) return(true);
}
return(false);
}
//+------------------------------------------------------------------+
//| Custom indicator Get server data function |
//+------------------------------------------------------------------+
int LoadServerData(const string a_symbol, ENUM_TIMEFRAMES period)
{
int fail_cnt = 0;
//---
while((fail_cnt < 5) && !IsStopped())
{
long first_date = long(SeriesInfoInteger(a_symbol, PERIOD_M1, SERIES_SERVER_FIRSTDATE));
//---
if(first_date > 0)
{
if(SymbolIsSynchronized(a_symbol))
{
// Print( "LoadServerData: Первая дата на сервере есть. Пробуем получить локальные данные..." );
return(GetLocalData(a_symbol, period));
}
}
else
{
uint start_tick = GetTickCount();
//---
while(!CheckTimer(start_tick, 10))
{
fail_cnt--;
fail_cnt++;
}
}
fail_cnt++;
}
// Print( "LoadServerData: Первой даты на сервере нет!" );
return(0);
}
Este é um exemplo antigo.
Como o erro GetTickCount é bastante alto (até 16 ms), agora eu uso GetMicrosecondCount().
Em princípio eu faço isso, mas em Forts a ordem é freqüentemente aceita com sucesso...mas no próximo tick ainda não há posição...
É aqui que a abertura adicional pode escorregar .... resolver parcialmente o problema desta forma, se o pedido for aceito, eu aumento a variável int, e após o aumento as condições de abertura são ligeiramente diferentes, então não há nova abertura, mas.... se o pedido não for aceito a variável não é aumentada, mas aqui está a parte complicada... Julguei mal o estado e ordens adicionais começaram a aparecer.
Alexei!
Um instrumento bastante líquido :)
Não se trata de instrumento (liquidez), trata-se de atraso, que pode ocorrer em QUALQUER instrumento.
Eu tenho negociado ativamente com EAs há quase 4 anos.
Eu não tenho nenhuma pausa em nenhum dos meus EAs (exceto pausa para esperar que os dados sejam baixados do servidor no INDICADORES),
Se você fizer uma pausa, é um sinal certo de que o algoritmo de sua EA não está funcionando corretamente :(
Eu também venho negociando há bastante tempo e somente com a ajuda de EAs. Mas principalmente no MT4. Tenho negociado no MT5 somente com Consultores Especialistas usando Limites e não houve problemas. Se eu sou um escalper ou um pipsder, eu não gosto de pausas em Expert Advisors, além disso, eu simplesmente perco uma entrada.