Um backtesting adequado deve buscar simular situações práticas do mercado (slippage, custo de operação, etc...)
Fala mestre sou eu de novo rsrs
Fiz uma estratégia para seleção de ativos em tendencia > "Screening"
não quero que quando o preço estiver entre as medias apareça no Screening > em anexo print e abaixo código
TCOMPRA:= Basicamente é assim quando o preço estiver acima das medias 535,45,30,22 e 13 períodos esta em uma tendencia de alta, não quero que pegue se estiver no médio dessas medias.
Na tendencia de baixa ao contrario no caso
var
mm13,mm22,mm30,mm45,mm535 : real;
TCOMPRA, TVENDA,TA,TB : Booleano;
begin
//Declarando iniciando variavel
mm13 := MediaExp(13,close);
mm22 := MediaExp(22,close);
mm30 := MediaExp(30,close);
mm45 := MediaExp(45,close);
mm535 := MediaExp(535,close);
TCOMPRA:= (((FECHAMENTO[0] > FECHAMENTO[1] ) and( MINIMA[0] > MINIMA[1])))
and (((FECHAMENTO[0] > mm535) and (mm13 > mm22)) and (mm30 > mm45));
TVENDA:= (((FECHAMENTO[0] < FECHAMENTO[1] ) and( MINIMA[0] < MINIMA[1]))
and (((FECHAMENTO[0] < mm535) and (mm13 < mm22)) and (mm30 < mm45)));
begin
if ( TVENDA ) or (TCOMPRA) then
begin
PaintBar(clAmarelo);
//Alert(clAmarelo);
select;
end;
setPlotStyle(2,psSolid);
Plot(mm13);
Plot2(mm22);
Plot3(mm30);
Plot4(mm45);
Plot5(mm535);
end;
end;
E aí, @thiago! Tudo bem?
A ajuste é bem simples...basta incluir condições a mais aí nos seus sinais de compra e venda.
Fiz o ajuste considerando que você queira que as médias estejam alinhadas, ou seja, em uma alta a mm13 > mm22 > mm30 > mm45 > mm535 E Fechamento > mm13.
O raciocínio é análogo na tendência de baixa e mantive a sua condição em relação à mínima do Candle.
Espero que lhe ajude aí!
Grande abs!
var mm13,mm22,mm30,mm45,mm535 : real; TCOMPRA, TVENDA,TA,TB : Booleano; begin //Declarando iniciando variavel mm13 := MediaExp(13,close); mm22 := MediaExp(22,close); mm30 := MediaExp(30,close); mm45 := MediaExp(45,close); mm535 := MediaExp(535,close); TCOMPRA := (FECHAMENTO[0] > FECHAMENTO[1]) and (MINIMA[0] > MINIMA[1]) and (mm13 > mm22) and (mm22 > mm30) and (mm30 > mm45) and (mm45 > mm535) and (Fechamento > mm13); TVENDA := (FECHAMENTO[0] < FECHAMENTO[1]) and (MINIMA[0] < MINIMA[1]) and (mm13 < mm22) and (mm22 < mm30) and (mm30 < mm45) and (mm45 < mm535) and (Fechamento < mm13); begin if ( TVENDA ) or (TCOMPRA) then begin PaintBar(clAmarelo); //Alert(clAmarelo); select; end; setPlotStyle(2,psSolid); Plot(mm13); Plot2(mm22); Plot3(mm30); Plot4(mm45); Plot5(mm535); end; end;