[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 190

 
DhP:

É o mesmo, mas é mais fácil (mais familiar) ler o código.

Sou preguiçoso demais para descobrir, mas alguém encontrará facilmente um erro em seu código sem esforço. Basta esperar.

Não há erros aí. Tudo funciona bem individualmente, mas eu gostaria de combinar tudo em um único Expert Advisor. Ao menos combine os Expert Advisors com linhas, o sinal sonoro também pode ser executado separadamente como um roteiro.
 

Às vezes, uma mensagem aparece no diário de bordo:

preço inválido 1.37197000 para a função OrderSend

O que poderia ser isto? Aparece após o stop loss ter sido alcançado.

 

o preço errado é 1.37197000.

o preço correto é 1.37197 ou 1.3719, dependendo de qual DNS.

NormalizeDouble() é usado para definir o número de dígitos após o ponto decimal

 

Como posso rastrear a abertura de um novo bar no início()?

Preciso que o código não seja acionado a cada tique, mas somente depois que uma nova barra for aberta

 

Se o horário do bar não for o mesmo, significa que o bar mudou.

se não for igual, significa que a barra mudou - faça o que você precisa fazer e lembre-se do tempo.

 

Quem usou isCloseLastPosByStop() ou isCloseLastPosByTake()? Mostre como você o fez.

 

Você poderia aconselhar como carregar o indicador em um gráfico de forma programática?

Existe a função bool ServiceLoadCustomIndicator(int hwndChart,...); //hwndChart- Sistema descritor da janela do gráfico, onde o indicador é carregado.

Eu não sei como conhecer o descritor da janela do gráfico.

Só preciso memorizar o GetTickCount no primeiro tick após o início do indicador, mas o código abaixo não funciona - o terminal fica pendurado. Talvez no init() RefreshRates não funcione de jeito nenhum...?

 while(true){
  if(RefreshRates()) { tik=GetTickCount(); break; }
  Sleep(1); }
 
doon:

Quem usou isCloseLastPosByStop() ou isCloseLastPosByTake()? Mostre-me como você o fez.

Não poderia ser mais simples:

if (isCloseLastPosByStop(OP_BUY, Magic)) {
// код если последняя поза Бай с магиком Magic закрылась по стоп-приказу
}
if (isCloseLastPosByTake(OP_SELL, Magic)) {
// код если последняя поза Селл с магиком Magic закрылась по тейку
}

Coloque as próprias funções fora do início da função(), você pode até mesmo no final de todo o código.

 
todem:

assim, pelo menos um pouco de vídeo ao vivo irá contribuir para a experiência dos futuros programadores aqui
Sua explicação é insatisfatória. Um "vídeo ao vivo" com um estúpido anúncio para um corretor não traz nada além de propaganda para o corretor.
Seus cargos são apagados, você foi avisado.
 
artmedia70:

Isto é o mais fácil que se pode fazer:
Coloque as próprias funções fora da função start(), ou no final de todo o código.

Devo acrescentar que no mesmo link, onde doon tomou o código de funções, há um exemplo de test_isCloseLastPosByStop.mq4 script, onde tudo é feito como diz Artem. Você deve dar uma olhada antes de perguntar.