refinamento da estratégia do assessor - página 4

 
IRIP:

Onde posso ler sobre como estabelecer um stop loss?

Eu preciso, digamos, de uma parada na barra baixa 2


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

Existem agora vários desafios

1. Obter o ponto de equilíbrio quando um certo lucro é alcançado

2. Arrasto por fractais ou uma figura fixa

 
IRIP:

Existem agora vários desafios

1. Obter o ponto de equilíbrio quando um certo lucro é alcançado

2. Arrasto por fractais ou uma figura fixa


Comece a escrever e faça perguntas à medida que for avançando...
 
IRIP:
if ( (Baixo[0]>Baixo[1]) && (Baixo[1]<Baixo[2]) && (Baixo[1]<Baixo[2]) && (Alto[1]<Alto[2]) ) BuyOp=true;

if ( (Alto[0]<Alto[1]) && (Baixo[0]<Baixo[1]) && (Alto[1]>Alto[2]) && (Aberto[0]<Fechar[1]) ) SellOp=verdadeiro;


Vender . E nenhum Trall ou Breakeven o ajudará. E isso nunca ajudará se você não explorar nenhuma regularidade, como neste caso.

 
DYN:


Você vai vender fora. E nenhuma rede de arrasto ou break-even o ajudará. E isso nunca ajudará se você não explorar nenhuma regularidade como neste caso.


Ele o fará. Mas o homem está aprendendo a programar, e não é tão ruim assim!
 
ktest0:

Ele o fará. Mas se aprende a programar, e isso não é uma coisa ruim!

Sim, eu concordo. Kudos para o cara por isso. É difícil aprender do zero no início - eu sei como é -)-)-)
 
ktest0:

Ele o fará. Mas se aprende a programar, e isso não é uma coisa ruim!

Sim, eu realmente quero aprender a programar.
 


Livros, isso é ótimo. Mas, por exemplo, encontrei um conselheiro que geralmente faz o que eu preciso

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

//| TrailingStopLight.mq4 |

//| Copyright © 2011, Khlystov Vladimir |

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

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

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

#link da propriedade "http://cmillion.narod.ru"

#property show_inputs

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

Externo int Stoploss = 0, //stopploss, se 0, permanece inalterado

Takeprofit = 0; //takeprofit, se 0, permanece inalterado

TrailingStop externo int = 20; // comprimento do trailingStop, se 0, então sem trailingStop

StepTrall = 0; // Steptramp = 0; // Steptramp - move StopLoss não mais perto do que StepTrall

externo int NoLoss = 10, //transferência para o Breakeven em um número especificado de pontos lucro, se 0, então nenhuma transferência para o Breakeven

MinProfitNoLoss = 0; //minuto lucro mínimo para a transferência para o breakeven

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

int STOPLEVEL,TimeBar;

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

int init()

{

}

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

int deinit()

{

ObjectDelete("SLb");

ObjectDelete("SLs");

}

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

int start()

{

//while(!IsStopped())

{

//RefreshRates();

STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);

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

lucro duplo,ProfitS,ProfitB,LB,LS,NLb,NLs,price_b,price_s,OL,sl;

int b,s,OT,OMN;

para (int i=OrdensTotal()-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)

{

price_b = price_b+OOP*OL;

b++; LB+= OL;

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

}

se (OT===OP_SELL)

{

price_s = price_s+OOP*OL;

s++;LS+= OL;

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

}

}

}

}

ObjectDelete("SLb");

ObjectDelete("SLs");

se (b>0)

{

NLb = NormalizeDuplo(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);

}

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

para (i=0; i<OrdensTotal(); i+++)

{

se (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

se (OrderSymbol()==Symbol())

{

OT = OrderType();

OSL = NormalizeDouble(OrderStopLoss(),Digits);

OTP = NormalizeDuplo(OrderTakeProfit(),Dígitos);

OOP = NormalizeDouble(OrderOpenPrice(),Digits);

SL=OSL; TP=OTP;

se (OT===OP_BUY)

{

b++;

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

{

SL = NormalizeDouble(Bid - Stoploss * Ponto,Dígitos);

}

senão SL=OSL;

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

{

TP = NormalizeDuplo(Ask + Takeprofit * Ponto,Dígitos);

}

senão TP=OTP;

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

{

if (OOP<==NLb && NLb!=0 && NLb <= NormalizeDuplo(Bid-NoLoss*Point,Dígitos))

SL = NormalizeDuplo(NLb+MinProfitNoLoss*Point,Dígitos);

}

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

{

StLo = NormalizeDouble(Bid - TrailingStop*Point,Dígitos);

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

}

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

{

OTicket=OrderTicket();

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

}

}

se (OT===OP_SELL)

{

s++;

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

{

SL = NormalizeDouble(Ask + Stoploss * Ponto,Dígitos)

}

senão SL=OSL;

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

{

TP = NormalizeDuplo(Bid - Takeprofit * Ponto,Dígitos);

}

senão TP=OTP;

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

{

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

SL = NormalizeDuplo(NLs-MinProfitNoLoss*Point,Dígitos);

}

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

{

StLo = NormalizeDouble(Pergunte + TrailingStop*Point,Dígitos);

if (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)) Imprimir("OrderModify Error ",GetLastError()));

}

}

}

}

}

se (IsTesting())

{

se (TimeBar!=Time[0])

{

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

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

TimeBar=Time[0];

}

}

//Sleep(1000);

}

}

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

Poderia (teoricamente) ser inserida na minha?

 
IRIP:


Livros, isso é ótimo. Mas, por exemplo, encontrei um conselheiro que geralmente faz o que eu preciso

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

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

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

Pode (teoricamente) ser inserida na minha?

Primeiro, aprenda como inserir código com um botão SRC!

Que "os livros são ótimos" precisa ser demonstrado ainda! Enquanto isso, você está pensando em sair em pistas. E "sem mão-de-obra...", você provavelmente sabe o resultado, ou você vai descobrir, e o tempo está se esgotando! Sem conhecimento apenas para lugar nenhum!

Razão: