Neo traderBot

Neo traderBot

Você sabia?

Um backtesting adequado deve buscar simular situações práticas do mercado (slippage, custo de operação, etc...)

leaf leftleaf right
Notifications
Clear all

SETUP TRAP DE RAPOSA

2 Posts
2 Usuários
1 Reactions
316 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: 12 meses 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