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

 
VVT:

Espere, você tem um limite de tempo para negociar lá... A hora do arrasto não cai sob essas restrições? embora não, parada errada, estranha

Meu Expert Advisor está programado para funcionar das 09:00:00 às 09:01:00, horário de Moscou, apenas para abrir uma posição. Sem problemas com a abertura de posição. O Expert Advisor foi instalado em uma conta de demonstração na plataforma de negociação PSB-Forex.

Decidi colocar o Expert Advisor na minha conta demo no terminal MetaQuote MT5. Tudo tem funcionado como deveria, mas o código de retorno do servidor 10016 ainda permanece. Muito interessante! Vou tentar analisar o assunto.

Atenciosamente, Vladimir.

 
MrBrooklin:

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

Cumprimentos, Vladimir.

A distância de congelamento, mais corretamente, é a distância de uma ordem/posição de mercado na qual não é permitida a execução de ordens. As paradas não podem ser colocadas nesta área. Use sua parada estimada como Parâmetro e você terá a parada necessária na saída. O código é para 4k. A lógica é a mesma em 5. O parâmetro MarketInfo parece ser o mesmo.

int New_Stop(int Parametr)                      // Проверка стоп-прик.
  {
   int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// Миним. дистанция
   if (Parametr < Min_Dist)                     // Если меньше допуст.
     {
      Parametr=Min_Dist;                        // Установим допуст.
      Alert("Увеличена дистанция стоп-приказа.");
     }
   return(Parametr);                            // Возврат значения
  }
//-------------------------------------------------------------- 12 -- 

Para 5

NÍVEL_SÍMBOLO_COMÉRCIO_FREEZE

Operações comerciais distância de congelamento (em pontos)

int



Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Для получения текущей рыночной информации служат функции SymbolInfoInteger(), SymbolInfoDouble() и SymbolInfoString(). В качестве второго параметра этих функций допустимо передавать один из идентификаторов из перечислений ENUM_SYMBOL_INFO_INTEGER, ENUM_SYMBOL_INFO_DOUBLE и ENUM_SYMBOL_INFO_STRING соответственно. Некоторые символы (как правило...
 
Valeriy Yastremskiy:

A distância de congelamento é correta, a distância da ordem/posição de mercado na qual as ordens não podem ser executadas. As paradas não podem ser colocadas nesta área. Use sua parada estimada como Parâmetro, e você terá a parada desejada na saída. O código é para 4k. A lógica é a mesma em 5. Os parâmetros do MarketInfo parecem ser os mesmos.

Obrigado, Valeriy! Continuarei a melhorar o código do Consultor Especialista.

Cumprimentos a Vladimir.

 
MrBrooklin:

Obrigado, Valery! Continuarei a entender e a melhorar o código do Expert Advisor.

Atenciosamente, Vladimir.

Por favor, envie-me a função de parada de cálculo e modificação de posição. O código é longo, não muito tempo)))))

 
Valeriy Yastremskiy:

Por favor, carregue aqui a função de cálculo de parada e modificação de posição. O código é longo, não muito tempo)))))

Valery, não há nenhuma função para calcular a parada porque ela está definida nos parâmetros de entrada como esta:

input ushort SL=200; //Стоп-лосс

e no código para a posição Comprar, a seguinte linha é prescrita:

request.sl=NormalizeDouble(price-SL*point,digits);

Obrigado, Valery, mas eu mesmo quero lidar com a modificação do stop loss. Eu mesmo já tenho informações suficientes para melhorar o Expert Advisor.

Cumprimentos, Vladimir.

 
MrBrooklin:

Valery, não há nenhuma função para calcular a parada, pois ela é definida nos parâmetros de entrada como este:

e no código para a posição Comprar a seguinte linha é prescrita:

Obrigado, Valery, mas eu mesmo quero lidar com a modificação do stop loss. Eu mesmo já tenho informações suficientes para melhorar o Expert Advisor.

Atenciosamente, Vladimir.

request.sl=NormalizeDouble(price-SL*point,digits);
Alert("request.sl= ",request.sl);

E também preço, SL e ponto para ter certeza)

 
Valeriy Yastremskiy:

E também por preço certo, SL e ponto)

Obrigado, Valery!

Atenciosamente, Vladimir.

 
Valeriy Yastremskiy:

A distância de congelamento é correta, a distância da ordem/posição de mercado na qual as ordens não podem ser executadas. As paradas não podem ser colocadas nesta área. Use sua parada estimada como Parâmetro, e você terá a parada desejada na saída. O código é para 4k. A lógica é a mesma em 5. O parâmetro MarketInfo parece ser o mesmo.

Para 5

NÍVEL_SÍMBOLO_COMÉRCIO_FREEZE

Operações comerciais distância de congelamento (em pontos)

int



Obrigado, Valery, pelo esclarecimento.

Cumprimentos, Vladimir.

 

Bom dia e bom humor para todos!

Eu continuo estudando a linguagem de programação MQL5. Hoje é o momento em que posso colocar o código do Expert Advisor com uma parada para o público. Como o código do Expert Advisor é bastante complicado, tive que cortar os comentários o máximo possível e publicá-lo como um arquivo chamado Trailing_Stop (v.1).mq5. Publicarei a versão do Expert Advisor com comentários detalhados sobre cada linha de código, em uma forma fácil de entender para um aluno do 1º ano de uma escola de programação, um pouco mais tarde.

Antes de publicar o código, verificamos o Expert Advisor no testador de estratégia. Não foram detectados problemas. O sistema de rede de contabilidade de posição é usado no Expert Advisor. Este sistema de contabilidade significa que em um determinado momento da conta, pode haver apenas uma posição aberta para o mesmo símbolo (segurança).

Neste momento, o Consultor Especialista implementou a capacidade de fazê-lo:

  1. Verifique a conta comercial, na qual você planeja instalá-la. Se o Expert Advisor for instalado em uma conta demo, então na caixa de mensagens aparecerá a permissão para continuar trabalhando. Se for feita uma tentativa de instalar o Expert Advisor em umaconta real, a janela de mensagem mostrará um aviso de que ele não pode continuar trabalhando, e então ele será automaticamente excluído da janela de trabalho do terminal comercial .
  2. Uma vez por dia de negociação, às 9h, horário de Moscou, abre automaticamente uma posição na direção em que o primeiro tique é dirigido. Por exemplo, se o primeiro tique for direcionado para cima às 9h, horário de Moscou, então a posição COMPRAR será aberta; se o primeiro tique for direcionado para baixo, então a posição VENDER será aberta.
  3. Defina o tamanho do lote.
  4. Tamanho de stop loss definido.
  5. Especifique o nível relativo ao preço de abertura, no qual o Stop Loss é movido para o Breakeven.
  6. Estabelecer o passo de fuga do stop loss.

Esta versão do Expert Advisor implementa parcialmente as dicas sugeridas anteriormente por Vassily Sokolov. Todos os acréscimos e comentários detalhados serão incluídos na versão final do Expert Advisor.

ADVERTÊNCIA!!!

Este Expert Advisor é desenvolvido de acordo com o plano de auto-estudo para contas de demonstração, e é destinado apenas para fins de treinamento! Não se destina à negociação em uma conta real e com lucro!

Cumprimentos, Vladimir.

Arquivos anexados:
 

Caros participantes e leitores deste tópico!

Fiquei acordado a noite toda tentando descobrir porque o arquivo previamente publicado com o código do Expert Advisor, que tinha um defeito, não podia ser substituído pela versão corrigida. Pela manhã eu finalmente descobri!

Francamente falando, eu não pensava que se um dos participantes do fórum já tivesse baixado o arquivo Trailing_Stop.mq5 com um defeito, não seria possível simplesmente baixar e substituir o arquivo por um corrigido com o mesmo nome. Acontece que você também deveria mudar o nome da EA para publicar a variante corrigida.

Devido a este fato, peço desculpas e proponho baixar a versão corrigida do Expert Advisor chamado Trailing_Stop (v.1).mq5 que está localizado na mensagem anterior.

Cumprimentos, Vladimir.

Razão: