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

[Solucionado] Setup - Cruzamento de 3 médias

1 Posts
1 Usuários
0 Reactions
398 Visualizações
(@admin)
Membro Admin
Registrou: 3 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 clássico de Cruzamento de 3 médias (Triple crossover) da Comunidade NeoTraderBot.

 

input
  pQtdePeriodosMediaRapida(4);
  pQtdePeriodosMediaIntermediaria(9);
  pQtdePeriodosMediaLenta(18);

var
  bSinalCompra,bSinalVenda,bSinalLiquida       : boolean;
  fMediaRapida,fMediaIntermediaria,fMediaLenta : float;

begin
  //Inicializa variáveis a cada processamento
  bSinalCompra := False;
  bSinalVenda := False;
  bSinalLiquida := False;

  fMediaRapida := MediaExp(pQtdePeriodosMediaRapida, Close);
  fMediaIntermediaria := MediaExp(pQtdePeriodosMediaIntermediaria, Close);
  fMediaLenta := MediaExp(pQtdePeriodosMediaLenta, Close);

  //Plota indicadores
  SetPlotColor(1,clRed);
  SetPlotWidth(1,2);
  SetPlotStyle(1,psDash);
  SetPlotColor(2,clOlive);
  SetPlotWidth(2,2);
  SetPlotColor(3,clWhite);
  SetPlotWidth(3,2);
  Plot(fMediaRapida);
  Plot2(fMediaIntermediaria);
  Plot3(fMediaLenta);

  //Se já houver média lenta, realiza cálculos de entrada/saida/liquidação
  if (fMediaLenta <> 0) then
  begin
    if  (fMediaRapida >= fMediaIntermediaria)
    and (fMediaIntermediaria > fMediaLenta)
    and (fMediaIntermediaria[1] <= fMediaLenta[1])  
    then bSinalCompra := True;

    if  isBought
    and (fMediaRapida < fMediaIntermediaria)
    and (fMediaRapida[1] >= fMediaIntermediaria[1]) 
    then bSinalLiquida := True;

    if  (fMediaRapida <= fMediaIntermediaria)
    and (fMediaIntermediaria < fMediaLenta)
    and (fMediaIntermediaria[1] >= fMediaLenta[1])  
    then bSinalVenda := True;

    if  isSold
    and (fMediaRapida > fMediaIntermediaria)
    and (fMediaRapida[1] <= fMediaIntermediaria[1]) 
    then bSinalLiquida := True;
  end;

  if Not hasPosition and bSinalCompra then BuyAtMarket;
  if Not hasPosition and bSinalVenda then SellShortAtMarket;
  if hasPosition and bSinalLiquida then ClosePosition;

end;

   
Citar