Montem esse codigo simples (coisa de iniciante) mas nao estou conseguindo entender porque as saidas não correspondem com os valores determinados pelo codigo. Na imagem anexa estou sinalizando a "saida" que nao atenderia aos requisitos do codigo.
voces podem me ajudar a identificar o erro do codigo?
ParametroLinhaRSIVenda(80);LinhaRSICompra(20);TempoRSI(12);TicksSaidaSL(60);TicksSaidaTP(125);Spread(25);
VarTP, SL, ForçarSaida : real;
beginTP := (TicksSaidaTP * MinPriceIncrement);SL := (TicksSaidaSL * MinPriceIncrement);ForçarSaida := (Spread * MinPriceIncrement);
//Color da Barra -----------------------------------------------
Se (RSI(TempoRSI,0) > (LinhaRSIVenda)) então paintbar(CLRed);Se (RSI(TempoRSI,0) < (LinhaRSICompra)) então paintbar(CLGreen);
//compra----------------------------------------------- Inicio Se (Not IsBought)e (RSI(TempoRSI,0) < LinhaRSICompra)e (RSI(TempoRSI,0)[1] < (LinhaRSICompra)) e (RSI(TempoRSI,0)[2] < (LinhaRSICompra))e (Fechamento[1] < Abertura[2]) entãoInicioBuyStop(Maxima,Maxima);Fim;
// Stop e Alvo Compra ----------------------------------------------- Se (IsBought) entãoInicioSellToCoverStop(BuyPrice - SL, BuyPrice - SL - ForçarSaida);SellToCoverLimit(SellPrice + TP);Fim;
// Reverter em sinal de Venda ----------------------------------------------- Se (IsBought) e (RSI(TempoRSI,0) > LinhaRSIVenda)e (RSI(TempoRSI,0)[1] > (LinhaRSIVenda)) e (RSI(TempoRSI,0)[2] > (LinhaRSIVenda))e (Fechamento[1] > Abertura[2]) entãoInicioReversePosition;Fim;Fim;
//VENDA -----------------------------------------------
InicioSe (Not IsSold) e (RSI(TempoRSI,0) > LinhaRSIVenda)e (RSI(TempoRSI,0)[1] > (LinhaRSIVenda)) e (RSI(TempoRSI,0)[2] > (LinhaRSIVenda))e (Fechamento[1] > Abertura[2]) entãoInicioSellShortStop(Minima,Minima);Fim;
//Stop da venda --------------------------------Se (IsSold) entãoInicioBuyToCoverStop(SellPrice + SL,SellPrice + SL + ForçarSaida );BuyToCoverLimit(SellPrice - TP);Fim;
// Reverter em sinal de Compra ----------------------------------------------- Se (IsSold) e (RSI(TempoRSI,0) < LinhaRSICompra)e (RSI(TempoRSI,0)[1] < (LinhaRSICompra)) e (RSI(TempoRSI,0)[2] < (LinhaRSICompra))e (Fechamento[1] < Abertura[2]) entãoInicioBuyStop(Maxima,Maxima);Fim;
Fim;
//Plotagem do indicador ----------------------------------------------- inicioPlot(rsi(TempoRSI,0));Fim;
fim;
Fala @paulo-ferreira!
Problema simples....só um erro no código onde você fez a gestão da posição comprada.
Observe que a função "SellToCoverLimit" está utilizando no cálculo o preço errado da posição. Deveria ser buyPrice.
Só isso! Abs!
// Stop e Alvo Compra ----------------------------------------------- Se (IsBought) então Inicio SellToCoverStop(BuyPrice - SL, BuyPrice - SL - ForçarSaida); SellToCoverLimit(SellPrice + TP); Fim;