A idéia central desta estratégia é determinar a direção da tendência usando o padrão de vela
Verifique se o padrão contido entre os ciclos ocorre. A lógica específica é: o alto da vela atual é menor do que o alto da vela anterior, e o baixo da vela atual é maior do que o baixo da vela anterior.
Determine se a vela anterior foi alta ou baixa. Se o fechamento foi maior do que o aberto, foi alta. Se o fechamento foi menor do que o aberto, foi baixa.
Se a vela anterior foi de alta e o padrão contido ocorre, coloque uma ordem de compra stop no alto da vela anterior mais 10% de seu intervalo.
Se a vela anterior foi de baixa e o padrão contido ocorrer, coloque uma ordem de stop de venda no mínimo da vela anterior menos 10% do seu intervalo.
Uma vez que a ordem de parada é acionada e a posição é aberta, defina o stop loss e tire lucro.
Se se formar outro padrão de barra interna, feche primeiro as posições existentes e coloque depois novas ordens pendentes.
As vantagens desta estratégia incluem:
Ele utiliza a lógica inerente dos candelabros e fornece um tempo de entrada preciso.
As regras são simples e fáceis de seguir para negociação real.
O stop loss e o take profit baseados no intervalo anterior das velas ajudam a controlar o risco.
Novas ordens pendentes são colocadas sempre que um padrão qualificado aparece, permitindo-nos seguir a nova tendência.
Há também alguns riscos:
O padrão contido nem sempre resulta em inversão de tendência ou aceleração.
A distância de stop loss pode ser demasiado pequena para suportar grandes flutuações no mercado.
A meta de lucro pode ser muito ampla, impedindo lucros oportunos.
A estratégia baseia-se mais nas tendências dos mercados. O potencial de lucro é limitado durante a consolidação.
A elevada frequência das transacções leva a elevados custos de transacção.
Soluções:
Adicionar outros indicadores para confirmar os sinais e reduzir os falsos sinais.
Ampliar ligeiramente o stop loss, mas não mais de 50% do intervalo anterior das velas.
Redução do objectivo de lucro a cerca de 50% da faixa anterior.
Otimizar a gestão de capitais, reduzir o tamanho das posições individuais para diversos mercados.
Afrouxar os critérios de entrada para reduzir a frequência das negociações.
Algumas maneiras de otimizar a estratégia:
Adicione um indicador de tendência como o MACD para determinar a direção da tendência, evitando falhas durante a consolidação.
Utilizar técnicas mais avançadas de stop loss, como trailing stop ou profit protection stop loss.
Teste diferentes índices de stop loss e take profit para encontrar os parâmetros ideais.
Adicione a lógica de reentrada para capturar a tendência novamente após a parada de perda.
Otimizar o dimensionamento das posições com base na volatilidade do mercado.
Otimizar a gestão do capital, como o dimensionamento das posições fracionárias fixas.
Teste a estratégia em diferentes produtos e prazos.
Em resumo, esta é uma estratégia que usa o padrão contido entre ciclos para determinar pontos de virada da tendência e colocar ordens pendentes para capturar inversões de tendência. Ele tem as vantagens de sinais de entrada claros, regras simples e riscos controláveis, mas também tem alguns riscos de sinal falso e espaço para otimização. Podemos melhorar ainda mais sua estabilidade e lucratividade combinando filtros de tendência, otimizando paradas, ajustando tamanhos de posição, etc. É mais adequado para mercados de tendência e precisa ser otimizado e testado para diferentes condições de mercado antes do uso real para maximizar sua eficácia.
/*backtest start: 2023-01-01 00:00:00 end: 2023-03-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // Inside Bar Momentum Strategy // As defined on Babypips.com // https://www.babypips.com/trading/forex-inside-bar-20170113 // strategy("Babypips: Inside Bar Momentum Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=5) From_Year = input(defval = 2018, title = "From Year") From_Month = input(defval = 1, title = "From Month", minval = 1, maxval = 12) From_Day = input(defval = 1, title = "From Day", minval = 1, maxval = 31) To_Year = input(defval = 9999, title = "To Year") To_Month = input(defval = 1, title = "To Month", minval = 1, maxval = 12) To_Day = input(defval = 1, title = "To Day", minval = 1, maxval = 31) Start = timestamp(From_Year, From_Month, From_Day, 00, 00) // backtest start window Finish = timestamp(To_Year, To_Month, To_Day, 23, 59) // backtest finish window Window = true Stop_Buy_Perc = input(10, "Stop Buy Order Percentage From Previous Candle's Range")/100 Stop_Loss_Perc = input(20, "Stop Loss Distance from High/Low of Previous Candle")/100 Take_Prof_Perc = input(80, "Take Profit Distance from High/Low of Previous Candle")/100 Risk = input(2, "Percentage Of EQUITY to risk per trade", step=0.1, minval=0, maxval=100)/100 Inside_Bar = high[1] > high[0] and low[1] < low[0] Prev_Range = high[1] - low[1] Bullish = open[1] < close[1] Bearish = open[1] > close[1] // Get Key Levels Long_Stop_Buy_Level = high[1] + (Prev_Range * Stop_Buy_Perc) Short_Stop_Buy_Level = low[1] - (Prev_Range * Stop_Buy_Perc) Long_Stop_Loss_Level = high[1] - (Prev_Range * Stop_Loss_Perc) Short_Stop_Loss_Level = low[1] + (Prev_Range * Stop_Loss_Perc) Long_Take_Prof_Level = high[1] + (Prev_Range * Take_Prof_Perc) Short_Take_Prof_Level = low[1] - (Prev_Range * Take_Prof_Perc) // Position Sizing long_qty = floor((strategy.equity * Risk) / (Long_Stop_Buy_Level - Long_Stop_Loss_Level)) short_qty = floor((strategy.equity * Risk) / (Short_Stop_Loss_Level - Short_Stop_Buy_Level)) // -------------------------- LONG CONDITIONS --------------------------------// // The first candlestick must be bullish (green or white) and if the second // candlestick is completely contained by the first, set a buy stop order at // the first candle’s high plus 10% of its range (high minus low). // Place the stop loss at the first candle’s high minus 20% of its range // and set the target at the first candle’s high plus 80% of its range // If another inside bar pattern forms, the current position should be closed // or the pending buy/sell order must be canceled and entry orders must be // updated to the latest candles. Long_Condition = Window and Inside_Bar and Bullish if (Long_Condition) // Incase we still have a buy stop order in the market strategy.cancel_all() // Close any existing positions according to the rules strategy.close_all() strategy.entry("Bullish IB", strategy.long, stop=Long_Stop_Buy_Level) strategy.exit("Bullish Exit","Bullish IB", stop=Long_Stop_Loss_Level, limit=Long_Take_Prof_Level) // -------------------------- SHORT CONDITIONS -------------------------------// // The first candlestick must be bearish (red or black) and if the second // candlestick is completely contained by the first, set a sell stop order at // the first candle’s low minus 10% of its range (high minus low). // Place the stop loss at the first candle’s low plus 20% of its range and // set the target at the first candle’s low minus 80% of its range. // If another inside bar pattern forms, the current position should be closed // or the pending buy/sell order must be canceled and entry orders must be // updated to the latest candles. Short_Condition = Window and Inside_Bar and Bearish if (Short_Condition) // Incase we still have a buy stop order in the market strategy.cancel_all() // Close any existing positions according to the rules strategy.close_all() strategy.entry("Bearish IB", strategy.short, stop=Short_Stop_Buy_Level) strategy.exit("Bearish Exit","Bearish IB", stop=Short_Stop_Loss_Level, limit=Short_Take_Prof_Level) // ----------------------------- PLOTTING ------------------------------------// plotshape(Inside_Bar, style=shape.arrowdown, location=location.abovebar, color=purple)