Esta estratégia constrói um canal de preços baseado no indicador Bollinger Bands e no indicador Momentum Oscillating Moving Average, gerando sinais de negociação quando o preço atravessa o limite superior ou inferior do canal.
A estratégia constrói um canal de preços usando a faixa média de Bollinger e a média móvel oscilante de momento. A faixa média adota a faixa média de Bollinger de 21 períodos. As faixas superior e inferior se estendem para cima e para baixo por uma faixa porcentual, respectivamente. A média móvel oscilante de momento se estende ou encolhe perto dos níveis de sobrecompra ou sobrevenda com base na faixa média. Quando o preço atravessa a faixa superior, vá longo.
Especificamente, a faixa média de Bollinger é calculada como:
Middle Band = Moving Average of N-period closing price
A faixa superior e a faixa inferior são calculadas da seguinte forma:
Upper Band = Middle Band + WidthDev * N-period Bollinger standard deviation
Lower Band = Middle Band - WidthDev * N-period Bollinger standard deviation
Onde WidthDev representa a faixa percentual estendida para cima e para baixo.
O Momentum Oscillating Moving Average se estende ou encolhe com base na faixa média de acordo com certas regras. Quando o mercado se torna sobrecomprado ou sobrevendido, ele se estende mais longe da faixa média para fornecer mais oportunidades de longo ou curto. Quando o mercado se acalma, ele se contrai em direção à faixa média.
Em resumo, esta estratégia descreve um canal de preços usando Bollinger Bands e determina o tempo de entrada usando a Momentum Oscillating Moving Average, realizando a negociação de ruptura.
Reflete a volatilidade do mercado As bandas de Bollinger podem refletir a volatilidade do mercado e as tendências em mudança em tempo real.
Reduz os falsos sinais O efeito de alongamento da média móvel oscilante de momento pode efetivamente reduzir os sinais falsos gerados pelas bandas de Bollinger.
Temporário captura de inversão de tendência O cruzamento das faixas superiores e inferiores do BB e da média móvel oscilante do momento fornece um momento e um preço vantajosos para gerar sinais de negociação, que podem efetivamente captar os principais ajustes de alta e baixa e captar as inversões de tendência em tempo hábil.
Parâmetros BB incorretos A configuração inadequada dos parâmetros BB, como o período de cálculo e o multiplicador do desvio-padrão, pode conduzir a um espaçamento demasiado largo ou demasiado estreito entre as faixas, gerando sinais falsos excessivos e prejudicando a estabilidade da estratégia.
Amplitude de oscilação excessiva A amplitude de oscilação excessivamente grande da média móvel oscilante de momento pode resultar em pontos de stop loss muito distantes, aumentando o risco de perda.
Reversão atrasada
Quando o mercado está oscilando ou sem tendência, os sinais de negociação da BB e da Momentum Oscillating Moving Average podem atrasar-se, não refletindo as alterações de preço no tempo, causando um risco de reversão atrasado.
Otimizar parâmetros BB Teste diferentes períodos, multiplicadores de desvio padrão para encontrar combinações ideais de parâmetros que forneçam uma melhor frequência de sinal e menos falsos sinais.
Otimizar os parâmetros da média móvel Teste diferentes amplitudes e períodos de oscilação para encontrar parâmetros que captem melhor as tendências e reduzam o atraso do sinal.
Adicionar condições de filtro Adicionar filtros como volumes de negociação baseados em sinais cruzados para excluir sinais comerciais ineficientes.
Combinação de estratégias Combinar esta estratégia com outras estratégias de stop loss ou estratégias de aprendizagem de máquina para controlar ainda mais os riscos e melhorar a estabilidade.
Esta estratégia combina os pontos fortes das Bandas de Bollinger adaptativas e da Média Móvel Oscilante de Momento, alcançando uma integração de seguir tendências e capturar inversões de tendências.
/*backtest start: 2022-12-29 00:00:00 end: 2024-01-04 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // Hull Cloud v2 by SEASIDE420 strategy("Hull Moving Average Cloud v2", shorttitle="hull_cloud_v2", overlay=true, commission_type=strategy.commission.percent, commission_value=0.075, default_qty_type=strategy.percent_of_equity, max_bars_back=200, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0) hullperiod=input(title="HullMA Period",defval=210, minval=1) Width=input(title="Cloud Width",defval=200, minval=2) price=input(ohlc4,title="Price data") FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2017, title = "From Year", minval = 2017) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) window() => true n2ma=2*wma(price,round(hullperiod/2)) nma=wma(price,hullperiod) diff=n2ma-nma sqn=round(sqrt(hullperiod)) n2ma1=2*wma(price[1],round(hullperiod/2)) nma1=wma(price[1],hullperiod) diff1=n2ma1-nma1 n1=wma(diff,sqn) n2=wma(diff1,sqn) Hull_Line=n1-n1[1]/n2[1] Hull_retracted=if(n1>n2) Hull_retracted=Hull_Line-Width else Hull_retracted=Hull_Line+Width c1=(Hull_retracted*n1)/price[1] c2=(Hull_retracted*n2)/price[1] c4=c1>c2?green:red c2p=plot(c2, color=black, linewidth=1) c3p=plot(price, color=black, linewidth=1) fill(c3p, c2p, color=c4, transp=75) plot(cross(c1, c2) ? c1 : na, style = circles,color=c4, linewidth = 4) if (price<c2) strategy.close("BUY", when=window()) if (price>c2) strategy.close("SELL", when=window()) if (price[1]>c2 and price[1]>c1) strategy.entry("BUY",strategy.long, when=window()) if (price[1]<c1 and price[1]<c2) strategy.entry("SELL",strategy.short, when=window())// /L'-, // ,'-. ` ```` / L '-, // . _,--dMMMM\ ` ` ` '`.. / '-, // : _,--, )MMMMMMMMM),. ` ,<> /_ '-,' // ; ___,--. \MM( `-' )M//MM\ ,',.; .-'* ; .' // | \MMMMMM) \MM\ ,dM//MMM/ ___ < ,; `. )`--' / // | \MM()M MMM)__ /MM(/MP' ___, \ \ ` `. `. /__, ,' // | MMMM/ MMMMMM( /MMMMP'__, \ | / `. `-,_\ / // | MM /MMM---' `--'_ \ |-' |/ `./ .\----.___ // | /MM' `--' __,- \"" |-' |_, `.__) . .F. )-. // | `--' \ \ |-' |_, _,-/ J . . . J-'-. `-., // | __ \`. | | | \ / _ |. . . . \ `-. F // | ___ / \ | `| ' __ \ | /-' F . . . . \ '` // | \ \ \ / | __ / \ | |,-' __,- J . . . . . \ // | | / |/ __,- \ ) \ / |_,- __,--' |. .__.----,' // | |/ ___ \ |'. |/ __,--' `.-;;;;;;;;;\ // | ___ \ \ | | ` __,--' /;;;;;;;;;;;;. // | \ \ |-'\ ' __,--' /;;;;;;;;;;;;;;\ // \ | | / | __,--' `--;;/ \;-'\ // \ | |/ __,--' / / \ \ // \ | __,--' / / \ \ // \|__,--' _,-;M-K, ,;-;\ // <;;;;;;;; '-;;;; // :D