Estratégia de equilíbrio longo-curto com base em pontos de pivô e média móvel de mínimos quadrados


Data de criação: 2023-12-25 17:47:11 última modificação: 2023-12-25 17:47:11
cópia: 0 Cliques: 597
1
focar em
1623
Seguidores

Estratégia de equilíbrio longo-curto com base em pontos de pivô e média móvel de mínimos quadrados

Visão geral

Esta é uma estratégia de negociação quantitativa que só faz várias cabeças, que combina os benefícios da estratégia de inversão do ponto de eixo e da estratégia de mínimas duas vezes a média móvel. A estratégia segue a tendência principal no mercado de touros, fazendo mais para avaliar os sinais de inversão depois de observar a formação de um eixo na trajetória; ao mesmo tempo, exige que o preço de encerramento seja maior do que a mínima duas vezes a média móvel para abrir mais posições, tornando a estratégia mais estável.

Princípio da estratégia

A estratégia combina a estratégia de inversão do ponto central com a estratégia de mínimos de duplicado de médias móveis. A estratégia de inversão do ponto central calcula os preços mais altos e mais baixos de um determinado dia de negociação anterior, obtendo um traçado superior e inferior. Quando o preço se aproxima do traçado superior, é considerado um sinal de inversão.

Concretamente, a estratégia primeiro calcula os preços mais altos das últimas 3 linhas K e os preços mais baixos das últimas 16 linhas K, obtendo os pontos do eixo de cima e de baixo. Quando a linha superior se forma, abra uma posição maior; Quando a linha inferior se forma, leve. Ao mesmo tempo, exige que o preço de fechamento seja superior à média móvel mínima de 20 dias.

Vantagens estratégicas

  1. A combinação de vantagens de ambas as estratégias torna as decisões comerciais mais estáveis e confiáveis

  2. A estratégia de ponto central pode determinar o ponto de reversão, minimizar o risco de transação com o filtro de falsa ruptura de média móvel de 2x

  3. A maioria das pessoas espera que você faça mais do que você faz.

  4. Estratégias simples, claras, fáceis de entender e de otimizar

  5. Frequência de transação adequada para operações de linha média e longa

Análise de Riscos

  1. Não aproveitando a rápida queda do mercado

  2. Há um certo atraso e pode ter perdido algumas oportunidades de ganhar dinheiro.

  3. A conversão do urso para o boi gerará maiores perdas

Solução:

  1. Reduzir adequadamente os ciclos de cálculo e reduzir os atrasos

  2. Ajustar os parâmetros da média móvel para otimizar a participação

  3. Aumentar as estratégias de stop loss e reduzir as perdas individuais

Direção de otimização

  1. Adição de uma combinação de indicadores de tendência para uma maior precisão de julgamento

  2. Aumentar os resultados de previsão de modelos de aprendizagem de máquina para orientar decisões

  3. Combinação de indicadores de volatilidade para controlar o tamanho da posição

  4. Parâmetros de otimização para aumentar a probabilidade de vitória da estratégia

  5. Teste de dados com ciclos mais longos para verificar a estabilidade

Resumir

Esta estratégia integra os benefícios da estratégia de inversão do ponto central e da estratégia de menor duplicação da média móvel, controla o risco ao mesmo tempo em que julga a reversão da tendência e é uma estratégia robusta. Sua estrutura é simples, fácil de entender e testar, e é muito adequada para os iniciantes de aprendizagem e prática de negociação quantitativa.

Código-fonte da estratégia
/*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)