affinamento della strategia del consulente - pagina 4

 
IRIP:

Dove posso leggere come impostare uno stop loss?

Ho bisogno, diciamo, di uno stop alla barra bassa 2


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

Ora ci sono diverse sfide

1. Il pareggio quando si raggiunge un certo profitto

2. pesca a strascico per frattali o una figura fissa

 
IRIP:

Ora ci sono diverse sfide

1. Il pareggio quando si raggiunge un certo profitto

2. pesca a strascico per frattali o una figura fissa


Inizia a scrivere e fai domande man mano che vai avanti...
 
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;


Vendere . E nessun Trall o Breakeven vi aiuterà. E non servirà mai se non si sfrutta nessuna regolarità, come in questo caso.

 
DYN:


Lo farai. E nessuno strascico o break-even vi aiuterà. E non sarà mai utile se non si sfrutta nessuna regolarità come in questo caso.


Lo farà. Ma l'uomo sta imparando a programmare, e non è affatto male!
 
ktest0:

Lo farà. Ma si impara a programmare, e non è una brutta cosa!

Sì, sono d'accordo. Complimenti al tizio per questo. È difficile imparare da zero all'inizio - so com'è -)-)-)
 
ktest0:

Lo farà. Ma si impara a programmare, e non è una brutta cosa!

Sì, voglio davvero imparare a programmare.
 


Libri, è fantastico. Ma, per esempio, ho trovato un consulente che generalmente fa quello di cui ho bisogno

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

//| TrailingStopLight.mq4 |

//| Copyright © 2011, Khlystov Vladimir |

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

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

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

#proprietà link "http://cmillion.narod.ru"

#proprietà show_inputs

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

extern int Stoploss = 0, //stopploss, se 0, rimane invariato

Takeprofit = 0; //takeprofit, se 0, rimane invariato

extern int TrailingStop = 20; //lunghezza del tramp, se 0, allora nessun trailing stop

extern int StepTrall = 0; //tramp step - sposta StopLoss non più vicino a StepTrall

extern int NoLoss = 10, //transfer to Breakeven ad un numero specificato di punti di profitto, se 0, allora nessun trasferimento al Breakeven

MinProfitNoLoss = 0; /profitto minimo per il trasferimento a pareggio

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

int STOPLEVEL,TimeBar;

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

int init()

{

}

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

int deinit()

{

ObjectDelete("SLb");

ObjectDelete("SLs");

}

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

int start()

{

//while(!IsStopped())

{

//RefreshRates();

STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);

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

doppio 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--)

{

se (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

OMN = OrderMagicNumber();

se (OrderSymbol() == Symbol())

{

OOP = NormalizeDouble(OrderOpenPrice(),Digits);

OT = OrderType();

OL = OrderLots();

se (OT==OP_BUY)

{

prezzo_b = prezzo_b+OOP*OL;

b++; LB+= OL;

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

}

se (OT==OP_SELL)

{

price_s = price_s+OOP*OL;

s++;LS+= OL;

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

}

}

}

}

ObjectDelete("SLb");

ObjectDelete("SLs");

se (b>0)

{

NLb = NormalizeDouble(price_b/LB,Digits);

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

ObjectSet ("SLb",OBJPROP_ARROWCODE,6);

ObjectSet ("SLb",OBJPROP_COLOR,Blue);

}

se (s>0)

{

NLs = NormalizeDouble(price_s/LS,Digits);

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

ObjectSet ("SLs",OBJPROP_ARROWCODE,6);

ObjectSet ("SLs",OBJPROP_COLOR,Red);

}

int OTicket;

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

{

se (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

se (OrderSymbol()==Symbol())

{

OT = OrderType();

OSL = NormalizeDouble(OrderStopLoss(),Digits);

OTP = NormalizeDouble(OrderTakeProfit(),Digits);

OOP = NormalizeDouble(OrderOpenPrice(),Digits);

SL=OSL; TP=OTP;

se (OT==OP_BUY)

{

b++;

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

{

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

}

altrimenti SL=OSL;

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

{

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

}

altrimenti TP=OTP;

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

{

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

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

}

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

{

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

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

}

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

{

OTicket=OrderTicket();

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

}

}

se (OT==OP_SELL)

{

s++;

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

{

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

}

altrimenti SL=OSL;

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

{

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

}

altrimenti TP=OTP;

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

{

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

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

}

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

{

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

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

}

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

{

OTicket=OrderTicket();

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

}

}

}

}

}

se (IsTesting())

{

se (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);

}

}

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

Potrebbe (teoricamente) essere inserito nel mio?

 
IRIP:


Libri, è fantastico. Ma, per esempio, ho trovato un consulente che generalmente fa quello di cui ho bisogno

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

//|                                            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);

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

Può (teoricamente) essere inserito nel mio?

Per prima cosa, imparate come inserire il codice con un pulsante SRC!

Che "i libri sono grandi" deve essere ancora dimostrato! Nel frattempo, stai pensando di uscire con dei suggerimenti. E "senza lavoro...", probabilmente conosci il risultato o lo scoprirai, e il tempo sta per scadere! Senza conoscenza solo al nulla!