Abordamos o tema de automatização de estratégias em NTSL, MQL5 e NinjaScript!
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;