Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 26
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
Uma vez que você tenha limpo seu código, ele será mais legível para você, para não mencionar outros que precisam entender sua lógica. É lá que todos os insetos serão vistos.
Agora, remova os parênteses extra pareados e organize o resto normalmente em blocos, e você verá onde sua lógica está com falhas.
Quais deles são redundantes?
Você tem muitos suportes desnecessários em seu código - processe o código com um estilizador, e você verá imediatamente os parênteses extra vazios.
Feito
Feito por
Melhor maneira: if(count<==20) count++; - por que contar mais se você só precisa contar 21?
2.{
if(Bars<801 || (IsTradeAllowed()==false)) //--- Проверим достаточна ли в истории баров для анализа и разрешение торговли
Print("Нет достаточного количества баров или торговля на текущем инструменте запрещена");
return;
}
E aqui está o wigwam. Isto só verificará o número de barras e imprimirá quandocontar >20, o resto do código funcionará quandocontar <=20.
3.
if(OrderSymbol()==Symbol() && OrderType()<2)
continue;
Se você só precisa considerar os do mercado (e isto é o que você espera de mais código), você não precisacontinuar de forma alguma.
4.
{
dummy=(OrderClose(OrderTicket(),OrderLots(),Bid,0,White));
{
if((dummy==true) && ((OrderSelect(i,SELECT_BY_POS,MODE_TRADES))==false))
PlaySound("music");
Sleep(20000);
PlaySound("music");
Sleep(20000);
PlaySound("music");
Sleep(20000);
dummy=false;
ExpertRemove();
}
}
Ela fecha um pedido e se elimina? E se houver mais deles? E dorme por um minuto inteiro.
Ainda não olhei para o código acima, não há lugar para testá-lo.
1 ok, eu vou consertar isso
2 não está bem, os seguintes blocos não devem funcionar nacontagem<20
3 OK, vou corrigi-lo
4 Sim, é um minuto, mas só deve ser iniciado se não houver mais ordens do mercado para o símbolo atual. Eu tentei implementá-lo através de um resultado negativo da seleção de pedidos, por isso devemos colocar o retorno em algum lugar, mas o retorno no vazio OnTick() não parece tão bom assim. E mais uma vez, OrdersTotal() dará o resultado errado se tivermos muitos pedidos para todos os símbolos.
2 não está OK, os seguintes blocos não devem funcionar quandocontar<20
Em seguida, precisamos acrescentar outros retornos após o bloco;
4 Sim, é um minuto, mas só deve ser iniciado se não houver mais ordens do mercado para o símbolo atual. Eu tentei implementá-lo através de um resultado negativo da seleção de pedidos, é por isso que devemos definir o retorno em algum lugar, enquanto o retorno no vazio OnTick() não parece muito bom. E mais uma vez, OrdersTotal() dará o resultado errado se tivermos muitas ordens sobre todos os símbolos.
Por que precisamos de três sons?
Bem, podemos fazer tudo em duas etapas: na primeira etapa, você fecha as ordens e na seguinte você recalcula todas as ordens do mercado para verificar se sobrou alguma, e se não sobrou nenhuma, as fanfarras tocam.
Mas ainda não entendo qual é o truque da música depois que os pedidos são fechados. Bem, você pode fazer uma impressão para o diário ou enviar uma mensagem para o correio ou notificação para os inteligentes, mas de que adianta transformar a EA em uma caixa de música?Então você deve acrescentar um retorno após o outro bloco de retorno;
Por que precisamos do triplo do som?
Mas você pode fazer tudo em duas etapas: na primeira etapa você fecha as ordens, e na seguinte você recalcula todas as ordens do mercado para verificar se há alguma que não está fechada, e se não há nenhuma, a fanfarra toca.
Eu ainda não entendo qual é o truque com a música quando as encomendas foram fechadas. Bem, podemos imprimi-lo para a revista, enviar uma mensagem para o correio ou notificar o smartphone, mas por que devemos transformar nosso EA em uma caixa de música?Como se separam os ciclos?
Como ligar o som à última ordem fechada? Porque se não houver ordens, o Expert Advisor não acionaria um som.
E uma última coisa: estou feliz com a música, por enquanto.
Como separar os ciclos?
Como ligar o som ao último fechado? porque se não houver ordens, o Expert Advisor não trabalhará
E por fim, estou feliz com a música por enquanto.
O que você quer dizer com "separar"? Não temos que separar nada. Só precisamos de dois loops (são quase os mesmos), mas um tem OrderClose() e o outro tem um contador de pedidos. O critério de seleção do pedido é o mesmo. Se o contador for=0, todos os pedidos foram fechados e podemos tocar música.
Também notei que a condição
{
if((Bid>=ma1-X*Point && Bid<ma1) || (Bid<=ma1+X*Point && Bid>ma1))
{
{y=true;}
}
}
Não parece estar relacionado a uma determinada ordem, então para que serve no laço?
Eu o verificaria antes do ciclo de fechamento.