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.
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.
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.
Os principais riscos desta estratégia são:
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.
A cruz de ouro quantitativa em si tem certa histerese, o que pode levar a entrada tardia e perdas amplificadas.
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.
A estratégia pode ser otimizada nos seguintes aspectos:
Aumentar as estratégias de stop loss para controlar a perda única com métodos de stop loss móvel e stop loss overnight.
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.
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.
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.
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)