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

 
Buenas tardes. Necesito ayuda, porque no sé cómo codificar, escribir o modificar los indicadores por mí mismo. Seré breve.
¿Puede añadir una notificación sonora (Alerta) cuando
CrossUpcambia de 0,00000 a -1,00000
CrossDown de -1,00000 a 0,00000.
Por favor, ayuda, estaré eternamente agradecido. Gracias.

Archivos adjuntos:
 
S.P.I:
Hola. Necesito ayuda, porque yo mismo no sé nada de codificación, escritura o cambio de indicadores. Seré breve.
¿Se puede añadir una notificación sonora (Alerta) cuando el
CrossUpcambia de 0,00000 a -1,00000
CrossDown de -1,00000 a 0,00000.
Ayuda por favor, estaría eternamente agradecido. Gracias.

Formato incorrecto, necesita mq4

 
Alekseu Fedotov:

Formato incorrecto, necesita mq4

Esto también se puede hacer con ex4: entrar en sus recursos y leer los buffers.

 
Artyom Trishkin:

También es posible realizar esta tarea con ex4 - a los recursos y a los búferes de lectura.

¿Por qué? la llamada del indicador estándar desde el indicador a través de iCustom(), creo que tomará 15-20 minutos, que haya 2 archivos del indicador

 
Igor Makanu:

¿Por qué? La llamada al indicador estándar desde el indicador a través de iCustom(), creo que tomará 15-20 minutos, que haya 2 archivos de indicadores

También hay iCustom() en los recursos, pero hay un archivo.

Bueno, hay una diferencia dependiendo de tu gusto - si quieres tener dos archivos, que sean dos, si es uno, entonces uno. Y hay la misma cantidad de trabajo.

 
Alekseu Fedotov:

Así es, haz las cuentas.

Sí, pero ya es un porcentaje de beneficio, hay que hacer alguna construcción, para que a la variable drawdown se le asigne un valor en drawdown, y si la posición está en beneficio, el valor drawdown = 0.
 
nalyk:
Sí, pero ya es un porcentaje de ganancia, hay que inventar algún tipo de construcción, para que a la variable drawdown se le asigne un valor en drawdown, y si la posición está en ganancia, entonces el valor drawdown = 0 .
   double drawdown=(AccountProfit()<0 ? AccountProfit()*100/AccountBalance() : 0);
   Comment("текущая просадка  = ",drawdown);
 

Hola, podríais decirme cómo escribir correctamente la apertura de órdenes del último fractal. He intentado hacerlo así, pero no se abre en el probador.

void CheckForOpen()
{
  
   double hai_candle = iHigh(NULL,TimeCandleTrade,0);
   double low_candle = iLow(NULL,TimeCandleTrade,0); 
   fr_down = iFractals (Symbol(), 0, MODE_LOWER,3);
   fr_up = iFractals(Symbol(),0,MODE_UPPER,3);
   double SL, TP;
  
 if (BuyCount()==0 )
   {
  
    if (fr_down>0 && low_candle<Low[fr_down])
   {
     
      SL = NormalizeDouble(Ask - StopLoss*Point,Digits);
      TP = NormalizeDouble(Ask + TakeProfit*Point,Digits);
      ticket = OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slippage,SL,TP,NULL,magik,0,CLR_NONE);
      if (ticket <0)
       Print ("Не удалось открыть ордер на покупку",GetLastError());
   }
   
   }

int BuyCount()
  {
  int count = 0;
  for (int i=OrdersTotal()-1;i>=0;i--)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES) == true && 
        OrderMagicNumber()== magik &&                        
        OrderType() == OP_BUY )                       
        {
        count ++;
        }
    }
}

 
Artyom Trishkin:
Gracias.
 
nelenaby:

Hola, podríais decirme cómo escribir correctamente la apertura de órdenes del último fractal. He intentado hacerlo así, pero no se abre en el probador.

Estás buscando el fractal en la tercera barra, puede que no esté ahí. Busca el primer fractal en el bucle.

 
 for (int s=2; s<100; s++) 
     {
    fr_down=iFractals(Symbol(), 0, MODE_LOWER, s);
    if (f!=0) break;
     }
Razón de la queja: