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.
("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.
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.
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.
Assim, com base na literatura que li, escrevi um pequeno algoritmo para criar um Expert Advisor com a função trailing stop:
Vamos criar um Expert Advisor para automatizar o trabalho de rastreamento (tracking) do nível Stop Loss de uma posição aberta com já especificado Take Profit eStopNí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.
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.
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.
Vamos criar e executar um loop para pesquisar todas as posições.
Se de repente não encontrarmos posições abertas, voltamos ao laço
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.
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
Determine o tipo de uma posição aberta: Comprarou Vender.
Se a posição for Comprar, definimos onde o preço atual está localizado relativamente ao preço da posição aberta.
Se o preço atual for maior que o preço da posição aberta, verificamos seu nível.
Se o preço atual tiver atingido o nível de resistência especificado nos parâmetros de entrada, movemos StopLosspara o nível sem a perda igual ao preço de abertura da posiçãoBuy. Caso contrário, não fazemos nada.
Se o preço atual tiver excedido o nível Trailing Stop pelo valor igual ao nívelTrailing Stop, oStopPerda é movido do nível de preço de abertura da posição Comprarpelo 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 .
Se o preço gira e atinge o nível deStopPerdajá movida , a posição é fechada .
[Uma descrição similar segue para uma posição de Venda].
Se a posição Vender é aberta, definimos onde o preço atual é relativo ao preço da posição aberta.
Se o preço atual for inferior ao preço da posição aberta, verificamos em que nível ele caiu.
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.
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.
Se o preço gira e atinge o nível de Stop Loss já movido, a posição é fechada.
Aqui está uma versão simplificada da descrição do trilho:
Os trailing stops são processados quando um novo tick é recebido, na função OnTick.
Uma parada de trilha consiste em duas partes consecutivas:
Parte 1. Para cada posição aberta, o preço é calculado, e quando é alcançado, seu stop-loss é movido para o Breakeven.
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:
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
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 quea) 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.
Parte 3.
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.
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)
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).
Eu não vou atrapalhar - comunique-se!
------------------------------------
embora você pudesse ter pegado algo naqueles farrapos.
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 saiuOlá! 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.
Olá Aleksey! Serei muito grato por qualquer ajuda.
Atenciosamente, Vladimir.
Assim, com base na literatura que li, escrevi um pequeno algoritmo para criar um Expert Advisor com a função trailing stop:
Eu fiz algumas correções
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: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.