
A NeoTraderBot é a primeira comunidade aberta no Brasil com foco em compartilhar informações sobre automatização de estratégias
Boa tarde, esse código roda no backtesting em Mini contratos de Dolar "WDO", intraday, 5,12 min, mas quando tento rodar ele no DOLFUT para fazer backtesting e comparar os resultados ele não roda. Alguém saberia o motivo e como corrigir?
Obs. A reentrada "preço médio" ou "Martingale" é proposital.
input BollingerLenght(19); BollingerMult(2); BollingerMaType(0); StrategyDirection (2) //0. Long, 1. Short, 2. Both //HORÁRIO DA ESTRATÉGIA HorarioIncio(905); HorarioLimite(1600); HorarioFim(1730); DayTrade(1); var bbUpper,bbLower : Float; sinalC,sinalV : Boolean; saidaC,saidaV : Boolean; dentroHorario : Boolean; Begin // ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ // REGRAS DO SETUP ==================================== bbUpper := BollingerBands(BollingerMult,BollingerLenght,BollingerMaType)|0|; bbLower := BollingerBands(BollingerMult,BollingerLenght,BollingerMaType)|1|; bbBasis := media(BollingerLenght, close); dentrohorario := (Time >= HorarioIncio) and (TIME <= HorarioLimite); sinalC := (close[1] < bbLower[1]) and (close > bbLower); sinalV := (close[1] > bbUpper) and (close < bbUpper); saidaC := (close > bbBasis); saidaV := (close < bbBasis); //Define entradas ========================================== {StrategyDirection 0. Long, 1. Short, 2. Both} If (sinalC) and ((StrategyDirection = 0) or (StrategyDirection = 2)) then BuyAtMarket(1); If (sinalV) and ((StrategyDirection = 1) or (StrategyDirection = 2)) then SellShortAtMarket(1); //Buscar Saídas no alvo ====================================== SellToCoverLimit (bbBasis); BuyToCoverLimit (bbBasis); //Fecha Posições no final do dia ================================ If (DayTrade = 1) then begin If (Time >= HorarioFim) then ClosePosition; End; End;
Olá @Credson!
É só tirar a quantidade de contratos das ordens de compra e venda que funciona. Pelo menos aqui rodou para o DOLFUT e INDFUT.
{StrategyDirection 0. Long, 1. Short, 2. Both} If (sinalC) and ((StrategyDirection = 0) or (StrategyDirection = 2)) then BuyAtMarket; If (sinalV) and ((StrategyDirection = 1) or (StrategyDirection = 2)) then SellShortAtMarket;
Opa, @credson!
O lote padrão de negociação de contrato cheio, seja dólar ou índice é de 5 contratos.
Você perceberá que a estratégia funciona passando como parâmetro nas ordens uma quantidade múltipla de 5 para os contratos cheios.
Ao não fornecer parâmetro, a ordem será executada com o lote mínimo.
Quando se especifica uma quantidade que não é múltipla de lote mínimo, o Profit ignora o comando.
abs!