Auto-aprendizagem da linguagem MQL5 a partir do zero - página 73

 
Vasiliy Sokolov:

Eu acrescentei algumas funções. Eu tenho um código como este:

Eu ainda não entendo como trabalhar com um MA. Não faz sentido em redes. Em qualquer caso, você pode remover facilmente esta verificação, pois ela é feita apenas em uma função.

Obrigado, Vasiliy, pelas informações interessantes. Dizem que a repetição é a mãe do aprendizado! Desta vez parece ser sobre mim... :-)

Anexei o robô - variantes de arrasto - pelo nome, é intuitivo, quando você digita o código EXPA está tudo descrito, mas no MT4. Eu mesmo agora negocio na MT4 e preciso deles para negociar. Estes robôs na base de código são de Yuriy Dzyuban, meu muito obrigado a ele. (A propósito - o tópico - robôs similares para MT5)

opções de robôs de arrasto



Você escreve um bilhete e parâmetros de variáveis externas da rede de arrasto apropriada, coloca-o em um gráfico e segue o lucro!!!

Aqui está um exemplo de uma rede de arrasto MA:

extern   int      iTicket;             // уникальный номер (тикет) открытой позиции
extern   int      iTmfrm;              // период графика, на котором строится МА (1, 5, 15, 30, 60, 240, 1440, 10080, 43200)
extern   int      iMAPeriod = 21;      // период МА (не меньше 2)
extern   int      iMAShift = 0;        // сдвиг индикатора относительно ценового графика
extern   int      iMAMethod = 0;       // метод усреднения (0 - MODE_SMA, 1 - MODE_EMA, 2 - MODE_SMMA, 3 - MODE_LWMA);
extern   int      iApplPrice = 0;      // используемая цена (0 - PRICE_CLOSE, 1 - PRICE_OPEN, 2 - PRICE_HIGH, 3 - PRICE_LOW, 4 - PRICE_MEDIAN, 5 - PRICE_TYPICAL, 6 - PRICE_WEIGHTED)
extern   int      iShift = 1;          // индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад)
extern   int      iIndent = 3;         // отступ от МА, на котором размещается стоплосс
Arquivos anexados:
 

Bom dia e bom humor para todos!

Eu continuo estudando a linguagem de programação MQL5. Escrevi o código do meu Conselheiro Especialista com uma parada de rastreamento. No início fiquei muito feliz em testá-lo, mas acabou sendo muito cedo. A questão é que a EA não funciona de forma estável e eu não entendo do que se trata.

A essência do problema: estou administrando o Expert Advisor sobre dados históricos desde 6 de janeiro de 2020. Nos primeiros dias, o Expert Advisor trabalha exatamente de acordo com o algoritmo, mas assim que os testes chegam a 13 de janeiro de 2020, o algoritmo não é executado. Descobri que todo o problema está na função de perda do trailing stop. A única coisa que eu não consigo entender é como isso pode ocorrer - às vezes a rede de arrasto funciona e às vezes não? Estou tentando descobrir onde estraguei tudo.

Ainda não irei definir o código da função de arrasto, porque quero resolver o problema eu mesmo.

Cumprimentos, Vladimir.

 
MrBrooklin:

Bom dia e bom humor para todos!

Eu continuo estudando a linguagem de programação MQL5. Escrevi o código do meu Conselheiro Especialista com uma parada de rastreamento. No início fiquei muito feliz em testá-lo, mas acabou sendo muito cedo. A questão é que a EA não funciona de forma estável e eu não entendo do que se trata.

A essência do problema: estou administrando o Expert Advisor sobre dados históricos desde 6 de janeiro de 2020. Nos primeiros dias, o Expert Advisor trabalha exatamente de acordo com o algoritmo, mas assim que os testes chegam a 13 de janeiro de 2020, o algoritmo não é executado. Descobri que todo o problema é causado pela função de perda do trailing stop. A única coisa que eu não consigo entender é como isso pode ocorrer - às vezes a rede de arrasto funciona e às vezes não? Estou tentando descobrir onde estraguei tudo.

Ainda não irei definir o código da função de arrasto, porque quero resolver o problema eu mesmo.

Atenciosamente, Vladimir.

Você pode usar logs e alertas. E no mínimo, registre cada espirro no arquivo))))

 
Valeriy Yastremskiy:

Um livro de bordo e um alerta para ajudar. E no mínimo um registro no arquivo de cada espirro))))

Olá Valery! Obrigado pela dica. Deu uma olhada no diário de bordo no dia em que a rede de arrasto não está funcionando corretamente:

10016

TRADE_RETCODE_INVALID_STOPS

Paradas incorretas na solicitação


No entanto, mesmo no dia em que a rede de arrasto para a perda funciona bem, aparece exatamente o mesmo código de retorno do servidor comercial. Uma ambigüidade.

Cumprimentos, Vladimir.

 
MrBrooklin:

Olá Valery! Obrigado pela dica. Deu uma olhada no diário de bordo no dia em que a rede de arrasto não está funcionando corretamente:

10016

TRADE_RETCODE_INVALID_STOPS

Paradas incorretas no pedido.


Agora preciso entender como pode ser que em um dia de negociação as paradas no pedido estejam corretas, enquanto em outro dia de negociação elas estão erradas. Isto é um erro.

Atenciosamente, Vladimir.

A revista não escreve tudo. Então, você calculou a parada e a colocou. e pouco antes do pedido, o nível de congelamento mudou ao longo do caminho. Isso acontece.

O alerta é mais rápido e imediatamente visível, a impressão também é visível, mas há muitas mensagens do sistema.

 
Valeriy Yastremskiy:

O diário de bordo não escreve tudo. Então eles calcularam a parada, tiraram-na. e antes, pouco antes da ordem e do nível de congelamento serem tirados. de repente, na saída, mudaram. Isso acontece.

O alerta é mais rápido e imediatamente visível, a impressão também é visível, mas há muitas mensagens do sistema.

Valeri, qual é o nível de congelamento? Talvez deva ser prescrito no código de alguma forma?

Cumprimentos, Vladimir.

 
MrBrooklin:

Olá Valery! Obrigado pela dica. Deu uma olhada no diário de bordo no dia em que a rede de arrasto não está funcionando corretamente:

10016

TRADE_RETCODE_INVALID_STOPS

Paradas incorretas no pedido


No entanto, mesmo no dia em que a rede de arrasto para a perda funciona bem, aparece exatamente o mesmo código de retorno do servidor comercial. Uma ambigüidade.

Cumprimentos, Vladimir.

Olá! muito provavelmente o corretor mudou o nível de paradas, eparadas erradas em caso de trailing é quando a distância de trailing é menor queo nível de paradas permitido pelo corretor, simplesmente aumente ligeiramente a distância de trailing, a distância de trailing nãodeve ser menor que o nível de paradas, você pode encontrar esta informação na especificação de cada instrumento
 
VVT:
Olá! Muito provavelmente o corretor mudou o nível de parada.Paradas erradas em caso de trilha é quando a distância da trilha é menor do que a permitida pelonível de parada do corretor, você só precisa aumentar um pouco a distância da trilha, a distância da trilha nãodeve ser menor do que o nível de parada, esta informação você pode encontrar na especificação de cada instrumento

Olá! Obrigado pela dica. Honestamente, eu não sabia sobre isso. Vou tentar mudar isso.

Atenciosamente, Vladimir.

 
VVT:
Olá! O mais provável é que o corretor tenha mudado o nível de parada.Paradas erradas em caso deparada de trilha é quando a distância da trilha é menor do que a permitida pelo corretor, você só precisa aumentar um pouco a distância da trilha, a distância da trilha nãodeve ser menor do que o nível de paradas, esta informação você pode encontrar na especificação de cada instrumento

Tentei mudar a distância. Não funcionou. É a mesma coisa. Continuarei lendo sobre a perda do trailing stop e como lidar com o código.

Atenciosamente, Vladimir.

 
MrBrooklin:

Tentei mudar a distância. Não funcionou. É a mesma coisa. Continuarei lendo sobre a perda do trailing stop e como lidar com o código.

Atenciosamente, Vladimir.

Parada incorreta, é estranho. O que mais acontece durante a pesca de arrasto?

Razão: