Estratégia de negociação com MACD duplo StochRSI

Autora:ChaoZhang, Data: 22 de setembro de 2023 16:55:55
Tags:

Resumo

Esta estratégia combina indicadores MACD duplos e o oscilador StochRSI para sinais comerciais. O MACD duplo usa parâmetros diferentes para efeitos rápidos e lentos, enquanto o StochRSI verifica a divergência de momento.

Estratégia lógica

Os sinais comerciais baseiam-se:

  • MACD duplo: o MACD rápido usa um período de retrocesso curto, o MACD lento usa um período de retrocesso longo para efeitos de suavização.

  • StochRSI: Calcula a faixa alta/baixa do RSI para identificar os níveis de RSI sobrecomprado/supervendido.

Regras de entrada:

  • Longo: MACD rápido cruza acima da linha zero e MACD lento cruza acima da linha zero.

  • Curto: MACD rápido cruza abaixo da linha zero e MACD lento cruza abaixo da linha zero.

Vantagens

  • O MACD duplo evita falhas para uma melhor qualidade do sinal.

  • O StochRSI identifica níveis de sobrecompra/supervenda para evitar a perseguição.

  • Considera a direcção geral da tendência para reduzir as perdas de contra-tendência.

  • A validação entre intervalos de tempo melhora a eficácia do sinal.

  • O controlo de perdas de paragem controla o risco.

Riscos

  • MACD propenso a sinais falsos, precisa de mais validação.

  • Parâmetros deficiente StochRSI pode perder negociações.

  • Os níveis de stop loss podem ser demasiado conservadores ou agressivos.

  • Falta de gestão de posição para paradas dinâmicas.

Melhorias:

  1. Adicione filtros como volume ou inclinação MA.

  2. Otimizar ou adicionar outros osciladores.

  3. Rastreamento dinâmico de stop loss.

  4. Adicionar dimensionamento de posição com base no desempenho.

Optimização

Principais áreas a otimizar:

  1. Otimizar os parâmetros do indicador.

  2. Adicionar filtros para remover falsos sinais.

  3. Otimizar as paradas para tracção dinâmica.

  4. Incorporar o dimensionamento das posições com base no desempenho da estratégia.

  5. Adicione aprendizado de máquina para otimização automática.

Resumo

A estratégia combina vários indicadores para sinais mais fortes, mas precisa de otimização em parâmetros, filtragem, paradas dinâmicas para reduzir negócios indesejados e melhorar a lucratividade.


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

//@version=2



//This strategy is an ongoing work in progress. Last updated 8/6/16.
//Feel free to modify it as you see fit, if you do borrow code then send me a link so I 
//can see and maybe borrow some of your code to improve this.
//Thanks to ChrisMoody who I stole the code for setting custom resolution from.
//
//more info in comments at end of script





strategy("MACDouble & StochRSI w/ safeties v0.3", overlay=true)

source = close
useCurrentRes = input(true, title="Uncheck to use custom res./intrv. for 2nd MACD indicator")
resCustom = input(title="Resolution/interval to use for 2nd MACD:",  defval="45")
res = useCurrentRes ? timeframe.period : resCustom

useCurrentRes2 = input(true, title="Uncheck to use custom res/intrv for StochRSI")
resCustom2 = input(title="Resolution to use for StochRSI indicator:",  defval="45")
res2 = useCurrentRes2 ? timeframe.period : resCustom2


//MACD1
fastLength = input(10, title="MACD fast length")
slowlength = input(21, title="MACD slow length")
sigLength = input(9, title="MACD signal length")

MACD = ema(source, fastLength) - ema(source, slowlength)
signal = sma(MACD, sigLength)
delta = MACD - signal



//MACD2
fastLength2 = input(31, title= "2nd MACD fast length")
slowlength2 = input(63, title= "2nd MACD slow length")
sigLength2 = input(30, title= "2nd MACD signal length")

MACD2 = ema(source, fastLength2) - ema(source, slowlength2)
signal2 = sma(MACD2, sigLength2)
delta2 = MACD2 - signal2

MACDRes = security(syminfo.tickerid, res, MACD2)
signalRes = security(syminfo.tickerid,res, signal2)
deltaRes = security(syminfo.tickerid, res, delta2)


uptrend = (close + high)/(close[1] + high[2])
downtrend = (close + low)/(close[1] + low[2])

smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(11, minval=1)
lengthStoch = input(11, minval=1)
src = close

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
RSI_buyTrig = input(90)
RSI_sellTrig = input(20)

kRes = security(syminfo.tickerid, res2, k)
dRes = security(syminfo.tickerid, res2, d)


if (delta > 0) and (year>2012) and (deltaRes > 0) and (uptrend > 1) and (  kRes and dRes < RSI_buyTrig) and (kRes > dRes)
    strategy.entry("buy", strategy.long, comment="buy")
    

if (delta < 0) and (year>2012) and (deltaRes < 0) and (downtrend < 1) and ( kRes and dRes > RSI_sellTrig) and (kRes < dRes)
    strategy.entry("sell", strategy.short, comment="sell")
	strategy.exit("sell", loss = 9000)



//  RELEASE NOTES, ETC
//
// The core starting idea for this backtesting script came from the desire to have two traditional
//MACD indicators: one 'fast' and one 'slow'. The slow one is to pretty much smooth out noisy signals
//so that short term changes in price are ignored (ideally). 
//	A brief version history
//		v0.1 - Basic two MACD indicators script
//      v0.2 - Added StochRSI indicator
//      v0.21- Added primitive uptrend/downtrend safety condition 
//      v0.22- Added changable time resolution for MACDslow
//      v0.23- Added exit safeties conditional on loss threshold   
//      v0.3 - Added changeable resolution for StochRSI
//	Future changes planned for next release:
//		-Fine tuning exit safeties
//      -Major overhaul of trade logic/triggers (may be forked as a different script)
//
//I am more than happy to discuss any difficulties you are having, questions about the script, or improvement suggestions.
//I am not a coder and my background is actually in economics, so feel free to debug ;)
//Feel free to tip me on the indcluded bitcoin address on TV as well
// tradingview.com/u/RyanMartin 
// rjmarti2@millersville.edu


Mais.