Um backtesting adequado deve buscar simular situações práticas do mercado (slippage, custo de operação, etc...)
Bom dia Pessoal!
Estou com um código que não está executando o Stop e o Alvo na quantidade informada.
Ex: Para sair com 300 de Alvo, mas na maioria das vezes sai com menos ou mais, e o Stop da mesma forma.
Se alguém puder me orientar eu agradeço muito...
Sou novo no canal e iniciando em programaçõ, mas desde já quero agradecer e parabenizar a iniciativa da Neo TraderBot e do Forum.
Entrada TamanhoCandles (500); PorcCandles (0,61); Parar (150); Alvo (300); era bSinalCompra,bSinalVenda : booleano; fAlvo, fStop : float; começar bSinalCompra := false; bSinalVenda := false; se not hasposition então começar //PADRÃO IDENTIFICAÇÃO VENDA se (range > TamanhoCandles) e ((fechamento - abertura) >= (range) * PorcCandles) então começar paintbar(ClGreen); bSinalVenda := true; fim; //PADRÃO IDENTIFICAÇÃO COMPRA se (range > TamanhoCandles) e ((abertura - fechamento) >= (range) * PorcCandles) então começar barra de pintura(Clred); bSinalCompra := true; fim; fim; //TRATAMENTO DOS SINAIS DE IDENTIFICAÇÃO COMPRA / VENDA se bSinalVenda então começar SellShortAtMarket(); fStop := fechamento + Stop; fAlvo := fechamento - Alvo; fim; se bSinalCompra então começar CompreNoMercado(); fStop := fechamento - Stop; fAlvo := fechamento + Alvo; fim; // GESTÃO DAS POSIÇÕES se IsSold então começar BuyToCoverStop(fStop); BuyToCoverStop(fAlvo); fim; se IsBought então começar SellToCoverStop(fStop); SellToCoverStop(fAlvo); fim; fim;
b
Olá, o seu sinal de compra e venda não estaria invertido? Bom de qualquer forma quando for usar a saída do Alvo, use a função "BuyToCoverLimit" e "SellToCoverLimit" ok.
Testa aí para ver se é o que você quer.
input TamanhoCandles (500); PorcCandles (0.61); stop (150); Alvo (300); var bSinalCompra,bSinalVenda : booleano; fAlvo, fStop : float; begin bSinalCompra := false; bSinalVenda := false; If not (hasposition) then begin //PADRÃO IDENTIFICAÇÃO VENDA if (range > TamanhoCandles) e ((fechamento - abertura) >= (range) ) então begin paintbar(ClGreen); bSinalVenda := true; end; //PADRÃO IDENTIFICAÇÃO COMPRA if (range > TamanhoCandles) e ((abertura - fechamento) >= (range) * PorcCandles) então begin paintbar(Clred); bSinalCompra := true; end;; end; //TRATAMENTO DOS SINAIS DE IDENTIFICAÇÃO COMPRA / VENDA if bSinalVenda then begin SellShortAtMarket(); fStop := fechamento + Stop; fAlvo := fechamento - Alvo; end; if bSinalCompra then begin BuyAtMarket(); fStop := fechamento - Stop; fAlvo := fechamento + Alvo; end; // GESTÃO DAS POSIÇÕES if IsSold then begin BuyToCoverStop(fStop); BuyToCoverLimit(fAlvo); end; if IsBought then begin SellToCoverStop(fStop); SellToCoverLimit(fAlvo); end; end;