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

 
SanAlex:

Parte 3.


Seus escorregões são uma tonelada de mauvais aqui. Embrulhe tudo em um anexo
 
MrBrooklin:

Sim, Alexey, eu já vi este código. Está na forma de um arquivo de inclusão. Para ser honesto, eu não encontrei nada sobre o símbolo nele, embora tenha olhado através dele várias vezes. Talvez eu tenha entendido mal alguma coisa ou esteja apenas procurando mal.

Atenciosamente, Vladimir.


Responderei à noite. Estou usando a biblioteca de redes de arrasto e seus tipos fornecida por Yury Dzyuban sem qualquer problema na comercialização de robôs e ainda a utilizo no MT4.
As aproximações lá são as mesmas que no MT5.
 
Aleksey Masterov:

Seus slipshods aqui são uma tonelada de mauvais. Embrulhe-o em um anexo

Aprendi uma nova palavra para mim mesmo - mauvais ton.

(Maus modos; comportamento, modos e conduta considerados inadequados, indecentes, inaceitáveis em uma dada sociedade; maus, mal-educados)



 
SanAlex:

Aprendi uma nova palavra para mim mesmo - cobiça

("más maneiras"; comportamento, maneiras e ações consideradas inadequadas, indecentes, inaceitáveis em uma dada sociedade; más, mal-educadas).




Seus deslizes não interessam a ninguém aqui. É costume afixá-lo como um anexo, se você afixá-lo desta forma não significa que mais pessoas se incomodarão em lê-lo...

Ela interfere na leitura do fio e na resposta à pergunta.
 
Aleksey Masterov:

Ninguém aqui está interessado em seus rabiscos. É costume afixá-los como um anexo, se o fizer, não significa que mais pessoas queiram lê-los...

Ela interfere na leitura da linha e na resposta ao assunto.

Eu não vou atrapalhar - comunique-se!

------------------------------------

embora você pudesse ter pegado algo naqueles farrapos.

 
Fast235:

i iguala o número de posições abertas, tantos ciclos serão com impressão

você precisa remover o sinal "=" no porque você precisa passar pelo laço quando o número de posições abertas é 0. nesta chamada zero a segunda impressão saiu

Olá! Muito obrigado! Agora eu não entendo porque eu pensava que o ciclo começa com "0" ao invés de "1". Para resumir uma longa história, eu deveria parar de estudar à noite, como costumava fazer na minha juventude.

Cumprimentos, Vladimir.

 
Aleksey Masterov:

Responderei à noite. Com a biblioteca de redes de arrasto e seus tipos do Yu. Dzyuban, que trabalha em robôs de combate sem nenhuma pergunta e que eu uso no momento no MT4.
As abordagens são as mesmas que na MT5.

Olá Aleksey! Serei muito grato por qualquer ajuda.

Atenciosamente, Vladimir.

 
MrBrooklin:

Assim, com base na literatura que li, escrevi um pequeno algoritmo para criar um Expert Advisor com a função trailing stop:

  1. Vamos criar um Expert Advisor para automatizar o trabalho de rastreamento (tracking) do nível Stop Loss de uma posição aberta com especificado Take Profit eStop Níveis de Loss. E qual é a diferença se os níveis de Take Profit e Stop Loss já estão definidos para a posição ou não? Se o nível de parada não for especificado, ele será definido pelo Consultor Especialista; se for, ele será alterado para um novo nível de acordo com o algoritmo. O Conselheiro Especialista ficará indiferente ao nível de lucro do cargo.
  2. No Expert Advisor, criar um bloco de parâmetros de entrada com dois parâmetros: definir "Trailing Stop Level" e definir "Trailing Step". Na verdade, estamos falando de dois algoritmos em um: o primeiro move a parada para o Breakeven, o segundo a leva mais longe ao longo do movimento. Na zona negativa, a parada não é de rastos.
  3. Quando novas citações chegam, nós as processamos usando OnTick( ). O trailing funciona somente quando um novo tick vem para o símbolo atual.
  4. Vamos criar e executar um loop para pesquisar todas as posições.
  5. Se de repente não encontrarmos posições abertas, voltamos ao laço
  6. Vamos refrescar as citações. Não há necessidade de atualizar nada. O ambiente comercial é atualizado automaticamente. Só precisamos solicitar os dados no momento do evento OnTick.
  7. Se houveruma posição aberta, nós continuamos. Por que todos esses detalhes do ponto 4 ao ponto 7? Em vez disso, devemos escrever de forma simples: Para cada posição de Compra definimos... e depois a partir do ponto 9
  8. Determine o tipo de uma posição aberta: Comprar ou Vender.
  9. Se a posição for Comprar, definimos onde o preço atual está localizado relativamente ao preço da posição aberta.
  10. Se o preço atual for maior que o preço da posição aberta, verificamos seu nível.
  11. Se o preço atual tiver atingido o nível de resistência especificado nos parâmetros de entrada, movemos Stop Loss para o nível sem a perda igual ao preço de abertura da posiçãoBuy. Caso contrário, não fazemos nada.
  12. Se o preço atual tiver excedido o nível Trailing Stop pelo valor igual ao nívelTrailing Stop, oStop Perda é movido do nível de preço de abertura da posição Comprar pelo valor igual ao nível Trailing Stop e assim por diante até o preço atingir o nível Take Profit especificado para esta posição .
  13. Se o preço gira e atinge o nível deStop Perdajá movida , a posição é fechada .
  14. [Uma descrição similar segue para uma posição de Venda].
  15. Se a posição Vender é aberta, definimos onde o preço atual é relativo ao preço da posição aberta.
  16. Se o preço atual for inferior ao preço da posição aberta, verificamos em que nível ele caiu.
  17. Se o preço atual tiver atingido o nível de resistência especificado nos parâmetros de entrada, movemos o Stop Loss para o nível sem perdas igual ao preço de abertura da posição Sell. Caso contrário, não fazemos nada.
  18. Se o preço atual tiver excedido o nível Trailing Stop Loss pelo valor igual ao nível Trailing Stop Loss, o Stop Loss será movido do nível da posição de abertura Sell pelo valor igual ao nível Trailing Stop e assim por diante até o preço atingir o nível Take Profit especificado para aquela posição.
  19. Se o preço gira e atinge o nível de Stop Loss já movido, a posição é fechada.


Eu fiz algumas correções

 
Aqui está uma versão simplificada da descrição do trilho:
  1. Os trailing stops são processados quando um novo tick é recebido, na função OnTick.
  2. Uma parada de trilha consiste em duas partes consecutivas:
  3. Parte 1. Para cada posição aberta, o preço é calculado, e quando é alcançado, seu stop-loss é movido para o Breakeven.
  4. Parte 2. Após o stop loss ter sido movido para o breakeven, o algoritmo de stop pull seguindo o preço é ativado para a posição ativa.

Não descreverei em detalhes os algoritmos de transferência de parada para as partes um e dois. Você já os descreveu corretamente em geral. Se você os descreve, deve seguir ainda mais o padrão:

Parte 1. Equilíbrio:
  • Para compra;
  • Para Venda;
Parte 2. Puxando a parada:
  • Para comprar; Para vender;
  • Para venda;
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
MrBrooklin:

Olá Alexey, eu ficaria muito grato por qualquer ajuda que você possa me dar.

Cumprimentos, Vladimir.

Você tem dois erros principais na descrição de seu TOR:

1. Você está entrando demais em detalhes de baixo nível. Por que, por exemplo, escrever (incorretamente, a propósito) "você deve voltar ao laço se nenhuma posição for encontrada". Se não houver posições, não haverá nada para processar. Você não precisa voltar ao loop, basta sair e esperar por um novo tick, talvez algo apareça lá, talvez não. Você não precisa descrever casos de "e se não...". - Há um número infinito de casos assim, não é possível descrevê-los todos. Ao invés disso, concentre-se nos "e se".

2. O TOR mostra claramente um desejo de consistência. Não faça isso. Passar do geral ao específico:"Preciso de uma parada que a) se transfira para o Breakeven, e b) quando é transferida para o Breakeven, é puxada para cima por arrasto. As regras de transferência para o Breakeven e de puxar para cima a parada, anexadas abaixo..." . - Garanto a você que qualquer programador autônomo entenderia tais TOR, e para ele, o programador, tais TOR serão muito mais fáceis e claros do que lidar com loops, que voltam a si mesmos, se não houver posição, etc.

Razão: