Neo traderBot

Neo traderBot

Você sabia?

Abordamos o tema de automatização de estratégias em NTSL, MQL5 e NinjaScript!

leaf leftleaf right
Notifications
Clear all

SETUP TRAP DE RAPOSA

2 Posts
2 Usuários
1 Reactions
344 Visualizações
(@admin)
Membro Admin
Registrou: 2 anos atrás
Posts: 216
Iniciador do tópico  

Prezados membros,

 

       por oportunidade da série de vídeos "Passeando pela Lojinha", na qual realizamos a análise de desempenho das estratégias mais assinadas na Loja de Estratégias do Profit Chart, compartilho abaixo a implementação do setup TRAP DE RAPOSA da Comunidade NeoTraderBot. Este setup é bastante difundido por Alexander Wolwacz, conhecido por Stormer, fundador da L&S Quant.

const
  cEncerraPosicao = 1730;
  cOffsetEmTicks = 10;

input
  pRiscoGanho(1.61);
  pMediaRapida(9);
  pMediaLenta(81);
var
  bGraficoTemporalDiarioOuAcima: boolean;
  bTrapRaposa, bSinalCompra, bSinalVenda: boolean;
  fMediaRapida, fMediaLenta, fDifMedia: float;
  fVolMedia: float;
  fStop: float;

begin
  if CurrentBar = 0 then
  bGraficoTemporalDiarioOuAcima :=  (GraphicInterval = itDaily) 
                                 or (GraphicInterval = itWeekly)
                                 or (GraphicInterval = itMonthly);
  
  bTrapRaposa := false;
  bSinalCompra := false;
  bSinalVenda := false;
  fMediaRapida := MediaExp(pMediaRapida,Close);
  fMediaLenta := MediaExp(pMediaLenta,Close);
  fVolMedia := AvgTrueRange(100,0);
  

  plot(fMediaRapida);
  plot2(fMediaLenta);
  setPlotColor(1,clWhite);
  setPlotStyle(1,psDash);
  setPlotColor(2,clRed);
  setPlotWidth(2,2);


  bTrapRaposa := ( (Close > fMediaRapida) and (Low <= fMediaRapida)
                   or
                   (Close < fMediaRapida) and (High >= fMediaRapida)
                 );  

  if not hasPosition
  and (
        (not bGraficoTemporalDiarioOuAcima)
        or
        ((bGraficoTemporalDiarioOuAcima) and not bTrapRaposa[1])
      )
  then
  begin
    //Sinal bTrapRaposa de Compra + 2 Passos do Paraíso
    if bTrapRaposa
    and (fMediaRapida > fMediaLenta)
    and (fMediaRapida > fMediaRapida[1])
    and (fMediaLenta > fMediaLenta[1])
    and ((Highest(fMediaRapida,pMediaRapida) - Lowest(fMediaRapida,pMediaRapida)) >= fVolMedia)
    then
    begin
      bSinalCompra := true;
      PaintBar(clGreen);
      PlotText("C", clGreen, 3, 10, Low - 5*MinPriceIncrement);
    end;
  
    //Sinal InsideBar de Venda + 2 Passos do Paraíso
    if  bTrapRaposa
    and (fMediaRapida < fMediaLenta)
    and (fMediaRapida < fMediaRapida[1])
    and (fMediaLenta < fMediaLenta[1])
    and ((Highest(fMediaRapida,pMediaRapida) - Lowest(fMediaRapida,pMediaRapida)) >= fVolMedia)
    then 
    begin
      bSinalVenda := true;
      PaintBar(clRed);
      PlotText("V", clRed, 3, 10, High + 5*MinPriceIncrement);
    end;
  end;

  // Apregoa ordens stop
  if bGraficoTemporalDiarioOuAcima then
  begin
    if bSinalCompra[1] then
    begin
      BuyStop(High[1] + 1*MinPriceIncrement, High[1] + cOffsetEmTicks*MinPriceIncrement);
      fStop := High[1] - Low[1];
    end;  
  
    if bSinalVenda[1] then
    begin
      SellShortStop(Low[1] - 1*MinPriceIncrement, Low[1] - cOffsetEmTicks*MinPriceIncrement);
      fStop := High[1] - Low[1];
    end;  
  end
  else
  begin
    if bSinalCompra then
    begin
      BuyStop(High + 1*MinPriceIncrement, High + cOffsetEmTicks*MinPriceIncrement);
      fStop := High - Low;
    end;  
  
    if bSinalVenda then
    begin
      SellShortStop(Low - 1*MinPriceIncrement, Low - cOffsetEmTicks*MinPriceIncrement);
      fStop := High - Low;
    end;  
  end;

  // Gerencia posição
  if IsBought then
  begin
    SellToCoverStop(buyPrice - fStop, buyPrice - fStop - cOffsetEmTicks*MinPriceIncrement); 
    SellToCoverLimit(BuyPrice + pRiscoGanho*fStop);

    // Proteção para pulo de stop devido à gaps
    if (Close < buyPrice - fStop - cOffsetEmTicks*MinPriceIncrement) 
    or (Close > BuyPrice + pRiscoGanho*fStop) then ClosePosition;
    // Encerra posição ao final do dia se grafico não for diário ou maior
    if (Time >= cEncerraPosicao) and 
       ((GraphicInterval = itMinute) and (GraphicOffset <= 15))
     then ClosePosition;
  end;

  if IsSold then
  begin
    BuyToCoverStop(sellPrice + fStop, sellPrice + fStop + cOffsetEmTicks*MinPriceIncrement); 
    BuyToCoverLimit(sellPrice - pRiscoGanho*fStop);

    // Proteção para pulo de stop devido à gaps
    if (Close > sellPrice + fStop + cOffsetEmTicks*MinPriceIncrement)
    or (Close < sellPrice - pRiscoGanho*fStop) then ClosePosition;
    // Encerra posição ao final do dia se grafico for menor que 15 MIN
    if (Time >= cEncerraPosicao) and 
       ((GraphicInterval = itMinute) and (GraphicOffset <= 15))
     then ClosePosition;
  end;

end;

 


   
yamilucas reacted
Citar
(@yamilucas)
Novo membro
Registrou: 1 ano atrás
Posts: 4
 

o risco ganho pode ser alterado ? como funciona essa variável inicial? pRiscoGanho(1.61)

 

input
  pRiscoGanho(1.61);
  pMediaRapida(9);
  pMediaLenta(81);

   
ReplyCitar