Estratégia de negociação quantitativa de cruzamento de média móvel exponencial dupla


Data de criação: 2024-01-25 14:04:23 última modificação: 2024-01-25 14:04:23
cópia: 0 Cliques: 659
1
focar em
1617
Seguidores

Estratégia de negociação quantitativa de cruzamento de média móvel exponencial dupla

Visão geral

Esta estratégia é conhecida como estratégia de negociação de quantificação de cruzamento de linha de média de dois índices. A estratégia realiza negociações automatizadas através da computação de uma média móvel exponencial de dois índices (EMA) e do julgamento de pontos de compra e venda cruzados, combinados com o princípio de abertura de posição de negociação de negociação quantitativa.

Princípio da estratégia

A lógica central desta estratégia é baseada em médias móveis binárias. O indicador 1 é o EMA de 20 dias de curto prazo e o indicador 2 é o EMA de 50 dias de longo prazo. Quando o EMA de curto prazo atravessa o EMA de longo prazo, um sinal de compra é gerado; Quando o EMA de curto prazo atravessa o EMA de longo prazo, um sinal de venda é gerado.

Além disso, a estratégia também usa o indicador de quantificação Vortex para auxiliar na determinação de tendências e na geração de sinais de negociação. O indicador de Vortex determina a trajetória de alta e baixa através da comparação do valor do preço mais alto com o preço de fechamento de ontem e do preço mais baixo com o preço de fechamento de ontem, com períodos de 1 e 3 dias.

Quando o sinal de negociação é gerado, o risco é gerenciado de acordo com o módulo de gerenciamento de fundos incorporado na estratégia, em combinação com o princípio da proporção de ganho e perda. A estratégia permite que o stop loss e o stop loss sejam configurados para bloquear o lucro e controlar o risco.

Análise de vantagens

  • 1. Estratégia de integração de indicadores de quantificação de duplo cruzamento EMA e Vortex para aproveitar as vantagens do indicador e melhorar a precisão do sinal
  • 2. Sistemas de negociação automatizados, sem intervenção humana, reduzindo a probabilidade de erros humanos
  • 3. Cancelamento automático de perda, que limita o máximo de perda de uma única transação
  • 4. O módulo de gestão de fundos controla a proporção de capital investido em cada transação, controlando assim o risco de transação global

Análise de Riscos

  • 1. Os sinais de cruzamento EMA podem apresentar falsos sinais, e o indicador de quantificação Vortex não pode filtrar completamente os falsos sinais, portanto, existe uma certa probabilidade de perda
  • 2. O evento de Black Swan pode expandir diretamente os prejuízos de transações individuais.
  • 3. Retirar o controle dependendo da função de parada de perda, causando maiores perdas se a parada de perda for violada

Otimização:

  • 1. Pode ser testado para ajustar os parâmetros EMA e otimizar o sinal de cruzamento
  • 2. Pode ser combinado com mais indicadores de filtragem
  • 3. Parâmetros podem ser automaticamente otimizados por algoritmos de aprendizagem de máquina

Resumir

Esta estratégia é, em geral, uma estratégia típica de cruzamento de EMA duplo, que utiliza o cruzamento entre os diferentes parâmetros de EMA para determinar o momento de compra e venda do mercado, pertence à estratégia de negociação de linha curta e média. A maior vantagem da estratégia é o uso de indicadores quantitativos para filtragem de sinais e a realização de um sistema de negociação automatizado sem controle de valor humano, enquanto o Stop Loss Stop para controlar o risco, o desempenho é relativamente estável.

Código-fonte da estratégia
/*backtest
start: 2023-01-18 00:00:00
end: 2024-01-24 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/
// © smottybugger 

//@version= 5
strategy("The  Averages Moving_X_Vortex", shorttitle="2.5billion BTC lol" , calc_on_order_fills=true, calc_on_every_tick=true, commission_type=strategy.commission.percent, commission_value=0.02, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, margin_long=0, margin_short=0,overlay=true)
// Dual Vortex
period_1 = input(15, "short Time")
period_2 = input(25, "long time")
VMP = math.sum(math.abs(high - low[3]), period_1)
VMM = math.sum(math.abs(low - high[1]), period_2)
STR = math.sum(ta.atr(1), period_1)
STR2 = math.sum(ta.atr(1), period_2)
VXpower= (input(5,"Vortex Power")/10000)*close
shorterV =(VMP / STR)*VXpower
longerV = (VMM / STR2)*VXpower

// MACross
shortlen = input(20, "ShortMa")
longlen = input(29, "LongMA")
shorterMA = ta.sma(close, shortlen)
longerMA = ta.sma(close, longlen)

// Vortex "MACross Stabilized"
Varance = input(1, "Vortex Stabilize")
Vpercent = (Varance / 100)
shortV= ((((shorterMA-close)* Vpercent)+shorterV)/2)+close
longV = ((((longerMA -close )*Vpercent)+longerV)/2)+close

//MAcross vortex stabilized
Marance = input(1, "MACross Stabilize")
MApercent = Marance / 100
shortMA = ((((shorterMA-close)*MApercent)+shorterV)/2)+close
longMA = ((((longerMA-close)*MApercent)+longerV)/2)+close

//VMXadveraged Moving cross adveraged
VMXL=(longV+longMA)/2
VMXS=(shortV+shortMA)/2
VXcross= ta.cross(VMXS,VMXL) ? VMXS : na
VMXcross= ta.cross(VMXS,VMXL)

//plot
plot(VMXS,"BUY",color=#42D420)
plot(VMXL,"SELL",color=#e20420)
crossV= ta.cross(shortV, longV) ? shortV : na
plot(shortV ,"shortV", color=#42D420)
plot(longV,"longV", color=#e20420)
plot(crossV,"crossV", color=#2962FF, style=plot.style_cross, linewidth=4)
crossMA = ta.cross(shortMA, longMA) ? shortMA : na
plot(shortMA,"shortMA", color=#42D420)
plot(longMA,"longMA", color=#e20420)
plot(crossMA,"crossMA", color=#2962FF, style=plot.style_cross, linewidth=4)
plot(VXcross,"VMXcross",color=#2962FF, style= plot.style_cross,linewidth=4)
plot(close,color=#999999)

// Vortex Condistyle
is_Vlong =shortV< longV
is_Vshort =shortV>longV


// Vortex commands
Vlong =  ta.crossunder(longV, shortV)
Vshort =ta.crossover(shortV,longV)
VorteX = ta.cross(longV, shortV)

// MACross Conditions
is_MAlong = shortMA < longV
is_MAshort = shortMA > shortV


//VMX Conditions
is_VMXlong=VMXS<VMXL
is_VMXshort=VMXS>VMXL

// MA commands
MAlong = ta.crossunder(shortMA, longV)
MAshort =ta.crossover(shortMA, shortV)
MAcross =  ta.cross(shortMA, longMA)
 
//VMX COMMANss
VMXBUY=ta.crossover( VMXS,VMXL)
VMXSELL=ta.crossunder(VMXS,VMXL)

// Close Crossing PositionLMXs

CS=is_MAshort or is_VMXshort
CL= is_MAlong or is_VMXlong
OS=MAshort or VMXSELL
OL=MAlong or VMXBUY


if VMXcross
    strategy.close_all ("closed")

//if CS and  OL
    strategy.close("Short",comment="Short Closed")


//if CL and  OS
    strategy.close("Long",comment="Long Closed" ) 

//CA1= is_MAcross and is_VorteX
//if CA1
   // strategy.close_all(comment="X2X")

// Defalongyntry qty

if is_VMXlong and VMXSELL
    strategy.entry("sell",strategy.short)


if is_VMXshort and VMXBUY
    strategy.entry("buy",strategy.long)



// Stop Losses & Taking Profit
sllp = input(0, "Stop Loss Long")
sll = (1 - sllp / 100) * strategy.position_avg_price
is_sll = input(true, "Stop Long")

tplp = input(0, "Take Profit Long")
tpl = (1 + tplp / 100) * strategy.position_avg_price
is_tpl = input(true, "Take Long")

slsp = input(0, "Stop Loss Short")
sls = (1 + slsp / 100) * strategy.position_avg_price
is_sls = input(true, "Stop Short")

tpsp = input(0, "Take Profit Short")
tps = (1 - tpsp / 100) * strategy.position_avg_price
is_tps = input(true, "Take Short")

if (is_sll or is_sls) 
    strategy.close("Stop Losses", qty_percent=100)

if (is_tpl or is_tps) 
    strategy.close("Take Profits", qty_percent=100)


 //Strategy Backtest
//plot(strategy.equity, "Equity", color=color.red, linewidth=2, style=plot.style_areabr)