Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1596

 

Construí meu primeiro Expert Advisor a partir dos códigos gentilmente fornecidos (especial agradecimento àMakarFX_ pela motivação e código)

Tudo funciona como deveria, mas com um problema. Não sei onde procurá-lo.

O algoritmo é o seguinte:

há um sinal - a ordem abre

fechá-lo usando a parada ou tomar a ordem em pontos, ou após os limites de lucro e perda terem sido atingidos na moeda DepoLoss e CountProfit. (o que vier primeiro)

se uma parada - a próxima ordem com uma margem, se um take, CountProfit, CountLoss - o lote é reajustado para a ordem inicial

se o Stop Loss estiver definido para CountLoss , a próxima ordem é aberta com o lote mínimo, por exemplo, ao invés do lote inicial:

em variáveis externas o lote inicial 0,02 é definido, a próxima ordem no CountLoss será o lote 0,01.

Alguém pode me dizer onde está o erro?

MakarFX
MakarFX
  • 2021.03.19
  • www.mql5.com
Профиль трейдера
Arquivos anexados:
oilim1p11.mq4  17 kb
 
законопослушный гражданин:

Construí meu primeiro Expert Advisor a partir dos códigos gentilmente fornecidos (especial agradecimento àMakarFX_ pela motivação e código)

Tudo funciona como deveria, mas com um problema. Não sei onde procurá-lo.

O algoritmo é o seguinte:

há um sinal - a ordem abre

fechá-lo usando o stop ou tomar a ordem em pontos, ou após a realização dos limites de lucro e perda na moeda de depoimento CountLoss e CountProfit. (o que vier primeiro)

se uma parada - a próxima ordem com uma margem, se um take, CountProfit, CountLoss - o lote é reajustado para a ordem inicial

se o Stop Loss estiver definido para CountLoss , a próxima ordem é aberta com o lote mínimo, por exemplo, ao invés do lote inicial:

em variáveis externas o lote inicial 0,02 é definido, então no CountLoss a próxima ordem será o lote 0,01.

Alguém pode me dizer onde está o erro?

Olha o que eu mudei na função duplo Lots()

Arquivos anexados:
oilim1p11.mq4  17 kb
 
MakarFX:

Vai imprimir uma vez quando houver um comércio com prejuízo

Obrigado pela reflexão. Comparei o horário de fechamento do pedido atual com o horário de fechamento do pedido anterior e tudo correu como deveria. Também fiz a função de abrir uma ordem na direção oposta com um stop loss, embora isso não tenha ajudado muito.
 
Petronet:
Obrigado, eu tive a idéia. Comparei a hora de fechamento da ordem atual com a hora de fechamento da ordem anterior e tudo correu como deveria. Também fiz a função de abrir uma ordem na direção oposta com um stop loss, embora isso não tenha ajudado muito.

Mais especificamente...

 

Boa tarde a todos. Tentando implementar o lucro e parar o cálculo usando o indicador atr. A parada funciona bem. Mas o lucro é sempre definido com o mesmo valor. Aqui está o código para o cálculo do lucro

  if(Tip_tp == en_TP_po_atr)// ЕСЛИ ПРОФИТ ПО АТР//-------------------------------------------------------------------------------------------------+
  {
  tp =NormalizeDouble(iATR(NULL,PeriodForWork_sl,atr_sl_period,1),Digits);// ПРИСВАЕВАЕМ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
      if(tp<stoplevel)  // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
        {
         tp=NormalizeDouble(tp*1.5,Digits); // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
        } 
  }
  tp= NormalizeDouble(tp*Point, Digits());// НОРМАЛИЗУЕМ ПРОФИТ, ЧТОБЫ РАБОТАЛО НА ЛЮБЫХ КАТИРОВКАХ
  

  
  
  //+--КОНЕЦ РАСЧЁТА ПРОФИТА---------------------------------------------------------------------- Разделитель ---+

Qual é o erro que o lucro tem sempre o mesmo valor? O que é isso?

 
DanilaMactep:

Boa tarde a todos. Tentando implementar o lucro e parar o cálculo usando o indicador atr. A parada funciona bem. Mas o lucro é sempre definido com o mesmo valor. Aqui está o código para o cálculo do lucro

Qual é o erro que o lucro tem sempre o mesmo valor? O que é isso?

   // ЕСЛИ ПРОФИТ ПО АТР//-------------------------------------------------------------------------------------------------+
   if(Tip_tp == en_TP_po_atr)
     {
      tp =NormalizeDouble(iATR(NULL,PeriodForWork_sl,atr_sl_period,1),Digits);// ПРИСВАЕВАЕМ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
      if(tp<stoplevel)  // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
        {
         tp=NormalizeDouble(tp*1.5,Digits); // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
        } 
     }
   //+--КОНЕЦ РАСЧЁТА ПРОФИТА---------------------------------------------------------------------- Разделитель ---+
 
MakarFX:
Obrigado por sua ajuda - mudei um pedaço de código e tudo funcionou. Mas você pode descrever em palavras qual foi o erro, pois não posso me antecipar a ele de olho?
 
MakarFX:

Veja o que eu mudei na função double Lots()

super! muito obrigado!

 
DanilaMactep:
Obrigado por sua ajuda - mudei um pedaço de código - tudo funcionou. Mas você pode descrever em palavras qual foi o erro, pois não posso me antecipar a ele de olho?

seu código foi dividido

В этой части кода ты задаешь tp значение АТР
  if(Tip_tp == en_TP_po_atr)// ЕСЛИ ПРОФИТ ПО АТР//-------------------------------------------------------------------------------------------------+
  {
  tp =NormalizeDouble(iATR(NULL,PeriodForWork_sl,atr_sl_period,1),Digits);// ПРИСВАЕВАЕМ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
      if(tp<stoplevel)  // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
        {
         tp=NormalizeDouble(tp*1.5,Digits); // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
        } 
  }
А в этой части ты обнуляешь предыдущее действие и задаешь непонятно что...
  tp= NormalizeDouble(tp*Point, Digits());// НОРМАЛИЗУЕМ ПРОФИТ, ЧТОБЫ РАБОТАЛО НА ЛЮБЫХ КАТИРОВКАХ
 
Boa tarde! Por favor, ajude-me a colocar meu terminal em funcionamento - o mercado não está funcionando. Eu quero baixar um indicador gratuito do mercado e não posso.

Eu mudei a senha, reinicializei, mas nada funciona.

O programa registra o seguinte

2021.08.23 11:54:18.236 MQL5 Mercado falhou no download do produto 'MACD Intraday Trend'(www.mql5.com:443 send failed [426: ])


Cumprimentos, Olga

Razão: