
Confira os nossos eBooks, Snippets e Fóruns produzidos para cada plataforma!
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?
Parametro
LinhaRSIVenda(80);
LinhaRSICompra(20);
TempoRSI(12);
TicksSaidaSL(60);
TicksSaidaTP(125);
Spread(25);
Var
TP, SL, ForçarSaida : real;
begin
TP := (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ão
Inicio
BuyStop(Maxima,Maxima);
Fim;
// Stop e Alvo Compra -----------------------------------------------
Se (IsBought) então
Inicio
SellToCoverStop(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ão
Inicio
ReversePosition;
Fim;
Fim;
//VENDA -----------------------------------------------
Inicio
Se (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ão
Inicio
SellShortStop(Minima,Minima);
Fim;
//Stop da venda --------------------------------
Se (IsSold) então
Inicio
BuyToCoverStop(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ão
Inicio
BuyStop(Maxima,Maxima);
Fim;
Fim;
//Plotagem do indicador -----------------------------------------------
inicio
Plot(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;