A NeoTraderBot é a primeira comunidade aberta no Brasil com foco em compartilhar informações sobre automatização de estratégias
Senhores, já tentei de tudo e mais um pouco, mas não consigo encerrar as operação no mesmo dia...Conforme relatório do backtest do profit, sempre aparece uma operação q fica aberta para o dia subsequente. Não consigo achar o erro...A estratégia em questão é utilizando a banda de bollinger - "classico: fecho fora, fecho dentro" .
Input Desvio(2); MediaB(8); Alvo (1.6); Quant (100); Tempo (1730); Var BolChC: Float; BolChV: Float; StopV : Float; StopC : Float; bBarraDesejada : boolean; pDataDesejada,pHorarioDesejado : integer; pMargemMinutos: integer; Inicio BolChc := BollingerBands (Desvio, MediaB, 1)[1]; /// Superior BolChV := BollingerBands (Desvio, MediaB, 1)[0]; /// Inferior Se (IsSold) então //Saida para vendido Inicio //Alvo BuyToCoverLimit(Sellprice-(ABS(SellPrice-stopV)*alvo), quant) ; //STOP BuyToCoverStop (StopV, StopV); Fim; Se (IsBought) entao //Saida para comprado Inicio //Alvo //Alvo SellToCoverLimit (BuyPrice+(ABS(BuyPrice-stopC)*alvo), quant) ; //STOP SellToCoverStop (StopC, StopC); Fim; //// INICIO DO CODIGO PARA COMPRAR E FECHAR POSIÇÃO NO MESMO DIA//// begin pHorarioDesejado := Tempo; pMargemMinutos := 15; //Para Gráficos de Candle/Renko executados em tempo real if Time > pHorarioDesejado then //Para Gráficos de Renko, em backtesting, utiliza-se uma margem de tempo em torno do horário desejado //if (Time >= CalcTIme(pHorarioDesejado, -pMargemMinutos)) then begin bBarraDesejada := true; //Encerra posição caso esteja comprado/vendido if isBought or isSold then ClosePosition; end else bBarraDesejada := false; end; //// FIM DO CODIGO PARA COMPRAR E FECHAR POSIÇÃO NO MESMO DIA//// If (BuyPosition = 0) e (SellPosition = 0) entao //Verificar existe posição inicio //Condições de venda Se (fechamento [1]> BolChV) e (Fechamento < BolChV)entao Inicio SellShortStop (Minima - MinPriceIncrement, Minima - MinPriceIncrement, quant); StopV := Maxima + MinPriceIncrement; Fim; // Condição de compra Se (fechamento [1]< BolChc) e (Fechamento > BolChc)entao Inicio BuyStop (Maxima + MinPriceIncrement, Maxima + MinPriceIncrement, quant); StopC := Minima - MinPriceIncrement; Fim; fim; Fim;
Desde já, obrigado!
E aí @rafael-lobato! Tudo bem!
Cara, fiz alguns ajustes:
Parece-me que está funcionando e não está carregando posição para o dia seguinte.
Testa aí e confirma!
Abs!
Input Desvio(2); MediaB(8); Alvo (1.6); Quant (100); Tempo (1730); Var BolChC: Float; BolChV: Float; StopV : Float; StopC : Float; pDataDesejada,pHorarioDesejado : integer; pMargemMinutos: integer; Inicio BolChc := BollingerBands (Desvio, MediaB, 1)|1|; /// Superior BolChV := BollingerBands (Desvio, MediaB, 1)|0|; /// Inferior Se (IsSold) então //Saida para vendido Inicio //Alvo BuyToCoverLimit(Sellprice-(ABS(SellPrice-stopV)*alvo), Quant) ; //STOP BuyToCoverStop (StopV, StopV, Quant); Fim; Se (IsBought) entao //Saida para comprado Inicio //Alvo SellToCoverLimit (BuyPrice+(ABS(BuyPrice-stopC)*alvo), Quant) ; //STOP SellToCoverStop (StopC, StopC, Quant); Fim; //// INICIO DO CODIGO PARA COMPRAR E FECHAR POSIÇÃO NO MESMO DIA//// pHorarioDesejado := Tempo; pMargemMinutos := 15; //Para Gráficos de Candle/Renko executados em tempo real if Time >= pHorarioDesejado then if isBought or isSold then ClosePosition; //// FIM DO CODIGO PARA COMPRAR E FECHAR POSIÇÃO NO MESMO DIA//// If Not hasPosition entao //Verificar existe posição inicio //Condições de venda Se (fechamento [1]> BolChV) e (Fechamento < BolChV)entao Inicio if (Close < (Minima - MinPriceIncrement)) then SellShortLimit(Minima - MinPriceIncrement, Quant) else SellShortStop(Minima - MinPriceIncrement, Minima - MinPriceIncrement, Quant); StopV := Maxima + MinPriceIncrement; Fim; // Condição de compra Se (fechamento [1]< BolChc) e (Fechamento > BolChc)entao Inicio if (Close < (Maxima + MinPriceIncrement)) then BuyStop(Maxima + MinPriceIncrement, Maxima + MinPriceIncrement, Quant) else BuyLimit(Maxima + MinPriceIncrement, Quant); StopC := Minima - MinPriceIncrement; Fim; Fim; Fim;