Bem, funciona para mim como antes... Nenhuma mudança! Eu tenho até a função de abrir um novo bar:
bool isNewBar()
{
staticdatetime lastBar; // Задаём переменную для времени открытия последнего бараdatetime currBar; // Задаём переменную для времени открытия текущего бара
currBar = iTime(Symbol(),PERIOD_M1,0); // Находим время открытия текущего бараif(lastBar!=currBar) // Если время открытия последнего бара не равно времени открытия текущего бара, то...
{
lastBar=currBar;
return(true);
}
return(false);
}
que também funciona corretamente. É por isso que o meu código está sendo escolhido sem fundamento. E a pergunta estava geralmente correta. Aparentemente, o testador está com falhas, então as leituras estão todas erradas. Na M5 é de alguma forma mais limpa, na M15 também a H1 já é parecida.
Está funcionando da mesma forma que antes. Não há mudanças! Eu tenho até mesmo uma nova função de abertura de bar:
que também funciona bem. É por isso que meu código está sendo criticado sem fundamento. Mas a pergunta estava correta em geral. Aparentemente, o testador está com falhas e as leituras estão erradas. Na M5 é de alguma forma mais limpa, na M15 também a H1 já é abismal.
Eu aconselharia a escrever se (última barra<currBar) imediatamente, embora isso dificilmente mudará alguma coisa. Vou mais longe em seus postos, talvez eu diga outra coisa.
Está funcionando da mesma forma que antes. Não há mudanças! Tenho até uma função para abrir um novo bar:
que também funciona bem. É por isso que meu código está sendo criticado sem fundamento. Mas a pergunta estava correta em geral. Aparentemente, o testador está com falhas e as leituras estão erradas. Na M5 é de alguma forma mais limpa, na M15 também a H1 já é abismal.
Isso pode ajudar. Sua função start() está um pouco retrabalhada. Não entrou profundamente no assunto, mas mesmo assim:
int start()
{
fastMa = iMA(NULL,i_TF,i_fastMaPeriod,0,MODE_EMA,MODE_CLOSE,1);
slowMa = iMA(NULL,i_TF,i_slowMaPeriod,0,MODE_EMA,MODE_CLOSE,1);
/* Print("Bid = ", Bid);
Print("Ask = ", Ask);
Print("fastMa = ", fastMa);
Print("i_thresholdFromMa * pt = ", i_thresholdFromMa * pt);
*/// Отслеживание открытия нового бараstaticdatetime lastBarTime = iTime(NULL, 0, 1)); // Время проведения последних рассчётов, изначально принимаем предыдущий барif (lastBarTime < iTime(NULL, 0, 0)) // Если случился новый бар// Рассчёт сигнала
{
if("На этом баре случилось что-то, что вынуждает ждать следуещего бара")
{
..........// Выполняем действия открытия/закрытия или что-то там ещё...
lastBarTime = iTime(NULL, 0, 0); // На текущем баре все необходимые действия выполнены, ждём следуещего бара..
}
else
{
"Ничего не случилось, ждем до следуещего тика"
}
}
// .. успешно выполненыreturn (0);
}
Está funcionando da mesma forma que antes. Não há mudanças! Eu tenho até mesmo uma nova função de abertura de bar:
que também funciona bem. É por isso que meu código está sendo criticado sem fundamento. Mas a pergunta estava correta em geral. Aparentemente, o testador está com falhas e as leituras estão erradas. Na M5 é de alguma forma mais limpa, na M15 também a H1 já é abismal.
Com respeito à sua situação:
O tempo foi inicializado uma vez - quando você inicia a EA, ela não será inicializada novamente, então quando você mudar de M1 para D1 você terá que esperar cerca de um dia para atualizar o gráfico :(
O tempo foi inicializado uma vez - quando você inicia o EA, ele não será inicializado novamente, então quando você muda de M1 para D1 você terá que esperar cerca de um dia para que o gráfico seja atualizado :(
O Expert Advisor trabalha em um TF específico. Por que eu precisaria trocá-lo?
A estática funciona 100%. Aqui está o teste:
E os resultados:
Bem, funciona para mim como antes... Nenhuma mudança! Eu tenho até a função de abrir um novo bar:
que também funciona corretamente. É por isso que o meu código está sendo escolhido sem fundamento. E a pergunta estava geralmente correta. Aparentemente, o testador está com falhas, então as leituras estão todas erradas. Na M5 é de alguma forma mais limpa, na M15 também a H1 já é parecida.
Está funcionando da mesma forma que antes. Não há mudanças! Eu tenho até mesmo uma nova função de abertura de bar:
que também funciona bem. É por isso que meu código está sendo criticado sem fundamento. Mas a pergunta estava correta em geral. Aparentemente, o testador está com falhas e as leituras estão erradas. Na M5 é de alguma forma mais limpa, na M15 também a H1 já é abismal.
Eu aconselharia a escrever se (última barra<currBar) imediatamente, embora isso dificilmente mudará alguma coisa. Vou mais longe em seus postos, talvez eu diga outra coisa.
Está funcionando da mesma forma que antes. Não há mudanças! Tenho até uma função para abrir um novo bar:
que também funciona bem. É por isso que meu código está sendo criticado sem fundamento. Mas a pergunta estava correta em geral. Aparentemente, o testador está com falhas e as leituras estão erradas. Na M5 é de alguma forma mais limpa, na M15 também a H1 já é abismal.
Isso pode ajudar. Sua função start() está um pouco retrabalhada. Não entrou profundamente no assunto, mas mesmo assim:
Isso pode ajudar. Sua função de início() é um pouco retrabalhada. Não entrou profundamente no assunto, mas mesmo assim:
Bem, aqui o tempo de cálculo é tirado da barra anterior. Não parece lógico. Precisamos da barra atual.
Pessoalmente, eu nunca encontrei um statik que não funcionasse.
Aqui está um exemplo de um especialista, se você quiser verificá-lo em um gráfico:
1. Inicie o Expert Advisor.
2. Mude a TF.
3. Certifique-se de que o cc não se torne 20 novamente.
Está funcionando da mesma forma que antes. Não há mudanças! Eu tenho até mesmo uma nova função de abertura de bar:
que também funciona bem. É por isso que meu código está sendo criticado sem fundamento. Mas a pergunta estava correta em geral. Aparentemente, o testador está com falhas e as leituras estão erradas. Na M5 é de alguma forma mais limpa, na M15 também a H1 já é abismal.
Com respeito à sua situação:
O tempo foi inicializado uma vez - quando você inicia a EA, ela não será inicializada novamente, então quando você mudar de M1 para D1 você terá que esperar cerca de um dia para atualizar o gráfico :(
Aplica-se à sua situação:
O tempo foi inicializado uma vez - quando você inicia o EA, ele não será inicializado novamente, então quando você muda de M1 para D1 você terá que esperar cerca de um dia para que o gráfico seja atualizado :(
O Expert Advisor trabalha em um TF específico. Por que eu precisaria trocá-lo?
3. Certifique-se de que o cc não tenha se tornado 20 novamente.
Esta é uma característica documentada dos EAs.
O que é Static então? É mais um Fatalic...
A propósito, onde está documentado?
O Expert Advisor trabalha em um TF específico. Por que eu precisaria trocá-lo de repente?
Você pode simplesmente mudar alguns parâmetros. A reação ocorrerá somente após o primeiro tique de uma nova barra no conjunto TF.
Mas você mesmo se perguntou por que o Expert Advisor é inexplicável em um TF superior:)