Neo traderBot

Neo traderBot

Você sabia?

Um backtesting adequado deve buscar simular situações práticas do mercado (slippage, custo de operação, etc...)

leaf leftleaf right
Notifications
Clear all

[Solucionado] Nao está executando com eu gostaria

2 Posts
2 Usuários
1 Reactions
193 Visualizações
(@paulo-ferreira)
Membro ativo
Registrou: 1 ano atrás
Posts: 5
Iniciador do tópico  

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;

 


   
Citar
(@admin)
Membro Admin
Registrou: 2 anos atrás
Posts: 216
 

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;

 


   
masker reacted
ReplyCitar