Стратегия торговли Dual MACD Stochastic


Дата создания: 2023-09-22 16:55:55 Последнее изменение: 2023-09-22 16:55:55
Копировать: 0 Количество просмотров: 806
1
Подписаться
1617
Подписчики

Обзор

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

Стратегический принцип

Стратегия оценивает торговые сигналы на основе следующих показателей:

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

  • StochRSI: рассчитывает наивысшее и наименьшее значение RSI за определенный период, чтобы определить, находится ли RSI в состоянии перекупа и перепродажи.

Правила оценки торговых сигналов:

  • Сделать больше: быстрый MACD проходит через нулевую ось и медленный MACD проходит через нулевую ось, StochRSI находится в состоянии перепродажи и проходит через D-линию на линии K и находится в восходящем тренде.

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

Стратегические преимущества

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

  • StochRSI оценивает ситуацию как перекупленную и перепроданную, чтобы избежать срыва.

  • Внимание к основным тенденциям, чтобы сократить убытки от неудачных сделок

  • Осуществление проверки показателей в нескольких временных рамках для повышения эффективности сигналов.

  • Настройка сдерживающих условий управления рисками.

Анализ рисков

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

  • Неправильная настройка параметров StochRSI может привести к упущенным возможностям.

  • Неразумная установка точки остановки может быть слишком консервативной или радикальной.

  • Отсутствие стратегии управления позицией, невозможность динамического прекращения убытков.

Оптимизация может быть осуществлена в следующих аспектах:

  1. Условия фильтрации, такие как увеличение объема сделок или угол средней линии.

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

  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 
// [email protected]