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:
InputHorarioInicio (0930);HorarioFinal (1700); __Indicador ("Indicador");Periodo (30);Desvio (1.50);Stop (300);PeridoDI (34);
VarLRCcen,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ãoPaintBar(ClBlue)senao PaintBar(ClYellow);
Se (Time >= HorarioInicio) and (Time <= HorarioFinal) então
Inicio
//----- ADMINSTRACAO DE COMPRA InicioSe IsBought e Hasposition então InicioSellToCoverLimit(LRCcen-(1*MinPriceIncrement));SellToCoverStop(BuyPrice-Stop,SellPrice-Stop-400);Fim; Se (DIPDIM(PeridoDI)|1| > DIPDIM(PeridoDI)|0|) então ClosePosition; Fim;
//----- ADMINSTRACAO DE VENDAInicioSe isSold e Hasposition então InicioBuyToCoverLimit(LRCcen+(1*MinPriceIncrement));BuyToCoverStop(Sellprice+Stop,SellPrice+Stop+400);Fim;Se (DIPDIM(PeridoDI)|1| < DIPDIM(PeridoDI)|0|) então ClosePosition;Fim;
// ---- ABRIR OPERAÇÕESSe Not HasPosition e (Time > HorarioInicio) and (Time < HorarioFinal) entaoInicioSe (Fechamento > LRCCen) e (DIPDIM(PeridoDI)|1| > DIPDIM(PeridoDI)|0|) e (Maxima < LRCSup) ou (Maxima[1] < LRCSup) então InicioSellShortLimit(LRCsup+(1*MinPriceIncrement));Fim;
Se (Fechamento < LRCCen) e (DIPDIM(PeridoDI)|0| > DIPDIM(PeridoDI)|1|) e (Minima > LRCInf) ou (Minima[1] > LRCInf) então InicioBuyLimit(LRCinf-(1*MinPriceIncrement));Fim;Fim;Fim;Fim;
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çãoif (DIPDIM(PeridoDI)|1|) > (DIPDIM(PeridoDI)|0|) thenPaintBar(RGB(255,0,0))else if (DIPDIM(PeridoDI)|1|) < (DIPDIM(PeridoDI)|0|) thenPaintBar(RGB(0,255,0))else PaintBar(RGB(255,255,255));
espero ter ajudado
abraços
Mkw