Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1596

 

He construido mi primer Asesor Experto a partir de los códigos amablemente proporcionados (especial agradecimiento aMakarFX_ por la motivación y el código)

Todo funciona como debería, pero con un problema. No sé dónde buscarlo.

El algoritmo es el siguiente:

hay una señal - se abre la orden

cerrarlo mediante una orden stop o take en puntos, o tras la consecución de los límites de pérdidas y ganancias en la moneda depo CountLoss y CountProfit. (lo que ocurra primero)

si es un stop - la siguiente orden con un margen, si es una toma, CountProfit, CountLoss - el lote se restablece al inicial

si el Stop Loss se establece en CountLoss , la siguiente orden se abre con el lote mínimo, por ejemplo, en lugar del lote inicial:

en las variables externas se establece el lote inicial 0.02, la siguiente orden en CountLoss será el lote 0.01.

¿Puede alguien decirme dónde está el error?

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

He construido mi primer Asesor Experto a partir de los códigos amablemente proporcionados (especial agradecimiento aMakarFX_ por la motivación y el código)

Todo funciona como debería, pero con un problema. No sé dónde buscarlo.

El algoritmo es el siguiente:

hay una señal - se abre la orden

cerrarlo mediante una orden stop o take en puntos, o tras la consecución de los límites de pérdidas y ganancias en la moneda depo CountLoss y CountProfit. (lo que ocurra primero)

si es un stop - la siguiente orden con un margen, si es una toma, CountProfit, CountLoss - el lote se restablece al inicial

si el Stop Loss se establece en CountLoss , la siguiente orden se abre con el lote mínimo, por ejemplo, en lugar del lote inicial:

en las variables externas se establece el lote inicial 0.02, la siguiente orden en CountLoss será el lote 0.01.

¿Puede alguien decirme dónde está el error?

Mira lo que he cambiado en la función double Lots()

Archivos adjuntos:
oilim1p11.mq4  17 kb
 
MakarFX:

Se imprimirá una vez cuando haya una operación con pérdidas

Gracias por la reflexión. He comparado la hora de cierre del pedido actual con la hora de cierre del pedido anterior y todo ha ido como debería. También hice la función de abrir una orden en sentido contrario con un stop loss, aunque no sirvió de mucho.
 
Petronet:
Gracias, he captado la idea. He comparado la hora de cierre del pedido actual con la hora de cierre del pedido anterior y todo ha ido como debería. También he hecho la función de abrir una orden en sentido contrario con un stop loss, aunque no ha servido de mucho.

Más concretamente...

 

Buenas tardes a todos. Intentando implementar el cálculo de beneficios y stops utilizando el indicador atr. La parada funciona bien. Pero el beneficio siempre se fija en el mismo valor. Este es el código para el cálculo de los beneficios

  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());// НОРМАЛИЗУЕМ ПРОФИТ, ЧТОБЫ РАБОТАЛО НА ЛЮБЫХ КАТИРОВКАХ
  

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

¿Cuál es el error de que el beneficio tenga siempre el mismo valor? ¿Eh?

 
DanilaMactep:

Buenas tardes a todos. Intentando implementar el cálculo de beneficios y stops utilizando el indicador atr. La parada funciona bien. Pero el beneficio siempre se fija en el mismo valor. Este es el código para el cálculo de los beneficios

¿Cuál es el error de que el beneficio tenga siempre el mismo valor? ¿Eh?

   // ЕСЛИ ПРОФИТ ПО АТР//-------------------------------------------------------------------------------------------------+
   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:
Gracias por tu ayuda - He cambiado un trozo de código y todo ha funcionado. Pero, ¿podría describir el error con palabras, ya que no puedo adelantarlo a ojo?
 
MakarFX:

Mira lo que he cambiado en la función Lots() doble

¡super! ¡muchas gracias!

 
DanilaMactep:
Gracias por la ayuda, he cambiado un trozo de código y todo ha funcionado. Pero, ¿puede describir con palabras cuál fue el error, ya que no puedo adelantarme a ojo?

su código ha sido 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());// НОРМАЛИЗУЕМ ПРОФИТ, ЧТОБЫ РАБОТАЛО НА ЛЮБЫХ КАТИРОВКАХ
 
Buenas tardes! Por favor, ayúdenme a poner en marcha mi terminal, el mercado no funciona. Quiero descargar un indicador gratuito del mercado y no puedo.

He cambiado la contraseña, he reiniciado, pero nada funciona.

El programa registra lo siguiente

2021.08.23 11:54:18.236 MQL5 Market falló al descargar el producto 'MACD Intraday Trend'(www.mql5.com:443 send failed [426: ])


Saludos, Olga