Asesores Expertos: Surefirething

 

Surefirething:

Trabajo con órdenes pendientes Buy Limit y Sell Limit. Se puede usar el trailing de posiciones.


Autor: Vladimir Karputov

 
¡Buenas tardes, este robot hace exactamente lo que buscaba! Tengo una duda, como hago para que se inserten nuevas ordenes cada vez que se finaliza una, y no solo cuando aparece una nueva barra, estoy operando con un activo que repite el mismo precio varias veces y podria hacer mas de una operación por minuto. gracias de antemano.
 
Fabio_tec :
¡Buenas tardes, este robot hace exactamente lo que buscaba! Tengo una pregunta, como hago para que se inserten nuevas ordenes cada vez que se finaliza una, y no solo cuando nace una nueva barra, estoy operando con un activo que repite el mismo precio varias veces y podria hacer mas de una operacion por minuto. gracias de antemano.

Lo siento, este código sólo funciona cuando nace una nueva barra.

 
Vladimir Karputov:

Lo sentimos, este código sólo funciona cuando se abre la nueva barra.

Para colocar nuevas órdenes antes de que la nueva vela se abre, es necesario tratar isnewbar.
 
sergiomt :
Hola, ¿que en la siguiente barra define si será de compra o de venta? agradecido

El EA trabaja con órdenes pendientes: BuyLimit y SellLimit.

 
sergiomt :

Aquí mi lote es cada 1. Si quiero que el lote sume +1 (1,2,3,4,5....) con cada pedido, ¿es esta la sección que tengo que cambiar?

//--- obtener paso minimo de cambio de volumen

double paso_volumen=m_symbol.Paso_lote();

int ratio=(int)MathRound(volumen/volumen_paso);

if(MathAbs(ratio*volumen_paso-volumen)>0.0000001)


¿Qué aspecto tendría?

No Incorrecto Para aumentar el lote actual, necesita saber cuál fue la última transacción.

 

¿Cómo puedo limitar el número de órdenes abiertas?

Gracias

 
sergiomt :

¿Cómo puedo limitar el número de órdenes abiertas?

Gracias

Para limitar - necesita contar todas las POSICIONES.

 
El autor del Asesor Experto no responderá de todos modos. Si es posible entender el código, que alguien al menos responda en qué principio se colocan las órdenes limitadas pendientes. Parece ser en el retraso del precio, pero en qué principio y en qué parte del código se puede regular, si es posible. Incluso sin ajuste, sólo para entender cómo y en qué condiciones se colocan.
 
Vladimir Gulakov #:
El autor del Asesor Experto no responderá de todos modos. Si es posible entender el código, que alguien al menos responda en qué principio se colocan las órdenes limitadas pendientes. Parece ser en el retraso del precio, pero en qué principio y en qué parte del código se puede regular, si es posible. Incluso sin ajuste, sólo para entender cómo y en qué condiciones se colocan.

¡Hola, Vladimir!

En este bloque puedes ajustar/cambiar el código resaltado en amarillo como necesites:

//---
   MqlRates rates[];
   ArraySetAsSeries(rates,true);
   int copied=CopyRates(m_symbol.Name(),Period(),1,1,rates);
   if(copied!=1)
     {
      PrevBars=0;
      return;
     }
   double H4=((((rates[0].high-rates[0].low)*1.1)/2)+rates[0].close);
   double H3= ((((rates[0].high-rates[0].low)*1.1)/4)+rates[0].close);
   double L3= (rates[0].close-((rates[0].high-rates[0].low)*1.1)/4);
   double L4= (rates[0].close-((rates[0].high-rates[0].low)*1.1)/2);

   double price=0.0;
   double sl=0.0;
   double tp=0.0;

   price=L4;
   sl=(InpStopLoss==0.0)?0.0:ExtStopLoss;
   tp=(InpTakeProfit==0.0)?0.0:ExtTakeProfit;
   m_trade.BuyLimit(InpLots,m_symbol.NormalizePrice(price),m_symbol.Name(),
                    m_symbol.NormalizePrice(price-sl),
                    m_symbol.NormalizePrice(price+tp));

   price=H4;
   sl=(InpStopLoss==0.0)?0.0:ExtStopLoss;
   tp=(InpTakeProfit==0.0)?0.0:ExtTakeProfit;
   m_trade.SellLimit(InpLots,m_symbol.NormalizePrice(price),m_symbol.Name(),
                     m_symbol.NormalizePrice(price+sl),
                     m_symbol.NormalizePrice(price-tp));

Saludos, Vladimir.

 
MrBrooklin #:

¡Hola, Vladimir!

En este bloque puedes ajustar/cambiar el código resaltado en amarillo como necesites:

Saludos, Vladimir.

Gracias, lo probaré