Este artigo detalha uma estratégia de negociação quantitativa baseada em um indicador MACD unificado. Esta estratégia é otimizada para a estratégia MACD clássica para melhorar a qualidade do sinal.
Princípios estratégicos
O conceito central da estratégia é o de tratar os indicadores MACD tradicionais de forma homogênea para reduzir a taxa de erro. Os passos são os seguintes:
Calcular as médias móveis de Hull de curto e longo prazo para determinar as grandes tendências com base na sua relação cruzada;
Calcular a diferença do MACD;
Tratamento de unificação dos indicadores MACD dentro de um determinado ciclo;
Calcular a linha média do MACD de restituição, formando um gatilho de transação;
Quando o MACD de unificação é alinhado com o gatilho acima, faça mais, e quando o gatilho abaixo, faça vazio;
Filtragem em relação a uma relação linear para evitar a perda de tendências;
Estabelecer um ponto de parada de perda para controlar o risco de uma única transação.
O tratamento de unificação pode reduzir a amplitude absoluta do diferencial MACD, reduzindo o ruído e melhorando a qualidade do sinal. O filtro de tendência também evita a operação inversa devido ao ajuste local.
A vantagem estratégica
A principal vantagem desta estratégia, em comparação com a estratégia MACD simples, é o tratamento de unificação, que reduz a taxa de erro do MACD e melhora a precisão do sinal.
Outra vantagem é a adição de filtros de discernimento de tendências, evitando a operação inversa na tendência. Isso aumenta a estabilidade da estratégia.
Por fim, a definição de um limite de perda (stop loss) também permite controlar o risco e o lucro de cada transação, permitindo uma gestão ativa do dinheiro.
C. Riscos potenciais
Apesar da otimização da estratégia, os riscos a serem observados na prática são:
A primeira é que os parâmetros são mais difíceis de otimizar, e a configuração inadequada pode levar a uma sobre-adaptação.
Em segundo lugar, a paralisação de perdas muito próxima pode ser rompida, aumentando os prejuízos.
Por fim, quando a tendência muda, os sinais podem estar atrasados e não reagir a tempo.
Quatro conteúdos, resumo
Este artigo descreve detalhadamente uma estratégia de negociação quantitativa para o tratamento unificado dos indicadores MACD. Esta estratégia é uma melhoria na estratégia MACD clássica, que pode melhorar efetivamente a qualidade do sinal e entrar no mecanismo de gerenciamento de risco.
/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
// Normalized MACD but heavily modified by SeaSide420. Normalized MACD v420
strategy("Normalized MACD (v420)",shorttitle="NmacD(v420)",overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=1440, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)
p=input(ohlc4)
jah=input(title="HullMA cross",defval=21)
tsp = input(34,title='Trigger')
np = input(50,title='Normalize')
SL = input(defval=-420.00, title="Stop Loss in $", step=1)
TP = input(defval=31.00, title="Target Point in $", step=1)
ot=1
n2ma=2*wma(p,round(jah/2))
nma=wma(p,jah)
diff=n2ma-nma
sqn=round(sqrt(jah))
n2ma1=2*wma(p[2],round(jah/2))
nma1=wma(p[2],jah)
diff1=n2ma1-nma1
sqn1=round(sqrt(jah))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
sh=n1
lon=n2
ratio = min(sh,lon)/max(sh,lon)
Mac = (iff(sh>lon,2-ratio,ratio)-1)
MacNorm = ((Mac-lowest(Mac, np)) /(highest(Mac, np)-lowest(Mac, np)+.000001)*2)- 1
MacNorm2 = iff(np<2,Mac,MacNorm)
Trigger = wma(MacNorm2, tsp)
Hist =(MacNorm2-Trigger)
Hist2= Hist>1?1:Hist<-1?-1:Hist
teh=MacNorm2+MacNorm2[2]-MacNorm2[1]
closelong = strategy.openprofit<SL or strategy.openprofit>TP or teh[1]<Trigger[1] and n1<n2[1]
if (closelong)
strategy.close("Long")
closeshort = strategy.openprofit<SL or strategy.openprofit>TP or teh[1]>Trigger[1] and n1>n2[1]
if (closeshort)
strategy.close("Short")
longCondition = Trigger<0 and teh>Trigger and MacNorm>Trigger and strategy.opentrades<ot
if (longCondition)
strategy.entry("Long",strategy.long)
shortCondition = Trigger>0 and teh<Trigger and MacNorm<Trigger and strategy.opentrades<ot
if (shortCondition)
strategy.entry("Short",strategy.short)