Esta é uma estratégia de negociação quantitativa de longo prazo que combina as vantagens da reversão do ponto de pivô e das estratégias de média móvel menor quadrado. Segue a tendência principal durante um mercado de alta e determina os sinais de reversão após observar o trilho superior do ponto de pivô para ir longo. Ao mesmo tempo, requer que o preço de fechamento esteja acima da média móvel menor quadrada antes de abrir posições longas para tornar a estratégia mais estável.
A estratégia integra a inversão do ponto de pivô e as estratégias de média móvel menos quadrada. A estratégia de inversão do ponto de pivô calcula os preços mais altos e mais baixos durante um certo número de dias de negociação para obter os trilhos superior e inferior. Quando os preços atravessam o trilho superior, é julgado como um sinal de reversão. A média móvel de menores quadrados é um indicador de tendência que pode aproximar melhor os preços. Esta estratégia é longa quando o trilho superior do ponto de pivô é formado e o preço de fechamento é maior que a linha menor quadrada.
Especificamente, a estratégia primeiro calcula o preço mais alto das últimas 3 barras e o preço mais baixo das últimas 16 barras para obter os trilhos de ponto de pivô superior e inferior. Ele vai longo quando o trilho superior é formado. Quando o próximo trilho inferior é formado, ele fecha as posições. Ao mesmo tempo, requer que o preço de fechamento seja maior que a média móvel de mínimos quadrados de 20 dias antes de abrir posições longas.
Combina os pontos fortes de duas estratégias para decisões comerciais mais estáveis e fiáveis
A estratégia de ponto pivô avalia os pontos de reversão, enquanto a LSMA filtra falsos breakouts, reduzindo os riscos comerciais
Só dura muito tempo, de acordo com as expectativas psicológicas da maioria das pessoas
Lógica de estratégia simples e clara, fácil de compreender e otimizar
Frequência de negociação moderada, adequada para operações de médio a longo prazo
Incapacidade de aproveitar oportunidades em rápido declínio
Existe um certo atraso, pode perder algumas oportunidades de ascensão
Perdas maiores quando a tendência do mercado se inverte
Soluções:
Redução adequada do ciclo de cálculo para reduzir o atraso
Ajustar os parâmetros de MA para otimizar a participação
Adicionar stop loss para reduzir a perda única
Adicionar vários indicadores de tendência para melhorar a precisão
Incorporar a previsão de aprendizagem de máquina para orientar decisões
Combinar indicadores de volatilidade para controlar o dimensionamento das posições
Otimizar parâmetros para melhorar a taxa de vitória
Teste dados de período de tempo mais longo para verificar a estabilidade
Esta estratégia integra os pontos fortes da reversão de ponto de pivô e estratégias LSMA para controlar riscos ao julgar reversões de tendência. Com uma estrutura simples para fácil compreensão e teste, é perfeito para os iniciantes aprenderem e praticarem.
/*backtest start: 2022-12-18 00:00:00 end: 2023-12-24 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //@author exlux99 strategy(title = "Pivot Reversal Upgraded long only", overlay = true, pyramiding=1,initial_capital = 100, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.1) ///////////// //time fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2010, title = "From Year", minval = 1970) //monday and session // To Date Inputs toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2031, title = "To Year", minval = 1970) startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true // length = input(title="Length MA", type=input.integer, defval=20) offset = 0//input(title="Offset", type=input.integer, defval=0) src = input(close, title="Source") lsma = linreg(src, length, offset) //LSMA leftBars = input(3) rightBars = input(16) swh = pivothigh(leftBars, rightBars) swl = pivotlow(leftBars, rightBars) swh_cond = not na(swh) hprice = 0.0 hprice := swh_cond ? swh : hprice[1] le = false le := swh_cond and time_cond? true : (le[1] and high > hprice ? false : le[1]) //leverage multiplier=input(1.0, step=0.5) g(v, p) => round(v * (pow(10, p))) / pow(10, p) risk = input(100) leverage = input(1.0, step = 0.5) c = g((strategy.equity * leverage / open) * (risk / 100), 4) //entry strategy.entry("long", strategy.long,c, when=le and close > lsma, comment="long", stop=(hprice + syminfo.mintick) * multiplier) swl_cond = not na(swl) lprice = 0.0 lprice := swl_cond ? swl : lprice[1] se = false se := swl_cond ? true : (se[1] and low < lprice ? false : se[1]) strategy.close("long", when=se)