Стратегия называется
Основная логика этой стратегии состоит в том, чтобы использовать как индикаторы RSI, так и ZigZag для определения ценовой тенденции. В частности, индикатор RSI определяет, является ли цена перекупленной или перепроданной. Индикатор ZigZag определяет, имеет ли цена значительный процентный скачок. Когда оба индикатора одновременно дают торговые сигналы, мы определяем, что для контрапозиции существует изменение тренда.
Для индикатора RSI мы устанавливаем линию перекупленности на 75 и линию перепроданности на 25. Когда RSI поднимается ниже 25 до выше 25, это считается переходом от перепроданности к бычьей. Когда RSI падает свыше 75 до ниже 75, это указывает на переход от бычьей к перепроданной.
Для индикатора ZigZag мы устанавливаем порог скачка цены на 1% в процентном изменении. Когда цена делает скачок более 1% в амплитуде, линия ZigZag даст сигнал. В сочетании с суждением тренда, мы можем определить обратный тренд.
Когда оба индикатора дают сигналы, если предыдущий тренд быстрый, а теперь RSI перекуплен, в то время как ZigZag показывает скачок цены, мы определяем, что цена превышает и может рассмотреть вопрос о короткой продаже.
Наибольшее преимущество этой стратегии заключается в улучшении качества сигнала путем сочетания двух индикаторов. Один индикатор имеет тенденцию давать много ложных сигналов. Но эта стратегия использует RSI и ZigZag для проверки, фильтруя многие ложные сигналы и улучшая показатель выигрыша.
Еще одним преимуществом является гибкая настройка параметров. Параметры RSI и ZigZag могут быть настроены в соответствии с различными рыночными условиями для достижения лучших результатов.
Основным риском являются неправильные сигналы от индикаторов. Несмотря на двойную валидацию индикаторов, во время высокой волатильности все еще могут возникать сбои, приводящие к ошибкам в торговле. Неправильное настройка параметров также влияет на эффективность стратегии.
Для снижения рисков мы можем сократить период хранения позиции для своевременной остановки потери. Оптимизация параметров также очень важна, учитывая характеристики рынка. Ручное вмешательство может быть необходимо при возникновении ненормальных рыночных условий.
Стратегия может быть улучшена в следующих аспектах:
Добавьте больше индикаторов, таких как KDJ и MACD для комбинированного суждения, для дальнейшей фильтрации сигналов.
Внедрение алгоритмов машинного обучения для автоматической оптимизации параметров, адаптирующихся к изменениям рынка.
Создать адаптивный механизм стоп-лосса с динамической защитой, основанной на волатильности рынка.
Оптимизируйте размещение позиций на основе сильных тенденций.
Создайте альтернативные стратегии для автоматического переключения на необычные рынки.
В целом, это типичная стратегия, следующая за трендом. Основная идея заключается в том, чтобы идентифицировать обратные тенденции с использованием индикаторов RSI и ZigZag в сочетании. Преимущество заключается в улучшении качества сигнала посредством двойной фильтрации индикаторов. Риски неудачи индикатора должны быть полностью рассмотрены, а стратегия постоянно улучшается посредством настройки параметров, оптимизации стоп-лосса, размещения позиций и т. Д. В целом это обеспечивает эффективное решение отслеживания тренда для крипторынка.
/*backtest start: 2024-01-22 00:00:00 end: 2024-02-21 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © SoftKill21 //@version=4 strategy("Crypto ZigZag RSI strategy 15min",overlay=true) length =input(5, title="RSI Length") overSold = input(25) overBought= input(75) p =close vrsi = rsi(p, length) var bool long = na var bool short = na long :=crossover(vrsi,overSold) short := crossunder(vrsi,overBought) var float last_open_long = na var float last_open_short = na last_open_long := long ? close : nz(last_open_long[1]) last_open_short := short ? close : nz(last_open_short[1]) entry_value =last_open_long entry_value1=last_open_short // ZZPercent = input(1, title="Minimum % Change", type=input.float) r1Level=entry_value s1Level=entry_value1 trend = 0 trend := na(trend[1]) ? 1 : trend[1] LL = 0.0 LL := na(LL[1]) ? s1Level : LL[1] HH = 0.0 HH := na(HH[1]) ?r1Level : HH[1] Pi = ZZPercent * 0.01 zigzag = float(na) if trend > 0 if r1Level >= HH HH := r1Level HH else if s1Level < HH * (1 - Pi) zigzag :=r1Level[1] trend := -1 LL := s1Level LL else if s1Level <= LL LL := s1Level LL else if r1Level > LL * (1 + Pi) zigzag := s1Level[1] trend := 1 HH := s1Level HH shortc=crossunder(trend,0) longc=crossover(trend,0) longa =input(true) shorta=input(false) if(longa) strategy.entry("long",1,when=longc) strategy.close("long",when=shortc) if(shorta) strategy.entry("short",0,when=shortc) strategy.close("long",when=longc)