[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 359
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
todos
Quero dizer normal
O que é normal?
Você o está expressando de uma maneira engraçada... Mostre-me o código que funcionará com carrapatos, posições abertas/fechadas sem função de início. O código de um EA completo sem a função strat?
Na verdade, a julgar pelo seu portfólio, não me cabe a mim explicar algo a você!) Deixe-me primeiro explicar minha compreensão da função de início(), e porque não gosto da idéia de organizar um ciclo nela. Acredito que a função start() é um procedimento, atribuído ao usuário (ou melhor, a seu programa - Expert) a partir do sistema de interrupção interna do programa terminal. E para fazer loop dentro desta interrupção ou para organizar lá o próprio sistema de interrupção - bem, provavelmente eu não posso fazer isso. Embora os especialistas da MQ escrevam em documentação, por favor - enquanto () loop in your hands, loop as you wish in start(). E quem nos impede de fazer loop init(), através do mesmo vaille loop, e ninguém nos empurra de fora! Todas as variáveis e constantes são acessíveis, todas as funções funcionam da mesma forma. Você quer obter uma cotação, com que periodicidade? Bem, aqui está uma amostra de código, com periodicidade de 5 segundos você receberá uma nova cotação, obtida do último tick e salva em Close [0] array:
//-------------------------------------------
int init()
{
bool end;
while(!end)
{
Sleep (5000);
Print ("Quote = ", Close[0]);
}
return(0);
}
//--------------------------------------------
int start() {return(0);}
//
int deinit() {return(0);}
//--------------------------------------------
No MT5, a propósito, os desenvolvedores já deram aos usuários algumas interrupções, pelas quais eu lhes agradeço humanamente! Não posso deixar de citar:
Na MQL5 vários tipos de eventos podem conter funções de manipulador pré-definidas
OnTick - recebimento de um novo tick;
OnTimer - evento do temporizador;
OnTrade é um evento comercial;
OnChartEvent - eventos de entrada do teclado e mouse, eventos de movimentação de objetos gráficos, evento de conclusão de edição de texto no campo de entrada do objeto LabelEdit;
OnBookEvent - evento de mudança de status de Profundidade de Mercado.
O que é normal?
para funcionar, o conversor padrão não funciona de forma alguma
Funciona para todos.
todos trabalham.
Na verdade, a julgar pelo seu portfólio, não me cabe a mim explicar algo a você!) Deixe-me primeiro explicar minha compreensão da função de início(), e porque não gosto da idéia de organizar um ciclo nela. Acredito que a função start() é um procedimento, atribuído ao usuário (ou melhor, a seu programa - Expert) a partir do sistema de interrupção interna do programa terminal. E para fazer loop dentro desta interrupção ou para organizar lá o próprio sistema de interrupção - bem, provavelmente eu não posso fazer isso. Embora os especialistas da MQ escrevam em documentação, por favor - enquanto () loop in your hands, loop as you wish in start(). E quem nos impede de fazer loop init(), através do mesmo vaille loop, e ninguém nos empurra de fora! Todas as variáveis e constantes são acessíveis, todas as funções funcionam da mesma forma. Você quer obter uma cotação, com que periodicidade? Bem, aqui está um código de amostra, com uma periodicidade de 5 segundos você receberá uma nova cotação, obtida do último tick e salva em Close [0] array:
Finalmente, leia sobre isso aqui. Somente funções com período de espera são iniciadas em Expert Advisor e roteiro. É estritamente proibido em todos os outros lugares.
Seu código não se enquadra nos padrões da MQL4. Além disso, foi escrito em algum lugar que o tempo de espera nas funções ininit e deinit durante uma chamada ao sistema é limitado a 2,5 segundos. Então, a função é terminada à força.
Especialistas, uma palavra de conselho! Como implementar isto na vida? Estou trabalhando com o indicador "Bandas de Bollinger", preciso ativar o limiar depois de cruzar a linha no meio.
1. Tudo de acordo com o padrão, se o preço for < a linha inferior, então Bay
2. Se > a linha superior, então Vender
Se o preço quebrasse a linha do meio, então o TrailingStop seria ativado
Pergunta de atenção! Como associar o limite da parada de arrasto com a linha do meio?
Especialistas, uma palavra de conselho! Como implementar isto na vida? Estou trabalhando com o indicador "Bandas de Bollinger", preciso ativar o limiar de disparo depois de cruzar a linha no meio.
1. Tudo de acordo com o padrão, se o preço for < a linha inferior, então Bay
2. Se > a linha superior, então Vender
Se o preço quebrasse a linha do meio, então o TrailingStop seria ativado
Pergunta de atenção! Como associar o limite da parada de arrasto com a linha do meio?
A primeira coisa que me veio à mente:
Se a linha inferior está em 20 e a linha superior está em 40, então a linha que está exatamente no meio entre elas, em que nível será localizada?
Tenho certeza de que você responderá rapidamente - no nível 30. E agora, esperemos, você poderá descobrir como calcular tudo isso. Embora... talvez você encontre outro método... :)
Especialistas, uma palavra de conselho! Como implementar isto na vida? Estou trabalhando com o indicador "Bandas de Bollinger", preciso ativar o limiar de disparo depois de cruzar a linha no meio.
1. Tudo de acordo com o padrão, se o preço for < a linha inferior, então Bay
2. Se > a linha superior, então Vender
Se o preço quebrasse a linha do meio, então o TrailingStop seria ativado
Pergunta de atenção! Como eu defino o limite da parada de arrasto para a linha central?
1. "Tudo de acordo com o padrão, se o preço chegou < à linha de fundo, então Uau" - sim, e se chegou mais alto, então compre o depósito... :-))) Aprenda um pouco de alfabetização para começar - Bay - que por enquanto é da Aglitsky... De alguma forma, tenho certeza de que não é um erro de impressão...
2. Você tem por Bollinger - você tem acesso direto aos seus limites superior e inferior...ou melhor, aos seus valores... obter esses valores.
"Se a linha inferior estiver em 20 e a linha superior em 40, a linha que está exatamente a meio caminho entre elas, em que nível será localizada?" -
como as pessoas já lhe recomendaram...
Some estes valores e os divida por dois - como resultado, você tem a linha do meio deste indicador - este é o valor e tricotar o limite para ligar a rede de arrasto.
P.S. Artem, desculpe por "corrigir" o início de sua resposta - gostei muito ... e depois de meu comentário sobre esta pergunta - eu precisava terminar este "limiar de parada para a linha do meio ".