Эта стратегия - это стратегия торговли криптовалютами, основанная на комбинации индикатора MACD и стохастических индикаторов. Она генерирует торговые сигналы путем расчета индикатора MACD цен на биткоин и применения на нем стохастических индикаторов, чтобы улавливать изменения тренда на рынке криптовалют.
Стратегия сначала рассчитывает индикатор MACD. MACD означает Дивергенцию конвергенции скользящей средней, что является индикатором, следующим за трендом. Он состоит из быстрой линии и медленной линии, где быстрая линия является краткосрочной экспоненциальной скользящей средней, а медленная линия - долгосрочной экспоненциальной скользящей средней. Когда быстрая линия пересекает медленную линию, она генерирует золотой крестовой сигнал, указывающий на бычий рынок. Когда быстрая линия пересекает ниже медленной линии, она генерирует крестовой сигнал смерти, указывающий на медленный рынок.
После расчета индикатора MACD стратегия применяет стохастический индикатор %K на самом MACD. Формула расчета для %K:
%K = (Текущее закрытие - Наименьшее низкое за N периодов) / (Самое высокое высокое за N периодов - Самое низкое низкое за N периодов) * 100
Стохастический индикатор отражает отклонение цены от ее последнего диапазона. Колебания %K между 20-80 означают, что цена торгуется в консолидации. Когда %K переходит выше 20 снизу, он генерирует сигнал покупки. Когда %K переходит ниже 80 сверху, он генерирует сигнал продажи.
Эта стратегия объединяет торговые сигналы как от MACD, так и от стохастического %K для торговли на рынке криптовалют.
Эта стратегия сочетает в себе анализ тренда и показатели перекупленности и перепроданности, которые могут эффективно идентифицировать важные переломные моменты на рынке.
Кроме того, эта стратегия применяет к торговле криптовалютами технические индикаторы, обычно используемые на фондовых рынках. Это кросс-рыночное приложение. Эти индикаторы одинаково применимы на рынке цифровой валюты и могут даже лучше работать из-за высокой волатильности криптовалют.
Наибольший риск этой стратегии заключается в высокой волатильности на рынке криптовалют, которая легко создает ложные сигналы и приводит к торговым потерям. Кроме того, когда индикаторы генерируют сигналы, цены могут уже значительно измениться, создавая риск отсутствия ранних сигналов тренда.
Чтобы контролировать эти риски, целесообразно использовать движущиеся стоп-лосс для блокировки прибыли и избежания дальнейших потерь.
Во-первых, стратегия может попытаться сочетать скользящие средние с индикаторами волатильности, такими как полосы Боллинджера, устанавливая параметры волатильности для определения достоверности прорывов и предотвращения ложных сигналов.
Во-вторых, можно внедрить модели машинного обучения для обучения историческим данным и создания моделей случайных лесов или нейронных сетей LSTM, чтобы помочь оценить эффективность индикаторных сигналов.
В-третьих, добавьте механизм стоп-лосса, когда цены движутся в неблагоприятном направлении, автоматически запускайте стоп-лосс для контроля рисков.
Эта стратегия сочетает в себе индикатор MACD и стохастический индикатор %K, используя метод взаимной проверки сигналов от двух индикаторов для формулирования стратегии торговли криптовалютой. Эта стратегия комбинации индикаторов может в некоторой степени улучшить точность сигналов. Но мы также должны знать о риске чрезмерной сложности индикаторов, что может ввести шум и отставание. Правильное настройка параметров и контроль рисков в соответствии с различными рыночными условиями одинаково важны для получения лучшей эффективности стратегии.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Schaff Trend Cycle Strategy", shorttitle="STC Backtest", overlay=true) fastLength = input(title="MACD Fast Length", defval=23) slowLength = input(title="MACD Slow Length", defval=50) cycleLength = input(title="Cycle Length", defval=10) d1Length = input(title="1st %D Length", defval=3) d2Length = input(title="2nd %D Length", defval=3) src = input(title="Source", defval=close) highlightBreakouts = input(title="Highlight Breakouts ?", type=bool, defval=true) macd = ema(src, fastLength) - ema(src, slowLength) k = nz(fixnan(stoch(macd, macd, macd, cycleLength))) d = ema(k, d1Length) kd = nz(fixnan(stoch(d, d, d, cycleLength))) stc = ema(kd, d2Length) stc := stc > 100 ? 100 : stc < 0 ? 0 : stc upper = input(75, defval=75) lower = input(25, defval=25) long = crossover(stc, lower) ? lower : na short = crossunder(stc, upper) ? upper : na long_filt = long and not short short_filt = short and not long prev = 0 prev := long_filt ? 1 : short_filt ? -1 : prev[1] long_final = long_filt and prev[1] == -1 short_final = short_filt and prev[1] == 1 //alertcondition(long_final, "Long", message="Long") //alertcondition(short_final,"Short", message="Short") //plotshape(long_final, style=shape.arrowup, text="Long", color=green, location=location.belowbar) //plotshape(short_final, style=shape.arrowdown, text="Short", color=red, location=location.abovebar) strategy.entry("long", strategy.long, when = long ) strategy.entry("short", strategy.short, when = short)