Estratégia Quantitativa da Cruz de Ouro

Autora:ChaoZhang, Data: 2023-11-22 14:39:33
Tags:

img

Resumo

Esta estratégia calcula um indicador de volume líquido personalizado para implementar uma estratégia de negociação de compra no cruzamento dourado e venda no cruzamento da morte.

Princípio da estratégia

A lógica central da estratégia é calcular um indicador de volume líquido (NV) personalizado. O indicador NV julga a direção das mudanças de preço. Se positivo, ele toma o volume diário. Se negativo, ele toma o valor negativo do volume diário. Se inalterado, ele leva 0. Isso pode refletir mais claramente a relação entre as mudanças de preço e volume.

A estratégia então calcula a linha média móvel simples de 3 dias do indicador NV, respectivamente, como a linha cruzada dourada e a linha cruzada da morte.

Além disso, a estratégia também define horários de início e de fim parametrizados para controlar os horários de negociação.

Vantagens da estratégia

A maior vantagem desta estratégia é que a estratégia é simples e clara, fácil de entender, configurações de parâmetros flexíveis, variedades de negociação personalizáveis, horários de negociação, etc. Além disso, esta estratégia pertence a uma estratégia de tendência que pode efetivamente capturar as tendências de preços, reduzir a frequência de negociação e alcançar retornos mais elevados.

Riscos da Estratégia

Os principais riscos desta estratégia são:

  1. A estratégia diária não pode responder prontamente às mudanças nas tendências de preços, podendo perder algumas oportunidades de negociação ou falhar em deter as perdas a tempo.

  2. A cruz de ouro quantitativa em si tem certa histerese, o que pode levar a entrada tardia e perdas amplificadas.

  3. Incapaz de filtrar eficazmente o ruído do mercado e suscetível a armadilhas.

As médias móveis podem ser utilizadas de forma dinâmica, combinadas com outros indicadores para reduzir os riscos.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Aumentar as estratégias de stop loss para controlar a perda única com métodos de stop loss móvel e stop loss overnight.

  2. Aumentar os indicadores de filtragem e utilizar o MACD, o KDJ e outros indicadores para filtrar sinais falsos e melhorar a estabilidade da estratégia.

  3. Optimização de parâmetros, busca iterativa da combinação ideal de parâmetros através de algoritmos genéticos, cadeias de Markov e outros métodos.

  4. A carteira estratégica pode ser combinada com outras estratégias não relacionadas para diversificar ainda mais os riscos e aumentar os rendimentos globais.

Conclusão

Esta estratégia implementa uma tendência simples e eficaz seguindo cruzes de ouro quantitativas. Embora haja um certo grau de histerese, as configurações dos parâmetros são flexíveis e fáceis de entender. É uma estratégia adequada para iniciantes praticarem. Através da otimização contínua, o efeito da estratégia pode ser gradualmente melhorado e os riscos reduzidos.


/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-15 03:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="@DankCoins - Customized Net Volume")
src = input(defval = close, title = "VA Source")
nv = change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume



// Inputs //
VHigh = input(defval = 50, title = "VHigh Amount")
VLow = input(defval = -50, title = "VLow Amount")


// === INPUT BACKTEST RANGE ===
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 = 2018, title = "From Year", minval = 2012)
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 = 2012)

MAV1 = sma(volume, 3)
MAV2 = -sma(volume, 3)

enterShort = crossunder(nv, MAV1)
exitShort = crossunder(nv, MAV2)
enterLong = crossover(nv, MAV2)
exitLong = crossover(nv, MAV1)

// Time Function 
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"


strategy.entry(id="Long Entry", long=true, when=enterLong and window())
strategy.entry(id="Short Entry", long=false, when=enterShort and window())
strategy.exit("Exit Long", from_entry = "Long Entry",  when=exitLong and window())
strategy.exit("Exit Short", from_entry = "Short Entry",  when=exitShort and window())


// Plot
plot(nv, color=blue, title="NV")
plot(VHigh, color=red)
plot(VLow, color=red)
plot(MAV1, color=green)
plot(MAV2, color=green)

Mais.