Onde está a área
O consultor não foi a lugar algum. O consultor está em seu lugar:

Quero refinar o Expert Advisor para mim, mas, para isso, preciso entender muitas coisas! (Eu não entendo muitas coisas). Farei perguntas em partes.
Há um código:
if(m_need_delete_buy_stop || m_need_delete_sell_stop) { int count_buy_stops=0,count_sell_stops=0; CalculateAllPendingOrders(count_buy_stops,count_sell_stops); if(m_need_delete_buy_stop) { if(count_buy_stops>0) { DeleteOrders(ORDER_TYPE_BUY_STOP); return; } else { m_need_delete_buy_stop=false; return; } } if(m_need_delete_sell_stop) { if(count_sell_stops>0) { DeleteOrders(ORDER_TYPE_SELL_STOP); return; } else { m_need_delete_sell_stop=false; return; } } }
O que ele faz?
Quero refinar o Expert Advisor para mim, mas, para isso, preciso entender muitas coisas! (Eu não entendo muitas coisas). Farei perguntas em partes.
Há um código:
O que ele faz?
Se o sinalizador"m_need_delete_buy_stop" ("é necessário excluir ordens pendentes de parada de compra") ou "m_need_delete_sell_stop" ("é necessário excluir ordens pendentes de parada de venda") for levantado
if(m_need_delete_buy_stop || m_need_delete_sell_stop)
{ prosseguir com a exclusão.
Calculamos quantas ordens pendentes o Expert Advisor colocou no momento:
int count_buy_stops=0,count_sell_stops=0; CalculateAllPendingOrders(count_buy_stops,count_sell_stops);
Se "é necessário excluir as ordens pendentes de parada de compra":
if(m_need_delete_buy_stop) { if(count_buy_stops>0) { DeleteOrders(ORDER_TYPE_BUY_STOP); return; } else { m_need_delete_buy_stop=false; return; } }
e o número de ordens de parada de compra colocadas for maior que zero ('count_buy_stops') - exclua-as. Se o número for igual a zero, redefina o sinalizador"m_need_delete_buy_stop".
Fazemos o mesmo se "for necessário excluir ordens pendentes de sell stop" ...
- www.metatrader5.com
Obrigado!
Outro código que não entendo:
//--- trabalhamos somente no momento do nascimento da nova barra static datetime PrevBars=0; datetime time_0=iTime(m_symbol.Name(),InpWorkTimeFrame,0); if(time_0==PrevBars) return; PrevBars=time_0; if(!RefreshRates()) { PrevBars=0; return; }
Obrigado!
Outro código que não entendo:
Esse código faz o seguinte: ele funciona apenas uma vez - quando uma nova barra nasce.
Esse código faz o seguinte: ele funciona apenas uma vez - no momento em que uma nova barra nasce.
Obrigado. Foi isso que entendi no final:
//--- trabalhamos somente no momento do nascimento da nova barra // lembrar o horário de abertura da última barra na variável estática static datetime PrevBars=0; // hora atual (iTime - retorna o valor da hora de abertura da barra) datetime time_0=iTime(m_symbol.Name(),InpWorkTimeFrame,0); if(time_0==PrevBars) return; // se o tempo for diferente porque a condição passou if(time_0==PrevBars) // lembre-se da hora PrevBars=time_0; // se as cotações não tiverem sido atualizadas, redefina a hora da abertura da última barra if(!RefreshRates()) { PrevBars=0; return; } // Se você chegou a esse lugar, não é um bar novo.
Sem o seu link, eu não teria entendido)
Obrigado a você. Aqui está o que eu percebi no final:
Eu não teria descoberto isso sem seu link)
Pequena correção. Este é o
// Se você chegou a esse lugar, não é um bar novo. está incorreto. Está correto:
// você chegou a esse ponto, então a barra é nova.
A propósito, o código está logo abaixo:
if(!RefreshRates() || !m_symbol.Refresh()) { PrevBars=0; return; }
Acho que ele duplica parcialmente o código discutido acima:
if(!RefreshRates()) { PrevBars=0; return; }
Acho que ele pode ser excluído
Uma pequena correção. Este é o
está incorreto. Está correto:
- 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
Cidomo:
O Expert Advisor usa ordens pendentes Buy Stop e Sell Stop.
Autor: Vladimir Karputov