[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 13

 
Hola! ¿Podríais decirme cómo hacer un trailing stop o Breakeven en un EA, que funcione bien por separado del mismo, pero que no se pueda combinar con uno?
 
paukas:

Lo tengo, gracias. ¿Cómo puedo escribir esta condición? Necesito que se cierre todo sólo si hay ganancias.
 
todem:
Hola! ¿Podríais decirme cómo hacer un trailing stop o Breakeven en un EA, que funcione bien por separado del mismo, pero que no se pueda combinar con uno?
//-------------------------------------------------------------------+
extern bool   Trailing       = True;
extern int    MinProfit      = 55;
extern int    TrailingStop   = 5;
extern int    TrailingStep   = 1;
//-------------------------------------------------------------------+
extern bool   LossKiller     = True;
extern int    MinProfitB     = 21;
extern int    KillLossLevel  = 16;
//-------------------------------------------------------------------+
int start()
  {
//----
   if(LossKiller) KillLoss();
   if(Trailing) TrailPositions();
//+------------------------------------------------------------------+
//|-----------------------// Trail positions //----------------------+
//+------------------------------------------------------------------+
void TrailPositions()
{
  int Orders = OrdersTotal();
  for (int i=0; i<Orders; i++)
  {
    if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
    if (OrderSymbol() != Symbol()) continue;
    {    
      if (OrderType() == OP_BUY && OrderMagicNumber() == Magic)  
      {
        if (Bid-OrderOpenPrice() > MinProfit*Point) 
        {
          if (OrderStopLoss() < Bid-(TrailingStop+TrailingStep-1)*Point) 
          {
          OrderModify(OrderTicket(), OrderOpenPrice(), Bid-TrailingStop*Point,OrderTakeProfit(), 0, Gold);           
          }
        }
      }   
      if (OrderType() == OP_SELL && OrderMagicNumber() == Magic)  
      {
        if (OrderOpenPrice()-Ask > MinProfit*Point) 
        {
          if (OrderStopLoss() > Ask+(TrailingStop+TrailingStep-1)*Point) 
          {
          OrderModify(OrderTicket(), OrderOpenPrice(), Ask+TrailingStop*Point,OrderTakeProfit(), 0, Gold);           
          }
        }
      }   
    }   
  }  
}
//+------------------------------------------------------------------+
//|--------------------------// KillLoss //--------------------------+
//+------------------------------------------------------------------+
void KillLoss()
{
  int Orders = OrdersTotal();
  for (int i=0; i<Orders; i++)
  {
    if(!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
    if(OrderSymbol() != Symbol()) continue;
    {    
      if(OrderType()==OP_BUY && (OrderStopLoss()<OrderOpenPrice() || OrderStopLoss()==0) && OrderMagicNumber()==Magic)
      {
        if(Bid-OrderOpenPrice() > MinProfitB*Point) 
        {
          if(OrderStopLoss() < Bid-(KillLossLevel-1)*Point) 
          {
          OrderModify(OrderTicket(), OrderOpenPrice(),OrderOpenPrice()+KillLossLevel*Point,OrderTakeProfit(), 0, Gold);          
          }
        }
      }        
      if(OrderType()==OP_SELL && (OrderStopLoss()>OrderOpenPrice() || OrderStopLoss()==0) && OrderMagicNumber()==Magic)
      {
        if(OrderOpenPrice()-Ask > MinProfitB*Point) 
        {
          if(OrderStopLoss() > Ask+(KillLossLevel-1)*Point) 
          {
          OrderModify(OrderTicket(), OrderOpenPrice(),OrderOpenPrice()-KillLossLevel*Point,OrderTakeProfit(), 0, Gold);          
          }
        }
      }   
    }   
  }  
}
//+------------------------------------------------------------------+
 
rustein:
Ayuda para arreglar, no se cierran todas las posiciones abiertas...

Gracias.


¿Cuáles no se cierran?

Si están perdiendo, está bien

 
VINAR:


¿Cuáles no se cierran?

Si no son rentables, está bien.

Sólo uno es rentable :) ¿Por qué? Gracias.

He buscado en el foro. Pero no entiendo...

 
Doberman101:

Saludos.

Ayúdame a escribir un EA.

Respetuosamente.

La gente debería apresurarse a hacer sugerencias, cada uno con su... Ni siquiera han decidido en base a qué TS necesitas un asesor... Y por qué no fueron a la "joba"... :))

Si necesitas ayuda para escribir código (o, mejor aún, para entenderlo), eres bienvenido, pero si... entonces... al trabajo ... :)))

 
artmedia70:

La gente debería apresurarse a hacer ofertas, cada uno con su... Ni siquiera han decidido en base a qué TC se necesita un asesor... Y por qué no fueron al "jobe"... :))

Si necesitas ayuda para escribir código (o, mejor aún, para entenderlo), eres bienvenido, pero si... entonces... al trabajo ... :)))

Artem, ¿todo lo que se trae?

Sólo el que pregunta necesita algo más.

El concejal no es ciruela y ahora mismo.

 
rustein:

Sólo uno es rentable :) ¿Por qué? Gracias.

He buscado en el foro. Pero no lo descubrió...


AccountProfit() devuelve el valor del beneficio de la cuenta corriente en la moneda base.

Cuando se cierra la primera rentable, aparentemente, AccountProfit() pasa a ser menor que 0.

Puedes escribir, por ejemplo, así:

void CloseAllOrders()
{
  if(AccountProfit() > 0)
    for(int i=OrdersTotal()-1;i>=0;i--)
    {
      RefreshRates();
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
        if(OrderType()== OP_BUY) 
           OrderClose (OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),10,CLR_NONE);
        if(OrderType()== OP_SELL)
           OrderClose (OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),10,CLR_NONE);
      }
    }  
    return(0);
}
 
artmedia70:

La gente debería apresurarse a hacer ofertas, cada uno con su... Ni siquiera han decidido en base a qué TC se necesita un asesor... Y por qué no fueron al "jobe"... :))

Si necesitas ayuda para escribir código (o, mejor aún, para entenderlo), eres bienvenido, pero si ... entonces... al trabajo ... :)))


¿Por qué una respuesta tan negativa? Un hombre adulto... ¿y nadie te ha enseñado a respetar en la vida?

Ese es el fin de la desputa. Trato a los mayores con respeto, por muy "podridos" que estén.

 
VINAR:

Artem, ¿estás subiendo todo?

Sólo el que pregunta necesita algo más.

El concejal no es ciruela y ahora mismo.


Pedí ayuda para escribir el código...

¿Dónde leíste que necesito "EA no está drenando y en este momento"?
Razón de la queja: