perfeccionamiento de la estrategia del asesor - página 4

 
IRIP:

¿Dónde puedo leer sobre cómo establecer un stop loss?

Necesito, por ejemplo, una parada en la barra baja 2


https://book.mql4.com/ru/trading/index
 
Gracias
 

Ahora hay varios retos

1. Punto de equilibrio cuando se alcanza un determinado beneficio

2. arrastre por fractales o por una cifra fija

 
IRIP:

Ahora hay varios retos

1. Punto de equilibrio cuando se alcanza un determinado beneficio

2. arrastre por fractales o por una cifra fija


Empieza a escribir y haz preguntas sobre la marcha...
 
IRIP:
if ( (Low[0]>Low[1]) && (Low[1]<Low[2]) && (Low[1]<Low[2]) && (High[1]<High[2]) ) BuyOp=true;

if ( (High[0]<High[1]) && (Low[0]<Low[1]) && (High[1]>High[2]) && (Open[0]<Close[1]) ) SellOp=true;


Vender . Y ni Trall ni Breakeven te ayudarán. Y nunca servirá de nada si no explota ninguna regularidad, como en este caso.

 
DYN:


Lo harás. Y ninguna red de arrastre o de equilibrio te ayudará. Y nunca servirá de nada si no se explota ninguna regularidad como en este caso.


Lo hará. Pero el hombre está aprendiendo a programar, ¡y no está nada mal!
 
ktest0:

Lo hará. Pero uno aprende a programar, ¡y eso no es malo!

Sí, estoy de acuerdo. Felicitaciones al tipo por eso. Es difícil aprender desde cero al principio - sé cómo es -)-)-)
 
ktest0:

Lo hará. Pero uno aprende a programar, ¡y eso no es malo!

Sí, realmente quiero aprender a programar.
 


Libros, eso es genial. Pero, por ejemplo, he encontrado un asesor que generalmente hace lo que necesito

//+------------------------------------------------------------------+

//| TrailingStopLight.mq4 ||

//| Copyright © 2011, Khlystov Vladimir |

//| http://cmillion.narod.ru |

//+------------------------------------------------------------------+

#property copyright "Copyright © 2011, cmillion@narod.ru"

#enlace de propiedad "http://cmillion.narod.ru"

#property show_inputs

//--------------------------------------------------------------------

extern int Stoploss = 0, /stopploss, si es 0, no cambia

Beneficio = 0; //el beneficio, si es 0, no cambia

extern int TrailingStop = 20; //longitud de la rampa, si es 0, no hay trailing stop

extern int StepTrall = 0; //paso de rampa - mover StopLoss no más cerca que StepTrall

extern int NoLoss = 10, //transferencia al punto de equilibrio a un número determinado de puntos de beneficio, si es 0, entonces no hay transferencia al punto de equilibrio

MinProfitNoLoss = 0; //Ganancia mínima para que la transferencia alcance el punto de equilibrio

//--------------------------------------------------------------------

int NIVEL DE PARADA,Barra de tiempo;

//--------------------------------------------------------------------

int init()

{

}

//--------------------------------------------------------------------

int deinit()

{

ObjectDelete("SLb");

ObjectDelete("SLs");

}

//--------------------------------------------------------------------

int inicio()

{

//while(!IsStopped())

{

//RefreshRates();

STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);

doble OSL,OTP,OOP,StLo,SL,TP;

doble Beneficio,BeneficioS,BeneficioB,LB,LS,NLb,NLs,precio_b,precio_s,OL,sl;

int b,s,OT,OMN;

for (int i=TotalPedidos()-1; i>=0; i--)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

OMN = OrderMagicNumber();

if (OrderSymbol() == Symbol())

{

OOP = NormalizeDouble(OrderOpenPrice(),Digits);

OT = OrderType();

OL = OrderLots();

si (OT==OP_BUY)

{

precio_b = precio_b+OOP*OL;

b++; LB+= OL;

ProfitB+=OrderProfit()+OrderSwap()+OrderCommission();

}

si (OT==OP_SELL)

{

precio_s = precio_s+OOP*OL;

s++;LS+= OL;

ProfitS+=OrderProfit()+OrderSwap()+OrderCommission();

}

}

}

}

ObjectDelete("SLb");

ObjectDelete("SLs");

si (b>0)

{

NLb = NormalizarDoble(precio_b/LB,Dígitos);

ObjectCreate("SLb",OBJ_ARROW,0,Time[0],NLb,0,0,0);

ObjectSet ("SLb",OBJPROP_ARROWCODE,6);

ObjectSet ("SLb",OBJPROP_COLOR,Blue);

}

si (s>0)

{

NLs = NormalizarDoble(precio_s/LS,Dígitos);

ObjectCreate("SLs",OBJ_ARROW,0,Time[0],NLs,0,0,0);

ObjectSet ("SLs",OBJPROP_ARROWCODE,6);

ObjectSet ("SLs",OBJPROP_COLOR,Red);

}

int OTicket;

for (i=0; i<OrdersTotal(); i++)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

if (OrderSymbol()==Symbol())

{

OT = OrderType();

OSL = NormalizeDouble(OrderStopLoss(),Digits);

OTP = NormalizeDouble(OrderTakeProfit(),Digits);

OOP = NormalizeDouble(OrderOpenPrice(),Digits);

SL=OSL; TP=OTP;

si (OT==OP_BUY)

{

b++;

if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)

{

SL = NormalizeDouble(Bid - Stoploss * Point,Digits);

}

Si no, SL=OSL;

if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)

{

TP = NormalizeDouble(Ask + Takeprofit * Point,Digits);

}

Si no, TP=OTP;

if (NoLoss>=STOPLEVEL && OSL<NLb && NoLoss!=0)

{

if (OOP<=NLb && NLb!=0 && NLb <= NormalizeDouble(Bid-NoLoss*Point,Digits))

SL = NormalizeDouble(NLb+MinProfitNoLoss*Point,Digits);

}

if (TrailingStop>=STOPLEVEL && TrailingStop!=0)

{

StLo = NormalizeDouble(Bid - TrailingStop*Point,Digits);

si (StLo>=NLb && NLb!=0) si (StLo > OSL) SL = StLo;

}

si (SL != OSL || TP != OTP)

{

OTicket=OrderTicket();

if (!OrderModify(OTicket,OOP,SL,TP,0,White)) Print("Error en la modificación del pedido ",GetLastError());

}

}

si (OT==OP_SELL)

{

s++;

if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)

{

SL = NormalizeDouble(Ask + Stoploss * Point,Digits)

}

Si no, SL=OSL;

if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)

{

TP = NormalizeDouble(Bid - Takeprofit * Point,Digits);

}

Si no, TP=OTP;

if (NoLoss>=STOPLEVEL && (OSL>NLs || OSL==0) && NoLoss!=0)

{

if (OOP>=NLs && NLs!=0 && NLs >= NormalizeDouble(Ask+NoLoss*Point,Digits))

SL = NormalizeDouble(NLs-MinProfitNoLoss*Point,Digits);

}

if (TrailingStop>=STOPLEVEL && TrailingStop!=0)

{

StLo = NormalizeDouble(Ask + TrailingStop*Point,Digits);

if (StLo<=NLs && NLs!=0) if (StLo < OSL || OSL==0) SL = StLo;

}

si ((SL != OSL || OSL==0) || TP != OTP)

{

OTicket=OrderTicket();

if (!OrderModify(OTicket,OOP,SL,TP,0,White)) Print("Error en la modificación del pedido ",GetLastError());

}

}

}

}

}

si (IsTesting())

{

if (TimeBar!=Time[0])

{

OrderSend(Symbol(),OP_BUY,1,NormalizeDouble(Ask,Digits),3,0,0, "test",0,0,Blue);

OrderSend(Symbol(),OP_SELL,1,NormalizeDouble(Bid,Digits),3,0,0, "test",0,0,Red);

TimeBar=Time[0];

}

}

//Sleep(1000);

}

}

//--------------------------------------------------------------------

¿Podría (teóricamente) insertarse en el mío?

 
IRIP:


Libros, eso es genial. Pero, por ejemplo, he encontrado un asesor que generalmente hace lo que necesito

//+------------------------------------------------------------------+

//|                                            TrailingStopLight.mq4 |

//|                              Copyright © 2011, Khlystov Vladimir |

//|                                         http://cmillion.narod.ru |

//+------------------------------------------------------------------+

#property copyright "Copyright © 2011, cmillion@narod.ru"

#property link      "http://cmillion.narod.ru"

#property show_inputs

//--------------------------------------------------------------------
extern int Stoploss             = 0,//стоплосс, если 0 то не изменяется
           Takeprofit           = 0;//тейкпрофит, если 0 то не изменяется
extern int TrailingStop         = 20;//длинна тралла, если 0 то нет тралла
extern int StepTrall            = 0;//шаг тралла - перемещать стоплосс не ближе чем StepTrall
extern int NoLoss               = 10,//перевод в безубыток при заданном кол-ве пунктов прибыли, если 0 то нет перевода в безубыток
           MinProfitNoLoss      = 0//минимальная прибыль при переводе вбезубыток
//--------------------------------------------------------------------
int  STOPLEVEL,TimeBar;
//--------------------------------------------------------------------
int init()
{

}
//--------------------------------------------------------------------
int deinit()
{
   ObjectDelete("SLb");
   ObjectDelete("SLs");
}
//--------------------------------------------------------------------
int start()                                  
{
   //while(!IsStopped())
   {
      //RefreshRates();
      STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
      double OSL,OTP,OOP,StLo,SL,TP;
      double Profit,ProfitS,ProfitB,LB,LS,NLb,NLs,price_b,price_s,OL,sl;
      int b,s,OT,OMN;
      for (int i=OrdersTotal()-1; i>=0; i--)
      {                                               
         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {
            OMN = OrderMagicNumber();
            if (OrderSymbol() == Symbol())
            {
               OOP = NormalizeDouble(OrderOpenPrice(),Digits);

               OT = OrderType();
               OL = OrderLots();
               if (OT==OP_BUY)
               {
                  price_b = price_b+OOP*OL;
                  b++; LB+= OL;
                  ProfitB+=OrderProfit()+OrderSwap()+OrderCommission();
               }
               if (OT==OP_SELL)
               {
                  price_s = price_s+OOP*OL;

                  s++;LS+= OL;

                  ProfitS+=OrderProfit()+OrderSwap()+OrderCommission();

               }

            }

         }

      }

      ObjectDelete("SLb");

      ObjectDelete("SLs");

      if (b>0) 

      {

         NLb = NormalizeDouble(price_b/LB,Digits);

         ObjectCreate("SLb",OBJ_ARROW,0,Time[0],NLb,0,0,0,0);                     

         ObjectSet   ("SLb",OBJPROP_ARROWCODE,6);

         ObjectSet   ("SLb",OBJPROP_COLOR, Blue);

      }

      if (s>0) 

      {

         NLs = NormalizeDouble(price_s/LS,Digits);

         ObjectCreate("SLs",OBJ_ARROW,0,Time[0],NLs,0,0,0,0);                     

         ObjectSet   ("SLs",OBJPROP_ARROWCODE,6);

         ObjectSet   ("SLs",OBJPROP_COLOR, Red);

      }

      int OTicket;

      for (i=0; i<OrdersTotal(); i++)

      {    

         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

         {

            if (OrderSymbol()==Symbol())

            { 

               OT = OrderType(); 

               OSL = NormalizeDouble(OrderStopLoss(),Digits);

               OTP = NormalizeDouble(OrderTakeProfit(),Digits);

               OOP = NormalizeDouble(OrderOpenPrice(),Digits);

               SL=OSL;TP=OTP;

               if (OT==OP_BUY)             

               {  

                  b++;

                  if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)

                  {

                      SL = NormalizeDouble(Bid - Stoploss   * Point,Digits);

                  } 

                  else SL=OSL;

                  if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)

                  {

                      TP = NormalizeDouble(Ask + Takeprofit * Point,Digits);

                  } 

                  else TP=OTP;

                  if (NoLoss>=STOPLEVEL && OSL<NLb && NoLoss!=0)

                  {

                     if (OOP<=NLb && NLb!=0 && NLb <= NormalizeDouble(Bid-NoLoss*Point,Digits)) 

                        SL = NormalizeDouble(NLb+MinProfitNoLoss*Point,Digits);

                  }

                  if (TrailingStop>=STOPLEVEL && TrailingStop!=0)

                  {

                     StLo = NormalizeDouble(Bid - TrailingStop*Point,Digits); 

                     if (StLo>=NLb && NLb!=0) if (StLo > OSL) SL = StLo;

                  }

                  if (SL != OSL || TP != OTP)

                  {  

                     OTicket=OrderTicket();

                     if (!OrderModify(OTicket,OOP,SL,TP,0,White)) Print("Error OrderModify ",GetLastError());

                  }

               }                                         

               if (OT==OP_SELL)        

               {

                  s++;

                  if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)

                  {

                     SL = NormalizeDouble(Ask + Stoploss   * Point,Digits);

                  }

                  else SL=OSL;

                  if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)

                  {

                      TP = NormalizeDouble(Bid - Takeprofit * Point,Digits);

                  }

                  else TP=OTP;

                  if (NoLoss>=STOPLEVEL && (OSL>NLs || OSL==0) && NoLoss!=0)

                  {

                     if (OOP>=NLs && NLs!=0 && NLs >= NormalizeDouble(Ask+NoLoss*Point,Digits)) 

                        SL = NormalizeDouble(NLs-MinProfitNoLoss*Point,Digits);

                  }

                  if (TrailingStop>=STOPLEVEL && TrailingStop!=0)

                  {

                     StLo = NormalizeDouble(Ask + TrailingStop*Point,Digits); 

                     if (StLo<=NLs && NLs!=0) if (StLo < OSL || OSL==0) SL = StLo;

                  }

                  if ((SL != OSL || OSL==0) || TP != OTP)

                  {  

                     OTicket=OrderTicket();

                     if (!OrderModify(OTicket,OOP,SL,TP,0,White)) Print("Error OrderModify ",GetLastError());

                  }

               } 

            }

         }

      }

      if (IsTesting())

      {

         if (TimeBar!=Time[0])

         {

            OrderSend(Symbol(),OP_BUY,1,NormalizeDouble(Ask,Digits),3,0,0,"тест",0,0,Blue);

            OrderSend(Symbol(),OP_SELL,1,NormalizeDouble(Bid,Digits),3,0,0,"тест",0,0,Red);

            TimeBar=Time[0];

         }

      } 

      //Sleep(1000);

   } 
}
//--------------------------------------------------------------------

¿Puede (teóricamente) insertarse en el mío?

Primero, aprende a insertar código con un botón SRC.

¡Eso de que "los libros son geniales" hay que demostrarlo todavía! Mientras tanto, estás pensando en salir con pistas. Y "sin trabajo...", probablemente ya sabes el resultado, o te vas a enterar, ¡y el tiempo se acaba! ¡Sin conocimiento sólo a ninguna parte!

Razón de la queja: