Estratégia Intertemporal de Média Móvel Ponderada Baseada na Volatilidade Real


Data de criação: 2024-01-17 15:09:28 última modificação: 2024-01-17 15:09:28
cópia: 1 Cliques: 572
1
focar em
1617
Seguidores

Estratégia Intertemporal de Média Móvel Ponderada Baseada na Volatilidade Real

Visão geral

Esta estratégia utiliza o True Range e a média móvel ponderada (WMA) para construir um indicador de longo prazo para julgar a tendência. Ao mesmo tempo, possui um mecanismo de acréscimo de pirâmide com vários níveis de posição acumulados, bem como vários mecanismos de parada de perdas, com o objetivo de buscar um lucro estável.

Princípio da estratégia

A estratégia primeiro calcula a amplitude de onda ascendente (sub) e a amplitude de onda descendente (baja), e depois calcula o WMA dos ciclos de linha rápida (corto) e lenta (largo), respectivamente. O diferencial da linha rápida e lenta é novamente calculado através do WMA para o indicador (ind). Quando o indicador atravessa 0, gera um sinal de compra e, quando atravessa 0, gera um sinal de venda.

Após a entrada no mercado, a estratégia prevê 5 posições, de acordo com a equação ((um dobro) de forma acumulada para a realização de uma posição de pirâmide. Ao mesmo tempo, é configurado um mecanismo de parada de perda, depois de abrir a posição deve julgar se a flutuação atual está abaixo da linha de parada de perda, para controlar o risco.

Análise de vantagens

A estratégia integra mecanismos de julgamento intercalar, pirâmide de acréscimo de risco e de stop loss múltiplos, que permitem controlar o risco de forma eficiente e buscar lucros estáveis.

O julgamento entre períodos estabelece um sistema de julgamento de tendências por meio de combinações de linhas rápidas e lentas, que podem filtrar efetivamente o ruído do mercado e identificar os pontos de mudança de tendência. O acréscimo da pirâmide pode gerar mais lucros no início da tendência, e o mecanismo de parada múltipla pode controlar efetivamente os perdas individuais.

Análise de Riscos

O principal risco da estratégia é que pode haver eventos inesperados que levam a uma rápida reversão do mercado, provocando um cutoff de perda. Além disso, a configuração inadequada dos parâmetros também pode afetar a estabilidade da estratégia.

A estabilidade da estratégia pode ser aumentada com a flexibilização adequada da linha de parada para o risco de uma reversão do mercado. A configuração de parâmetros de otimização, o ajuste de parâmetros de ciclo, o número de posições, etc.

Direção de otimização

A estratégia pode ser melhorada em vários aspectos:

  1. Aumentar o julgamento de indicadores estatísticos, em combinação com os parâmetros de correção de indicadores como taxa de flutuação e volume de transações, para tornar a estratégia mais adaptável.

  2. Aumentar o julgamento de modelos de aprendizagem de máquina, usando modelos de aprendizagem profunda como o LSTM para auxiliar o julgamento e melhorar a precisão da estratégia.

  3. Otimizar o mecanismo de gerenciamento de posições, considerando a possibilidade de ajustar a amplitude de aumento de posições em relação à flutuação, para que o crescimento de posições seja mais racional.

  4. Combinado com o modelo de arbitragem de futuros, o uso de arbitragem de futuros controla ainda mais o risco.

Resumir

Esta estratégia é, em geral, uma estratégia de tendências transcíclicas baseada em indicadores reais de amplitude de ondas, com aumento de risco em pirâmide e mecanismo de parada múltipla, que pode controlar eficazmente o risco, buscar lucros estáveis, é uma estratégia de negociação quantitativa muito prática. Mas ainda é necessário prestar atenção à inversão de tendências e à otimização de parâmetros, que pode ser otimizada ainda mais em termos de estatística, aprendizado de máquina e outros.

Código-fonte da estratégia
/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © MaclenMtz

//@version=5
strategy("[MACLEN] Rangos", shorttitle="Rangos [https://t.me/Bitcoin_Maclen]", overlay=false )

//------WINDOW----------

i_startTime = input(defval = timestamp("01 Jan 2022 00:00 -0700"), title = "Start Time", group = "Backtest Window")
i_endTime = input(defval = timestamp("31 Dec 2025 00:00 -0700"), title = "End Time")
window = true

//-----------------------------

sube = close>close[1] ? ta.tr : 0
baja = close<close[1] ? ta.tr : 0

corto = input(10)
largo = input(30)
suavizado = input(10)

fastDiff = ta.wma(sube, corto) - ta.wma(baja,corto)
slowDiff = ta.wma(sube, largo) - ta.wma(baja, largo)
ind = ta.wma(fastDiff - slowDiff, suavizado)

iColor = ind>0 ? color.green : ind<0 ? color.red : color.black
plot(ind, color=iColor)
plot(0, color=color.white)

long = ind[1]<ind and ind[2]<ind[1] and ind<0
short = ind[1]>ind and ind[2]>ind[1] and ind>0

plotshape(long and not long[1], style = shape.xcross, color=color.green, location=location.bottom, size=size.tiny)
plotshape(short and not short[1], style = shape.xcross, color=color.red, location=location.top, size=size.tiny)

//Contratos
contrato1 = input(50000)/(16*close)
c1 = contrato1
c2 = contrato1
c3 = contrato1*2
c4 = contrato1*4
c5 = contrato1*8

//cap_enopentrade = strategy.opentrades == 1 ? c1: strategy.opentrades == 2 ? c1+c2: strategy.opentrades == 3 ? c1+c2+c3: strategy.opentrades == 4 ? c1+c2+c3+c4: strategy.opentrades == 5 ? c1+c2+c3+c4+c5 : 0
openprofit_porc = math.round((close-strategy.position_avg_price)/strategy.position_avg_price * 100,2)

porc_tp = input.float(6.5)
safe = input(-6)

//----------------Strategy---------------------------

if strategy.opentrades == 0
    strategy.entry('BUY1', strategy.long, qty=c1, when = long and not long[1] and window)

if strategy.opentrades == 1
    strategy.entry('BUY2', strategy.long, qty=c2, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 2
    strategy.entry('BUY3', strategy.long, qty=c3, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 3
    strategy.entry('BUY4', strategy.long, qty=c4, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 4
    strategy.entry('BUY5', strategy.long, qty=c5, when = long and not long[1] and window and openprofit_porc<safe)

min_prof = strategy.openprofit>0

strategy.close_all(when=short and min_prof)

plot(openprofit_porc)