Estratégia baseada na tendência WaveTrend e CMF

Autora:ChaoZhang, Data: 2023-11-16 16:38:03
Tags:

img

Resumo

Esta estratégia combina o indicador WaveTrend e o indicador Chaikin Money Flow (CMF) para identificar a direção da tendência e seguir as tendências.

Estratégia lógica

O indicador WaveTrend pode identificar efetivamente a direção de tendência dos preços. Ele consiste em linha média do canal, média do canal e índice do canal. A linha média do canal é uma média móvel exponencial do preço, refletindo a tendência do preço. A média do canal é uma média móvel da linha média do canal, usada para localizar a linha média do canal. O índice do canal reflete o grau de desvio do preço da linha média do canal e gera sinais de sobrecompra / sobrevenda.

O indicador CMF pode julgar a entrada e saída de fundos e confirmar tendências. Este indicador é baseado na linha de acumulação/distribuição ajustada por volume, refletindo a comparação do poder de compra e venda. Um valor em torno de 0 indica um equilíbrio entre a entrada e saída de fundos. Abaixo de 0 indica a saída de fundos e acima de 0 indica a entrada de fundos.

Esta estratégia é executada em um período de tempo de 15 minutos. Em primeiro lugar, usa o indicador WaveTrend para determinar a direção da tendência do preço, em seguida, usa o indicador CMF para confirmar, a fim de seguir as tendências. Especificamente, quando o índice do canal WaveTrend está abaixo de -60 e o CMF é menor que -0,2, ele vai longo. Quando o índice do canal WaveTrend está acima de 60 e o CMF é maior que 0,2, ele vai curto. As condições de saída são baseadas principalmente no indicador CMF - fecha a posição longa quando o CMF é maior que 0,18, e fecha a posição curta quando o CMF é menor que -0,18.

Análise das vantagens

  1. O indicador WaveTrend pode determinar efetivamente a direcção da tendência dos preços.
  2. O indicador CMF pode confirmar a direcção da tendência e evitar transacções erradas.
  3. A combinação de WaveTrend e CMF pode alcançar a tendência ultra curto prazo.
  4. O prazo de 15 minutos torna-o mais adequado para negociações de curto prazo.

Análise de riscos

  1. A WaveTrend pode gerar sinais errados durante a consolidação.
  2. A CMF pode atrasar e perder pontos de virada da tendência.
  3. A negociação num único período de tempo apresenta riscos mais elevados, deve alargar o período de detenção.
  4. Falta de estratégia de stop loss, incapaz de controlar perdas individuais.

Soluções:

  1. Adicionar outros indicadores de confirmação para evitar sinais errados.
  2. Ajuste os parâmetros da CMF para maior sensibilidade.
  3. Aumentar o período de detenção para reduzir os riscos num único período.
  4. Adicionar parada de perda móvel, parada de equilíbrio, etc. para controlar a perda.

Optimização

  1. Adicione dimensionamento de posição para melhor acompanhamento da tendência.
  2. Adicionar estratégia de stop loss para limitar a perda única.
  3. Adicione indicadores como estocásticos para evitar erros de um único indicador.
  4. Teste diferentes períodos de espera para encontrar o ideal.
  5. Otimize os parâmetros da CMF para encontrar a melhor combinação.

Resumo

Esta estratégia usa a WaveTrend para determinar a tendência e a CMF para confirmar, para seguir a tendência de curto prazo. Suas vantagens estão na combinação razoável de indicadores e na tendência efetiva, com um período de tempo de 15 minutos, tornando-a adequada para negociação de curto prazo. Mas existem riscos, como sinais imprecisos e período de detenção muito curto. Melhorias futuras, como stop loss, otimização de parâmetros e mais filtragem de sinal, podem melhorar ainda mais sua estabilidade e lucratividade.


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

//@version=3
strategy(title = "CMF - WaveTrend", shorttitle = "CMF - WaveTrend", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.EUR)

//Chaikin Money Flow

len = input(20, minval=1, title="Length")
mas = input(title="Aggregation", defval="SUM", options=["SUM", "EMA", "WMA"])
e = input(10.0, title="Volume Exponent (0-10 reduces & 10+ increases volume effect)")
p = input(false, title="Show in Percentage")
mvs = input(false, "Factor in Price (Money Volume)")
src=input(hlc3, title="Source for price factor")

trl = min(low,close[1]), trh = max(high,close[1]) // 'true range' fixes issues caused by gaps in price
wv = pow(volume,e/10.0)*(mvs ? src : 1)
ad = (trh==trl ? 0 : (2*close-(trh+trl))/tr(true))*wv
cmf = mas=="SUM" ? sum(ad, len)/sum(wv, len) : mas=="EMA" ? ema(ad, len)/ema(wv, len) : mas=="WMA" ? wma(ad, len)/wma(wv, len) : na
cmf_p  = if p
    50*cmf+50
else
    cmf
b = p ? 50 : 0


//WaveTrend
n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
obLevel1 = input(60, "Over Bought Level 1")
obLevel2 = input(53, "Over Bought Level 2")
osLevel1 = input(-60, "Over Sold Level 1")
osLevel2 = input(-53, "Over Sold Level 2")
 
ap = hlc3 
esa = ema(ap, n1)
d = ema(abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, n2)
 
wt1 = tci
wt2 = sma(wt1,4)
// 


longCondition = wt1 < -60 and cmf < - 0.20
if (longCondition)
 
    strategy.entry("My Long Entry Id", strategy.long)
    
 
shortCondition = wt1 > 60 and cmf > 0.20
if (shortCondition)
 
    strategy.entry("My Short Entry Id", strategy.short)
    
closeLongCondition = cmf_p > 0.18 ? true : false
closeShortCondition = cmf_p < -0.18 ? true : false
    
    
strategy.close("My Long Entry Id", when=(closeLongCondition == true))
strategy.close("My Short Entry Id", when=(closeShortCondition == true))

Mais.