Especialistas: 5_8 MACross - página 3

 
Shara1:

Olá, Vladimir. É possível fazer compras e vendas separadamente em seu Expert Advisor e distribuir por tendência?

Obrigado.

Ainda não platinei as edições desse código.

 
Vladimir Karputov:

Ainda não platinei as edições desse código.

Vladimir, por favor, me dê uma dica. Após a execução no testador, no relatório, por algum motivo, os parâmetros estão invertidos: mafastperiod-42 e maslowperiod-12. De fato, o rápido deveria ser menor que o lento. Executei-o duas vezes e, em ambas, obtive esses resultados.

Obrigado.

 
Shara1:

Vladimir, por favor, me dê uma dica. Após a execução no testador, no relatório, por algum motivo, os parâmetros estão invertidos: mafastperiod-42 e maslowperiod-12. De fato, o rápido deveria ser menor que o lento. Executei o teste duas vezes e, em ambas, obtive esses resultados.

Obrigado.

"Rápido", "lento" - esses são apenas rótulos, rotulagem verbal de um parâmetro. Mas, no final das contas, todos os parâmetros são números. E como você ativa a otimização genética e pesquisa entre milhares de resultados, não é possível descartar essas inversões de consciência :). Um dígito pode ser qualquer coisa, não importa como você o chame - "lento" ou "rápido".

Às vezes, coloco uma restrição especial, como "lento" não pode ser maior ou igual a "rápido", e às vezes não a coloco e acabo obtendo resultados interessantes.

 
Vladimir Karputov:

"rápido", "lento" - tudo isso são apenas rótulos, uma rotulagem verbal de um parâmetro. Mas, no final, todos os parâmetros são números. E como você ativa a otimização genética e pesquisa entre milhares de resultados, essas inversões de consciência não estão excluídas :). Um número pode ser qualquer número, não importa como você o chame - "lento" ou "rápido".

Às vezes, coloco uma proibição, como "lento" não pode ser maior ou igual a "rápido", e às vezes não a coloco e obtenho resultados interessantes.

Como posso definir essa proibição nesse EA?

Muito obrigado.

 
Shara1:

E como colocar essa proibição nesse EA?

Obrigado.

Em OnInit(), escreva uma comparação de dois parâmetros. Se a condição não for atendida, então descarregue o EA com um erro.

 
Vladimir Karputov:

Em OnInit(), escreva a comparação de dois parâmetros. Se a condição não for atendida, descarregue o EA com um erro.

Obrigado.

Para mim, isso não é viável no momento. Você não está planejando editar esse código?

 
Vladimir, por favor, diga-me que nesse seu EA:https://www.mql5.com/pt/code/19578 há uma proibição do tipo "lento" não pode ser maior ou igual a "rápido". Se não houver, forneça um link para que eu possa ver isso.
ma-shift Puria method
ma-shift Puria method
  • votos: 14
  • 2017.12.13
  • Vladimir Karputov
  • www.mql5.com
В основу советника положен метод Пуриа с небольшими вольностями. Используется сигнал не пересечения быстрой MA медленной, а их движение в одну сторону, подтверждение при пересечении MACD своей нулевой линии и крутизной движения быстрой MA, выраженной в количестве пипсов на тик (параметр Shift (vertically) between MA Fast and MA Slow). Обычный...
 
Shara1:
Vladimir, por favor, diga-me que nesse seu EA:https://www.mql5.com/pt/code/19578 há uma proibição do tipo "lento" não pode ser maior ou igual a "rápido". Se não houver, forneça um link para que eu possa ver isso.

Esse EA tem essa proteção:

//+------------------------------------------------------------------+
//| Função de inicialização de especialista|
//+------------------------------------------------------------------+
int OnInit()
  {
   if(InpTrailingStop>0 && InpFractalTrailing)
     {
      Print("If we use \"Fractal trailing\" - we do not use \"Trailing stop\"!");
      Print("If we use \"Trailing stop\" - we do not use fractal \"Fractal trailing\"!");
      return(INIT_PARAMETERS_INCORRECT);
     }

aqui ele verifica o parâmetro para ver se ele é maior que zero e há um sinalizador.

 

Porém, no código EMA Cross Contest Hedged, já existe a proteção de dois períodos de média de dois indicadores de média móvel:

   if(InpShort_ma_period>=InpLong_ma_period)
     {
      Print("\"MA short: averaging period\" can not be greater and equal to \"MA long: averaging period\"");
      return(INIT_PARAMETERS_INCORRECT);
     }
 
Vladimir Karputov:

Porém, no código EMA Cross Contest Hedged, já existe a proteção de dois períodos de média de dois indicadores de média móvel:

Ou seja, preciso que após esta linha - int OnInit()

Inserir isso -

 if(InpShort_ma_period>=InpLong_ma_period)
     {
      Print("\"MA short: averaging period\" can not be greater and equal to \"MA long: averaging period\"");
      return(INIT_PARAMETERS_INCORRECT);
     }

A aparência será a seguinte

//+------------------------------------------------------------------+
//| Função de inicialização de especialista|
//+------------------------------------------------------------------+
int OnInit()
  {
 if(InpShort_ma_period>=InpLong_ma_period)
     {
      Print("\"MA short: averaging period\" can not be greater and equal to \"MA long: averaging period\"");
      return(INIT_PARAMETERS_INCORRECT);
     }

Obrigado.