Abertura, fechamento em Expert Advisor gerado pela MQL5 Wizard - página 2

 
PeretsCHILI:

Eu decidi sobre a redação do problema:

aberto longo: MA rápido atravessa MA lento de baixo para cima, mais filtro de tempo

fechar longo: rápido МА intercepta MA lento de cima para baixo

Abrir curto: rápido МА interseciona MA lento de cima e filtro de tempo

Calções de fechamento: rápido МА interseciona MA lento de baixo para cima.

No exemplo anteriormente mencionado, CheckOpenLong, CheckCloseLong, CheckOpenShort, CheckCloseShort foram usados para isto respectivamente.

Se você fizer dois módulos, um com sinais para abertura e outro para fechamento, entendo que o primeiro usaria LongCondition e ShortCondition, como na biblioteca de módulos padrão. O que usar no segundo módulo para fechar?


E o mais importante: onde? O que significa "... cruzes ..."? Essa é a beleza da coisa :)

 

Cara, só estou mais confuso)) O artigo"Criar um robô comercial em 6 etapas" acabou de apresentar o primeiro módulo com sinais para abrir, cruzando dois MAs.

https://www.mql5.com/ru/articles/367

O que você quer dizer com "crossover"? Quando a diferença entre o FastMA-SlowMA na primeira barra é maior que zero e aquela na segunda barra é menor que zero, o rápido МА cruza o lento MA de baixo para cima. De cima para baixo é quando a diferença do FastMA-SlowMA na primeira barra é menor que zero e maior que zero na segunda barra.

Você disse que o problema pode ser resolvido criando dois módulos com sinais de abertura e fechamento. Posso usar o módulo do artigo como base para a criação de um módulo com sinais de fechamento?

Создай торгового робота за 6 шагов!
Создай торгового робота за 6 шагов!
  • 2012.06.01
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы не знаете, как устроены торговые классы, и пугаетесь слов "Объектно-ориентированное программирование"? На самом деле вовсе не обязательно всё это знать, чтобы написать свой собственный модуль торговых сигналов - достаточно следовать простым правилам. Всё остальное сделает Мастер MQL5, и вы получите готовый торговый робот!
 
PeretsCHILI:

...

O que significa "cruzes"? Um MA rápido cruza um MA lento de baixo para cima é quando a diferença entre o FastMA-SlowMA na primeira barra é maior que zero e menor que zero na segunda barra. De cima para baixo é quando a primeira barra é inferior a zero e a segunda barra é maior que zero.

...


Isso é bom. Quando a tarefa é especificada, é muito boa.


PeretsCHILI:

...

Você disse que o problema pode ser resolvido criando dois módulos com sinais abertos e fechados. O módulo com sinais para fechar pode ser usado como base para o módulo do artigo acima?

Eu não quis dizer isso corretamente. O módulo de sinais comerciais produz sinais "It's time to OPEN BUY" e "It's time to OPEN SELL". Isto é, eles dão um sinal para OPEN. E o resto cabe à CExpert decidir: fechar e reverter uma posição existente ou abrir uma posição.



Pegue o módulo do artigoCrie um robô comercial em 6 passos!- Qual é o seu problema?

 

Portanto, quero escrever um módulo com sinais de abertura cruzando dois MAs com um filtro de tempo, e o fechamento ocorreu nos seguintes casos: chegada do sinal oposto; chegada do SL; chegada do TP. Você pode escrever um módulo (vamos chamá-lo Cross2MA) conforme o artigo e gerar um Expert Advisor com os módulos Cross2MA e SignalITF, mas isto não funcionará, porque o filtro SignalITF também será verificado ao fechar.

Por exemplo: temos o 2MA e o SignalITF tem um comércio somente às segundas-feiras. Um sinal Buy é recebido na segunda-feira e uma posição Buy é aberta; quando o tempo expira na terça-feira, quando nem Sl nem TP são alcançados, ocorre uma cruz inversa do 2MA e a posição Buy deve ser fechada mas não está fechada porque é o dia seguinte da semana.

Como deve ser: as mesmas condições, 2MA, comércio às segundas-feiras: segunda-feira, há um sinal de Compra, abrimos uma posição de Compra, na terça-feira recebemos um sinal de Venda, mas como é terça-feira, não abrimos uma posição de Venda, apenas fechamos uma posição de Compra.

Parece haver dois comandos em LongCondition: abrir Comprar e fechar Vender. Precisamos separá-los de alguma forma)

 

"As moscas se separam, as costeletas se separam".


PeretsCHILI:

Portanto, quero escrever um módulo com sinais para abrir atravessando dois MAs com um filtro de tempo, e fechar nos seguintes casos: chegada de sinal oposto; chegada de SL; chegada de TP. ...

Omódulo de sinais comerciais só pode exibir dois tipos de sinais: "É hora de abrir COMPRAR" e "É hora de abrir VENDER".

Não controlaremos o stop loss e o take profit - já que se um stop loss ou take profit é fechado, isto significa apenas uma coisa: a posição é fechada, e é hora de ver o que o módulo de trading signals gera (em outras palavras, quando o número de posições é zero, iniciamos um círculo: esperando por um sinal).

Além disso: isto é uma má interpretação do funcionamento dos módulos, já que não há "sinal oposto" - pode ser como segue:

  1. temos uma posição de COMPRA aberta e recebemos um sinal de"PAGUE PARA ABRIR VENDA".
  2. ou ter uma posição de VENDA aberta e o sinal"PAY to BUY" aparece
Em ambos os casos, a posição atual será fechada e uma nova posição será aberta.


 
Andy:
LongCondition pode simplesmente abrir uma compra e segurá-la independentemente de qualquer condição, e tê-la fechada com lucro cessante ou manualmente?

A classe LongCondition CExpertSignal não pode, em princípio, "segurar" nada. CExpertSignal dá apenas dois sinais:"Time to OPEN BUY" e "Time to OPEN SELL".


Você quer que seu Expert Advisor construído pelo mago nunca feche? Em seguida, alterar o parâmetro de entrada do Expert Advisor "// Valor limiar de sinal para fechar [0...100]" - definir a barra de escalas para fechar em "100".

 
Andy:
O que as fecha então?

Objeto de classe CExpert - ele pesquisa todos os módulos de sinal, avalia seus pesos e resume a pontuação resultante: peso do sinal




 

Eu entendo a interpretação dos módulos. Tudo isso porque vou otimizar meu consultor especializado da seguinte forma: 1. otimização de dois MA (período, turno, suavização), paradas e takeaways por zero; 2. 3. otimização de trilhas.

O problema é o seguinte: se eu gerar um Expert Advisor com Cross2MA e filtro SignalITF ele funcionará assim (mesmas condições, zero paradas e takeaways):

Segunda-feira, FastMA cruza SlowMA de baixo para cima, abre posição de compra, posição é mantida até a próxima segunda-feira, na próxima segunda-feira pode haver 3 variantes:

1. FastMA cruza SlowMA de cima para baixo - a posição atual é fechada, a posição de venda é aberta.

2. Não são observados crossovers - a posição é mantida.

3. FastMA intercepta SlowMA de baixo para cima - a posição é mantida.

E assim por diante, até a próxima segunda-feira. Muitas coisas podem acontecer entre as segundas-feiras, 2 MAs podem ser cruzados várias vezes e o preço vai cair.

Podemos implementar o seguinte (mesmas condições): Na terça-feira, o FastMA cruza o SlowMA de cima para baixo e a posição Sell não é aberta porque é terça-feira e não segunda-feira, mas a posição atual está fechada.

 

Acho que descobri como fazer isso, aplicando o limiar.

Deixe Cross2MA devolver 80 e SignalITF devolver 40.

Limiar para abrir, colocamos 50, limiar para fechar, colocamos 30.

Se ambos os módulos fornecerem um sinal, a média aritmética retornará 60 que é maior que o limite de 50, então a posição é aberta.

Se apenas o Cross2MA dispara, a média aritmética é 40, maior que 30, a posição atual é fechada; se for inferior a 50, uma nova posição não é aberta.

Certo?

Exceto SignalITF retorna o valor vazio_.

 
PeretsCHILI:

Acho que descobri como fazer isso, aplicando o limiar.

Deixe Cross2MA devolver 80 e SignalITF devolver 40.

Limiar para abrir, colocamos 50, limiar para fechar, colocamos 30.

Se ambos os módulos fornecerem um sinal, a média aritmética retornará 60 que é maior que o limite de 50, então a posição é aberta.

Se apenas o Cross2MA dispara, a média aritmética é 40, maior que 30, a posição atual é fechada; se for inferior a 50, uma nova posição não é aberta.

Certo?

Exceto SignalITF retorna o valor vazio_.


Você está indo na direção certa :) Todos os controles para abertura e fechamento de limiares são através dos parâmetros de entrada do Expert Advisor gerado pelo MQL5 Wizard.