Um backtesting adequado deve buscar simular situações práticas do mercado (slippage, custo de operação, etc...)
Quero saber como faço no meu codigo para minhas ordens nao sairem no proximo candle, elas só ficam na tela enquando o candle da condição valida esta aberta, quando o candle fecha as ordens some da tela, quero que elas permanecam até a proxima condição,, Codigo abaixo:
input FastAverage(21); SlowAverage(8); pQtdePeriodosAnaliseVolat(100); var sAvgFast : Float; sAvgSlow : Float; sPrevAvgFast : Float; sPrevAvgSlow : Float; valorA :real; ValorB :real; amplitude :real; p0, p1, p2, p3, p4, p5,var2,var1 : real; contador, contador2 :integer; begin // Armazena os valores das médias em variáveis de apoio sAvgFast := MediaExp(FastAverage, Close); sAvgSlow := MediaExp(SlowAverage, Close); sPrevAvgFast := sAvgFast[1]; sPrevAvgSlow := sAvgSlow[1]; var2 := p3-4 * MinPriceIncrement; var1 := p3+4 * MinPriceIncrement; if (BuyPosition = 0) and (SellPosition = 0) and (sPrevAvgFast < sPrevAvgSlow) and (sAvgFast > sAvgSlow) and (contador=0) then BEGIN ValorA := abs(LOW); ValorB := abs(HIGH); amplitude := abs(ValorB-ValorA) ; p0 := valorA + (amplitude * 0); p1 := valorA + (amplitude * 0.382); p2 := valorA + (amplitude * 0.5); p3 := valorA + (amplitude * 0.618); p4 := valorA + (amplitude * 1); //abertura do candle p5 := valorB - (amplitude * 1.61); //stop ///////////////////////////// BuyStop(p2); PaintBar(clVerde); end; if isBought then begin SellToCoverLimit(p3); SellToCoverStop(p5 - 8 * MinPriceIncrement,buyposition); end; //FECHAMENTO //FIM ORDEM DE COMPRA ACIMA E CODIÇÃO DE FECHAMENTO ABAIXO SE CRUZAR MEDIAS. if (BuyPosition=1)and(SellPosition=0) and (sPrevAvgFast > sPrevAvgSlow) and (sAvgFast < sAvgSlow) then BEGIN ClosePosition; PaintBar(clblue); If (hasPendingOrders) then CancelPendingOrders; end; //////////////////////////////////// if contador=0 then begin HorizontalLine(p0, clVermelho); HorizontalLine(p1, clVerdeClaro); HorizontalLine(p2, clVerdeClaro); HorizontalLine(p3, clVerdeClaro); HorizontalLine(p4, clVerde); HorizontalLine(p5, clVermelho); contador := contador+ 2; end; if (BuyPosition = 0) and (SellPosition = 0)and (sPrevAvgFast > sPrevAvgSlow) and (sAvgFast < sAvgSlow) and (contador=2) then begin ValorA := abs(LOW); ValorB := abs(HIGH); amplitude := abs(ValorB-ValorA) ; p5 := valorA + (amplitude * 0); p4 := valorA + (amplitude * 0.382); p3 := valorA + (amplitude * 0.5); p2 := valorA + (amplitude * 0.618); p1 := valorA + (amplitude * 1); //abetura do candle p0 := valorA + (amplitude * 1.61); //stop //////////////////////////////////////// SellShortStop(p2); PaintBar(ClRed); end; if IsSold then begin BuyToCoverLimit(p3); BuyToCoverStop(p0 + 8 * MinPriceIncrement,sellposition); end; //FIM DA ORDE DE VENDA //FIM ORDEM DE VENDA ACIMA E CODIÇÃO DE FECHAMENTO ABAIXO SE CRUZAR MEDIAS. if (BuyPosition=0)and(SellPosition=1) AND (sPrevAvgFast < sPrevAvgSlow) and (sAvgFast > sAvgSlow) then BEGIN ClosePosition; PaintBar(clblue); If (hasPendingOrders) then CancelPendingOrders; end; //////////////////////////////////////////////// if (contador=2) then begin HorizontalLine(p0, clVermelho); HorizontalLine(p1, clVerde); HorizontalLine(p2, clVerdeClaro); HorizontalLine(p3, clVerdeClaro); HorizontalLine(p4, clVerdeClaro); HorizontalLine(p5, clVermelho); contador := contador - 2; end; end; end;
Bom dia,
Você esta usando entradas e saídas de fibonacci em pontos fixo, tente pensar como ponto móvel, usando highest e lowest e adicionando um ponto ou mais pontos de fibonacci. Veja exemplo do tradingview e no final tem o codigo em aberto: https://www.tradingview.com/script/SWe51Ddl-Fibonacci-Golden-Wave-Flux-Charts/
Espero ter ajudado.
Mkw
minha ordem ela plota na tela no ponto X DA FIBO, o candle fecha ela some da tela, ai o preço sobe e fecharia la no meu alvo, ou desce e fecharia no meu alvo, e nao tenho mais ordem na tela rsrss, quero que elas fiquem travada até a reversão da tendencia..