Um backtesting adequado deve buscar simular situações práticas do mercado (slippage, custo de operação, etc...)
Boa noite,
Seria possível que ao ocorrer um stop loss (ou inverter uma posição com perdas), a automação somente volte a entrar em operações n minutos após o stop ou então quando o preço ficar acima ou abaixo do stop x pontos?
Tenho uma automação que é baseada no cruzamento de médias e uma operação pode ser encerrada por stop loss, ou pelo cruzamento no sentido oposto, invertendo a entrada. Mas em alguns momentos os preços ficam oscilando muito dentro de uma consolidação, invertendo a operação a toda hora, e normalmente com perdas.
Olá, isso deve funcionar.
const // MUDE AQUUI O INTERVALO DE MINUTOS cIntervaloOperacoes = 30; var iMinutosUltimaOperacao: integer; fMedia: float; bStopLoss: boolean; begin // INICIA CONTADOR DE TEMPO DA ULTIMA OPERAÇÃO if Time <> iMinutosUltimaOperacao then begin iMinutosUltimaOperacao := Time; end; // SUA ESTRATÈGIA AQUI // Condição para abrir nova posição caso não tenha levado nenhum stoploss nos útimos minutos definidos if Time - iMinutosUltimaOperacao < cIntervaloOperacoes then begin end; // ATUALIZA O CONTADOR DE TEMPO SE OCORRER UM STOPLOSS if bStopLoss then begin iMinutosUltimaOperacao := Time; bStopLoss := false; end; // VERIFICA SE STOPLOSS FOI ATINGIDO if isBought and (Close < buyPrice - 5*MinPriceIncrement) then begin SellShortAtMarket; bStopLoss := true; end; if isSold and (Close > sellPrice + 5*MinPriceIncrement) then begin BuyAtMarket; bStopLoss := true; end; // GESTÃO DE ORDEM COMPRADA if isBought then begin end; // GESTÃO DE ORDEM VENDIDA if isSold then begin end; end;
@masker Valeu. Ajudou muito! Obrigado!