[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

 
sergeev:
todos
Refiro-me aos normais.
 
drm1:
Quero dizer normal

O que é normal?
 
Zhunko:
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.


 
Vinin:

O que é normal?
para funcionar, o conversor padrão não funciona de forma alguma
 
drm1:
para funcionar, o conversor padrão não funciona de forma alguma

Funciona para todos.
 
sergeev:

todos trabalham.
É bom que todos estejam trabalhando, então eu sou lento.
 
Grein:

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:

//-------------------------------------------
int init()
{
bool end;
while(!end)
{
Sleep (5000);
Print ("Котировка = ", Close[0]);
}
return(0);
}
//--------------------------------------------
int start() {return(0);}
//--------------------------------------------
int deinit() {return(0);}
//--------------------------------------------

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?

 
Top2n:

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... :)

 
Top2n:

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 ".