Discussão sobre a implementação dos conselheiros. - página 6

 
Ivan_Invanov:
Olá. Você poderia me dizer qual é o sinal de entrada no mercado deste EA e onde ele está localizado no código?

Você conecta o módulo de sinais do indicador personalizado na linha

//--- available signals
#include <Expert\Signal\SignalMA.mqh>


e aquivocê pode verificaros sinais comerciais deste indicador


Há informações suficientes neste ponto e você precisa digeri-la. Também recomendo que você leia os seguintes artigos

Документация по MQL5: Стандартная библиотека / Модули стратегий / Модули торговых сигналов / Сигналы индикатора Moving Average
Документация по MQL5: Стандартная библиотека / Модули стратегий / Модули торговых сигналов / Сигналы индикатора Moving Average
  • www.mql5.com
Цена пересекла индикатор сверху вниз(цена Open анализируемого бара выше линии индикатора, а цена Close - ниже), но индикатор растет (слабый сигнал на отбой от линии индикатора). Цена пересекла индикатор нижней тенью (цены Open и Close анализируемого бара выше линии индикатора, а цена Low ниже) и индикатор растет (сигнал на отбой от линии...
 

Rapazes, aqui vai uma pergunta

Qual é a maneira correta de fazer uma restrição de otimização de parâmetros para que eles não subam um em cima do outro, há muitos excessos desnecessários.

input  int                Profit_Lev1        = 5;           // |     1-я фиксация прибыли 
sinput string _p1="";//---
input  int                Profit_Lev2        = 7;           // |     2-я фиксация прибыли 
sinput string _p2="";//---
input  int                Profit_Lev3        = 10;          // |     3-я фиксация прибыли


Temos 3 níveis de tomada de lucro, o primeiro não deve ser superior ao segundo e terceiro e o segundo não deve ser superior ao terceiro.

//+------------------------------------------------------------------+
//| Проверяет внешние параметры                                      |
//+------------------------------------------------------------------+
bool CheckInputParameters()
  {
     if(Profit_Lev1 >= Profit_Lev2  || Profit_Lev1 >= Profit_Lev3 || Profit_Lev2 >= Profit_Lev3)
       {
         Print(_Symbol,
               ": 1-й уровень профита ("+IntegerToString(Profit_Lev1)+") "
               "должен быть больше 2-го и 3-го уровня профита ("+IntegerToString(Profit_Lev2)+"   "+IntegerToString(Profit_Lev3)+")!");
         return(false);
        }                     
//--- Параметры корректны
   return(true);
  }

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  { 


//--- Проверим внешние параметры
   if(!CheckInputParameters())
      return(INIT_PARAMETERS_INCORRECT);


//--- Инициализаия прошла успешно
   return(INIT_SUCCEEDED);
  }


Começo a otimizar

O registro começa a receber muitos erros, talvez algo que restabeleça o robô


Mas o problema é que o robô é otimizado por 20 minutos e a otimização pára, embora se eu não especificar um limite e deixar as coisas seguirem seu curso, onde o primeiro pode ser mais alto que o segundo, então a otimização está totalmente operacional mais de um dia.

Não quero que eles vão um a um e não saltem um sobre o outro, porque existem algumas outras lógicas na forma de pontos e turnos no algoritmo para cada nível de TP.

 
Konstantin Seredkin:

Rapazes, aqui vai uma pergunta

Qual é a maneira correta de fazer uma restrição de otimização de parâmetros para que eles não subam um em cima do outro, demasiados excessos desnecessários.


Temos 3 níveis de tomada de lucro, 1º não deve ser superior a 2º e 3º e 2º não deve ser superior a 3º.

Introduzir não três "níveis de lucro", mas "nível base", "2º nível sobre nível base" e "3º nível sobre 2º nível".

É isso aí. Fazemos uma ultrapassagem total.

Se quisermos que os três níveis se encaixem em alguma faixa fixa, então introduzimos variáveis "largura de faixa" e dois "limites entre níveis", onde o primeiro limite é uma fração da faixa, e o segundo limite é uma fração da parte restante (após o primeiro limite) da faixa.

Eu o faria desta maneira...

 
Georgiy Merts:

Introduzir não três "níveis de lucro" mas "nível básico", "excedendo o segundo nível sobre o nível básico" e "excedendo o terceiro nível sobre o segundo nível".

É isso aí. Fazemos uma ultrapassagem total.

Se quisermos que os três níveis se encaixem em alguma faixa fixa, então introduzimos variáveis "largura de faixa" e dois "limites entre níveis", onde o primeiro limite é uma fração da faixa, e o segundo limite é uma fração da parte restante (após o primeiro limite) da faixa.

Eu o faria desta maneira...

Faz alguma diferença se eu verificar o primeiro nível com o segundo e o terceiro, ou se eu verificar o terceiro nível com o primeiro e o segundo, porque o significado é o mesmo.
 
Konstantin Seredkin:
Assim, a partir da mudança de lugares da soma será a diferença que eu verifico o primeiro nível com o segundo e o terceiro, que o terceiro nível com o primeiro e o segundo, o significado do mesmo.

Você tem parâmetros inválidos quando o primeiro nível é maior que o segundo, etc., e na versão proposta estas verificações desaparecerão, e todos os conjuntos estarão corretos.

 
Konstantin Seredkin:
Portanto, fará alguma diferença se eu verificar o primeiro nível com o segundo e terceiro, ou se eu verificar o terceiro nível com o primeiro e segundo, o significado é o mesmo.

A questão era mais ou menos como superar "nenhuma sobreposição". Se o primeiro nível for, por exemplo, 10% da faixa - não há como o segundo nível subir, pois ele é medido nos 90% restantes.

 
Georgiy Merts:

A questão era mais ou menos como superar "nenhuma sobreposição". Se o primeiro nível, por exemplo, for 10% da faixa - não há como o segundo nível subir até ele, pois é medido nos 90% restantes.

Eu ainda não entendo.

Não se trata apenas de variáveis estáticas, são variáveis externas nas quais eu estabeleço 3 que tiram proveito.


O comércio de robôs 3 lotes

em 100 pips eu quero fechar 1 lote = este é o primeiro nível de lucro

200 lotes a mais = segundo nível de lucro

300 lotes a mais = terceiro nível de lucro


Mas com o robô de primeiro nível, o Breakeven

No segundo nível, ele transfere esta parada para o primeiro nível de lucro.

Se não houvesse Breakeven, não importaria como o otimizador selecionaria esses níveis, mesmo se o primeiro nível fosse 300, o segundo 50 pontos e o terceiro 150

mas o método Breakeven precisa de uma ordem precisa, então eu não quero que o otimizador os escolha assim

300 50 150

50 300 150

etc.

Eu só quero que as coisas corram normalmente.

50 100 200

150 160 170

etc.

Verificação da exatidão dos parâmetros inseridos

//+------------------------------------------------------------------+
//| Проверяет внешние параметры                                      |
//+------------------------------------------------------------------+
bool CheckInputParameters()
  {
     if(Profit_Lev1 >= Profit_Lev2  || Profit_Lev1 >= Profit_Lev3 || Profit_Lev2 >= Profit_Lev3)
       {
         Print(_Symbol,
               ": 1-й уровень профита ("+IntegerToString(Profit_Lev1)+") "
               "должен быть больше 2-го и 3-го уровня профита ("+IntegerToString(Profit_Lev2)+"   "+IntegerToString(Profit_Lev3)+")!");
         return(false);
        }                     
//--- Параметры корректны
   return(true);
  }

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  { 


//--- Проверим внешние параметры
   if(!CheckInputParameters())
      return(INIT_PARAMETERS_INCORRECT);


//--- Инициализаия прошла успешно
   return(INIT_SUCCEEDED);
  }

Ao otimizar lá escreve que houve saltos em um monte de corridas, é bom que ele restabeleça os ajustes que não podem ser aplicados, mas o otimizador funciona por alguns minutos e depois desliga.

Acho que este cheque tem que ser jogado de outra forma.

O que você sugere não consigo entender sem um exemplo do que você está falando.

 
Konstantin Seredkin:

Eu ainda não entendo.

Não são apenas as variáveis estáticas, são as variáveis externas que eu estabeleço 3 que levam aos lucros


Robô está negociando 3 lotes

em 100 pips eu quero fechar 1 lote = este é o primeiro nível de lucro

200 lotes a mais = segundo nível de lucro

300 lotes a mais = terceiro nível de lucro


Mas com o robô de primeiro nível, o Breakeven

No segundo nível, ele transfere esta parada para o primeiro nível de lucro.

Se não houvesse Breakeven, não importaria como o otimizador selecionaria esses níveis, mesmo se o primeiro nível fosse 300, o segundo 50 pontos e o terceiro 150

mas o método Breakeven precisa de uma ordem precisa, então eu não quero que o otimizador os escolha assim

300 50 150

50 300 150

etc.

Eu só quero que as coisas corram normalmente.

50 100 200

150 160 170

etc.

Verificação da exatidão dos parâmetros inseridos

Ao otimizar lá escreve que houve saltos em um monte de corridas, é bom que ele restabeleça os ajustes que não podem ser aplicados, mas o otimizador funciona por alguns minutos e depois desliga.

Acho que este cheque tem que ser jogado de outra forma.

Não consigo entender o que você sugere sem um exemplo.

Na entrada, não estabeleça níveis, mas distâncias entre eles.

input uint firstLevel=20 ; // пунктов от цены до первого ТП

input uint secondDistance=30; // пунктов от первого ТП до второго

input uint thirdDistance=50; // пунктов от второго ТП до конечного

Então o otimizador fisicamente não será capaz de trocar níveis

 

Boa tarde, há alguns caras que instalaram remotamente uma EA no mt4, que automaticamente negocia, em uma máquina vm na nuvem de yandex. Se não me engano, poderei obter uma cópia do jogo em meu disco rígido e fazer com que ele funcione. Cp

P.s. Desculpe por minha linguagem obtusa, eu não entendo a terminologia e a essência dessas coisas.

 

Boa tarde!

Eu decidi escrever um EA. A este respeito, há necessidade de alterar os sinais que serão utilizados pela EA para abrir pedidos. Por exemplo, o indicador DeMarker - quero que meu consultor especializado abra pedidos somente quando este indicador cruzar 0,3 de baixo para cima (comprar) e 0,7 de cima para baixo (vender). Eu entendo corretamente que preciso corrigir o arquivo SignalDeMarker.mqh (as seções de código com os comentários "Votar" que o preço vai crescer. e "Votar" que o preço vai cair.)?

Razão: