Um backtesting adequado deve buscar simular situações práticas do mercado (slippage, custo de operação, etc...)
Gostaria de tirar uma dúvida, programei um robo que faz uma compra (com ordem limite) em uma média x, quando a diferença de 2 médias é y pontos e tem um stop de z pontos. Acontece que as vezes ele é stopado, e ainda da as condições para entrar no trade , então logo que é stopado, ele recompra, e eu não quero isso. Como faço para impedir de fazer uma compra logo depois de ser stopado? Desde já agradeço!
Olá Renan!
Uma forma de impedir de fazer a compra logo depois de ser stopado é utilizar um contador de barras. Mas poderia-se pensar diversas outras formas, como por exemplo, o preço movimentar x% ou y ticks.
Fiz o código abaixo de exemplo no caso de aguardar Barras após um loss. Este código funciona para backtesting. No caso de aplicar em um gráfico com dados tick a tick ou módulo de automação, a lógica precisa ser refinada pois os contadores devem atuar apenas no primeiro tick de cada barra.
Espero que lhe ajude. Grande abs!
const iBarrasAEsperarAposLoss = 3; var fResultadoDia: float; iData, iHorarioBarra: integer; iTimeOut: integer; begin //Zera a variavel de resultado diário if iData <> Date then begin fResultadoDia := 0; iData := Date; end; fResultadoDia := DailyResult(false); //Houve prejuízo na ultima operação if fResultadoDia < fResultadoDia[1] then begin iTimeOut := iBarrasAEsperarAposLoss; iHorarioBarra := Time; end; //Aguarda TimeOut if iTimeOut <> 0 then begin if Time <> iHorarioBarra then begin iHorarioBarra := Time; iTimeOut := iTimeOut - 1; end; end else begin // Abertura de posições if (not hasPosition) and (iTimeOut = 0) then BuyAtMarket; end; // Gestão das posições if isBought then begin SellToCoverStop(buyprice - 20*MinPriceIncrement, buyprice - 40*MinPriceIncrement); SellToCoverLimit(buyPrice + 60*MinPriceIncrement); end; end;
Possa ser que seja parecido a dúvida com a situação do amigo aí, a minha programação é baseado em fechamento de reversão mas eu queria bloquear o envio de uma nova ordem após um loss para evitar dias de tendência forte, caso o preço esteja subindo e faça uma venda e essa venha a dá loss, gostaria de impedir novas vendas e só liberar qnd tivesse um gain na compra