Ayuda a la codificación - página 658

 

Estimado mladen

Si quiero saber el último tipo de orden cerrada y si obtuvo beneficios en un EA, puede la siguiente función hacer el trabajo:

int OrdersProfit()
  {
   int Profit;
   for (int i=OrdersHistoryTotal(); i>=0; i--)
     {
      if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
      if (OrderType()==OP_BUY  && OrderProfit()> 0) Profit ="1" ;
      if (OrderType()==OP_SELL && OrderProfit()> 0) Profit ="2" ;
     }    
   return(Profit);
  }


Mejor,

 
IXI:

Estimado mladen

Si quiero saber el último tipo de orden cerrada y si obtuvo beneficios en un EA, ¿puede la siguiente función hacer el trabajo?


Mejor,

No, no es posible (simplemente porque las órdenes cerradas no están ordenadas por hora de cierre - al menos eso es lo que nos dice el manual : no se garantiza que las órdenes estén ordenadas por hora de cierre). Hay que hacer algo así :

int OrdersProfit()
{
   int      profit    = 0;
   datetime CloseTime = 0;
       for(int i=OrdersHistoryTotal()-1;i>=0;i--)
       {
           if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
           if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime()>CloseTime)
           {
              CloseTime = OrderCloseTime();
              if (OrderType()==OP_BUY  && OrderProfit()> 0) Profit =1 ;
              if (OrderType()==OP_SELL && OrderProfit()> 0) Profit =2 ;
           } 
       }
       return(Profit);
}  
 

Estimado mladen

Muchas gracias por su perfecta respuesta.

Lo mejor,

 

Estimados amigos,

¿Puede actualizar los indicadores adjuntos para la última construcción mt4 por favor?

¡Especialmente, "123PatternsV6" se congela mt4 y no funciona!

Archivos adjuntos:
 
oguz:

Estimados amigos,

¿Puede actualizar los indicadores adjuntos para la última construcción mt4 por favor?

¡Especialmente, "123PatternsV6" se congela mt4 y no funciona!

Creo que 123 necesita indicador de zigzag para trabajar con fuera de la congelación de la terminal.
 
mntiwana:
Creo que 123 necesita indicador de zigzag para trabajar con fuera de la congelación de la terminal.

Elindicador Zigzag ya está disponible en mt4.

 
oguz:

El indicador Zigzag ya está disponible en mt4.

El nuevo zigzag no funciona como las versiones anteriores. Se colgará el terminal si se utilizan algunos parámetros de las llamadas iCustom()
 

Hola.

Últimamente empecé a programar MQL4 para ganar experiencia y poder codificar mis propias ideas para probarlas previamente.

Ahora im luchando con el tiempo de la pintura.

Digamos que tengo una declaración if para algunos estocásticos y quiero esperar hasta que la MA vaya por encima o por debajo del precio antes de pintar, ¿cómo puedo hacer eso?

Lo que intenté y lo único que me vino a la mente:

if(iStochastic(NULL, PERIOD_CURRENT, _K_period, _D_period, Slowing, MODE_SMA, 0, MODE_MAIN, i) > 80
      && iStochastic(NULL, PERIOD_CURRENT, _K_period, _D_period, Slowing, MODE_SMA, 0, MODE_MAIN, i+1) < 80

 while High[i] > iMA(NULL, PERIOD_CURRENT, MAfilter, 0, MODE_EMA, PRICE_CLOSE, i+1) //Candlestick High < Moving Average
            (
               1+1
            )
       
      )

{
         Buffer1[i] = High[i]; //Set indicator value at Candlestick High
         if(i == 0 && Time[0] != time_alert) { myAlert("indicator", "Selling opportunity"); time_alert = Time[0]; } //Instant alert, only once per bar
        }
      else
        {
         Buffer1[i] = 0;

El 1+1 sólo para llenar el bucle while, lo que estoy tratando de hacer es esperar para pintar la flecha hasta que el alto del precio está por debajo de la MA, pero sin embargo, no quiero que esto sea y declaración desde que la cruz happend sólo quiero esperar util i pintura .

Sin embargo, esto no fue exitoso, por lo que pido a los codificadores profesionales en la comunidad

 
NWFstudent:

Hola.

Últimamente he empezado a programar MQL4 para ganar experiencia y poder codificar mis propias ideas para probarlas previamente.

Ahora im luchando con el tiempo de la pintura.

Digamos que tengo una declaración if para algunos estocásticos y quiero esperar hasta que la MA vaya por encima o por debajo del precio antes de pintar, ¿cómo puedo hacer eso?

Lo que intenté y lo único que me vino a la mente:

El 1+1 sólo para llenar el bucle while, lo que estoy tratando de hacer es esperar para pintar la flecha hasta que el alto del precio está por debajo de la MA, pero sin embargo, no quiero que esto sea y declaración desde que la cruz happend sólo quiero esperar util i pintura .

Sin embargo, esto no fue exitoso, por lo que pido a los codificadores profesionales en la comunidad

Intenta así :

Buffer1[i] = 0;
if(   iStochastic(NULL, PERIOD_CURRENT, _K_period, _D_period, Slowing, MODE_SMA, 0, MODE_MAIN, i)   > 80
   && iStochastic(NULL, PERIOD_CURRENT, _K_period, _D_period, Slowing, MODE_SMA, 0, MODE_MAIN, i+1) < 80 
   && High[i] > iMA(NULL, PERIOD_CURRENT, MAfilter, 0, MODE_EMA, PRICE_CLOSE, i+1)) //Candlestick High < Moving Average
         Buffer1[i] = High[i]; //Set indicator value at Candlestick High

if(i == 0 && Time[0] != time_alert && Buffer1[i]!=0) { myAlert("indicator", "Selling opportunity"); time_alert = Time[0]; } //Instant alert, only once per bar
 
mladen:

Prueba así :

Esto me dará la "señal sólo cuando el cruce se produzca por encima de la MA, lo quiero por debajo de la MA, pero también quiero la señal si tengo un cruce por encima de la MA y unas pocas barras más tarde el precio se mueve por debajo de la MA.

Eso es lo que intenté con el bucle while, para que el código se repita hasta que el argumento se vuelva falso y proceda a pintar la señal.

Hice un dibujo esquemático, tal vez se entienda mejor.

Gracias por tu respuesta de todos modos

Archivos adjuntos:
illust.png  24 kb
Razón de la queja: