Esta estratégia emprega um sistema de média móvel dupla para identificar potenciais oportunidades de ruptura em ações ou criptomoedas selecionadas.
A estratégia utiliza duas médias móveis simples (SMA) com períodos diferentes como sinais de negociação. A primeira SMA tem um período mais longo para representar a direção geral da tendência. A segunda SMA tem um período mais curto para capturar flutuações de preços de curto prazo.
Quando a SMA de curto prazo cruza acima da SMA de longo prazo de baixo, sinaliza uma tendência de alta nos preços em geral, portanto, a estratégia abre uma posição longa.
Além disso, a estratégia tem condições de "supervenda" e "supercompra" para evitar a negociação em situações extremas.
Há ainda mais espaço para otimizar esta estratégia:
Esta estratégia combina os pontos fortes da negociação de tendência e pullback usando um sistema de média móvel dupla para detectar oportunidades. Ao mesmo tempo, as condições de sobrecompra / sobrevenda incorporadas evitam a abertura desnecessária de posições. É uma estratégia de negociação quantitativa muito prática que vale a pena pesquisa e otimização mais profundas.
/*backtest start: 2023-02-20 00:00:00 end: 2024-02-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @version=5 strategy("Profitable Pullback Trading Strategy", overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Inputs ma_length1 = input.int(280,'MA length 1', step = 10,group = 'Moving Avg. Parameters', inline = 'MA') ma_length2 = input.int(13,'MA length 2', step = 1,group = 'Moving Avg. Parameters', inline = 'MA') sl = input.float(title="Stop Loss (%)", defval=0.07, step=0.1, group="Moving Avg. Parameters") too_deep = input.float(title="Too Deep (%)", defval=0.27, step=0.01, group="Too Deep and Thin conditions", inline = 'Too') too_thin = input.float(title="Too Thin (%)", defval=0.03, step=0.01, group="Too Deep and Thin conditions", inline = 'Too') // Calculations ma1 = ta.sma(close,ma_length1) ma2 = ta.sma(close,ma_length2) too_deep2 = (ma2/ma1-1) < too_deep too_thin2 = (ma2/ma1-1) > too_thin // Entry and close condtions var float buy_price = 0 buy_condition = (close > ma1) and (close < ma2) and strategy.position_size == 0 and too_deep2 and too_thin2 close_condition1 = (close > ma2) and strategy.position_size > 0 and (close < low[1]) stop_distance = strategy.position_size > 0 ? ((buy_price - close) / close) : na close_condition2 = strategy.position_size > 0 and stop_distance > sl stop_price = strategy.position_size > 0 ? buy_price - (buy_price * sl) : na // Entry and close orders if buy_condition strategy.entry('Long',strategy.long) if buy_condition[1] buy_price := open if close_condition1 or close_condition2 strategy.close('Long',comment="Exit" + (close_condition2 ? "SL=true" : "")) buy_price := na plot(ma1,color = color.blue) plot(ma2,color = color.orange)