Neo traderBot

Neo traderBot

Você sabia?

Abordamos o tema de automatização de estratégias em NTSL, MQL5 e NinjaScript!

leaf leftleaf right
Notifications
Clear all

Correção de erro

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

Pessoal, estou com o codigo abaixo que funciona perfeitamente.  Mas em alguns momentos o PROFIT me dispara uma mensagem " ESTADO DA ORDEM NÃO PERMITE CANCELAMENTO".  Não consegui encontrar uma solução.  Agradecerei muito se alguém identificar.   codigo abaixo:

Input
HorarioInicio (0930);
HorarioFinal (1700);
__Indicador ("Indicador");
Periodo (30);
Desvio (1.50);
Stop (300);
PeridoDI (34);

Var
LRCcen,LRCsup,LRCinf : Float;
Begin

if (Time >= HorarioFinal) then ClosePosition;

LRCcen := LinearRegressionChannel(Periodo,True,Desvio,True,Desvio);
LRCsup := LinearRegressionChannel(Periodo,True,Desvio,True,Desvio)|1|;
LRCinf := LinearRegressionChannel(Periodo,True,Desvio,True,Desvio)|2|;

{Plotagem Indicador}
Plot (LRCcen); SetPlotColor(1,clCinza);
Plot2 (LRCsup); SetPlotColor(2,255);
Plot3 (LRCinf); SetPlotColor(3,clLime);

Se (DIPDIM(PeridoDI)|1|) > (DIPDIM(PeridoDI)|0|) então
PaintBar(ClBlue)
senao PaintBar(ClYellow);

Se (Time >= HorarioInicio) and (Time <= HorarioFinal) então

Inicio

//----- ADMINSTRACAO DE COMPRA
Inicio
Se IsBought e Hasposition então
Inicio
SellToCoverLimit(LRCcen-(1*MinPriceIncrement));
SellToCoverStop(BuyPrice-Stop,SellPrice-Stop-400);
Fim;
Se (DIPDIM(PeridoDI)|1| > DIPDIM(PeridoDI)|0|) então ClosePosition;
Fim;

//----- ADMINSTRACAO DE VENDA
Inicio
Se isSold e Hasposition então
Inicio
BuyToCoverLimit(LRCcen+(1*MinPriceIncrement));
BuyToCoverStop(Sellprice+Stop,SellPrice+Stop+400);
Fim;
Se (DIPDIM(PeridoDI)|1| < DIPDIM(PeridoDI)|0|) então ClosePosition;
Fim;

// ---- ABRIR OPERAÇÕES
Se Not HasPosition e (Time > HorarioInicio) and (Time < HorarioFinal) entao
Inicio
Se (Fechamento > LRCCen) e (DIPDIM(PeridoDI)|1| > DIPDIM(PeridoDI)|0|) e (Maxima < LRCSup) ou (Maxima[1] < LRCSup) então
Inicio
SellShortLimit(LRCsup+(1*MinPriceIncrement));
Fim;

Se (Fechamento < LRCCen) e (DIPDIM(PeridoDI)|0| > DIPDIM(PeridoDI)|1|) e (Minima > LRCInf) ou (Minima[1] > LRCInf) então
Inicio
BuyLimit(LRCinf-(1*MinPriceIncrement));
Fim;
Fim;
Fim;
Fim;

 

 

 


   
Citar
 Mkw
(@mkw)
Membro eminente
Registrou: 1 ano atrás
Posts: 23
 

Paulo, bom dia

Acredito que esse tipo de erro seja somente um BUG, pois aparece na minha plataforma em algum momento.

Esse setup é interessante, mas precisa fazer uns ajustes no seu codigo e testar no backtesting com break point .

//Coloração
if (DIPDIM(PeridoDI)|1|) > (DIPDIM(PeridoDI)|0|) then
PaintBar(RGB(255,0,0))
else if (DIPDIM(PeridoDI)|1|) < (DIPDIM(PeridoDI)|0|) then
PaintBar(RGB(0,255,0))
else
PaintBar(RGB(255,255,255));

espero ter ajudado

abraços

Mkw


   
ReplyCitar