Двойная торговая стратегия MACD StochRSI

Автор:Чао ЧжанДата: 22 сентября 2023 года 16:55:55
Тэги:

Обзор

Эта стратегия сочетает в себе двойные индикаторы MACD и осциллятор StochRSI для торговых сигналов. Двойной MACD использует разные параметры для быстрых и медленных эффектов, в то время как StochRSI проверяет дивергенцию импульса.

Логика стратегии

Торговые сигналы основаны на:

  • Двойной MACD: быстрый MACD использует короткий период обратной связи, медленный MACD использует длительный период обратной связи для сглаживания эффектов.

  • StochRSI: рассчитывает высокий/низкий диапазон RSI для определения уровня перекупленного/перепроданного RSI.

Правила въезда:

  • Длинный: быстрый MACD пересекает линию нуля и медленный MACD пересекает линию нуля. StochRSI перепродан и K пересекает линию D. В восходящем тренде.

  • Короткий: быстрый MACD пересекается ниже нулевой линии и медленный MACD пересекается ниже нулевой линии. StochRSI перекуплен, а K пересекается ниже D. В нисходящем тренде.

Преимущества

  • Двойной MACD избегает ложных прорывов для повышения качества сигнала.

  • StochRSI определяет уровни перекупа/перепродажи, чтобы избежать погони.

  • Рассматривает общую направленность тренда для сокращения потерь от контртенда.

  • Валидация между временными рамками улучшает эффективность сигнала.

  • Стоп-потеря контролирует риск.

Риски

  • MACD подвержен ложным сигналам, требует дальнейшей проверки.

  • Плохие параметры StochRSI могут помешать сделкам.

  • Уровни остановки могут быть слишком консервативными или агрессивными.

  • Отсутствует управление позицией для динамических остановок.

Улучшения:

  1. Добавьте фильтры, такие как объем или наклон MA.

  2. Оптимизировать или добавить другие осцилляторы.

  3. Динамическое отслеживание стоп-потери.

  4. Добавьте размеры позиций на основе производительности.

Оптимизация

Основные направления оптимизации:

  1. Оптимизируйте параметры индикатора.

  2. Добавьте фильтры для удаления ложных сигналов.

  3. Оптимизируйте остановки для динамического следования.

  4. Включить размеры позиций на основе результатов стратегии.

  5. Добавьте машинное обучение для автоматической оптимизации.

Резюме

Стратегия сочетает в себе несколько индикаторов для более сильных сигналов, но требует оптимизации параметров, фильтрации, динамических остановок для уменьшения нежелательных сделок и повышения прибыльности.


/*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


Больше