Эта стратегия сначала рассчитывает простые скользящие средние от 13 периодов и 26 периодов, а затем рассчитывает индикатор FRAMA. Он длинный, когда быстрая линия проходит через медленную линию снизу вверх, и выходит из позиции, когда быстрая линия проходит через медленную линию сверху вниз или когда индикатор FRAMA проходит через цену закрытия сверху вниз.
Стратегия в основном использует перекресток скользящей средней для генерации торговых сигналов. Когда краткосрочная скользящая средняя прорывается через долгосрочную скользящую среднюю снизу вверх, это указывает на то, что тенденция переходит от снижения к росту и идет на длинный. Когда краткосрочная скользящая средняя пересекается ниже долгосрочной, это указывает на надвигающееся изменение и закрывает позицию.
Между тем, индикатор FRAMA вводится в качестве вспомогательного суждения. Индикатор FRAMA - это адаптивная скользящая средняя линия, улучшенная на основе гипотезы фрактального рынка. Вычисляя логарифмическую скорость изменения амплитуды колебаний цен в разные периоды, он оценил фрактальное измерение рынка в режиме реального времени для динамической корректировки плавности скользящей средней. Когда индикатор FRAMA пересекает ниже цены закрытия, он указывает на обратный сигнал тренда. В сочетании с сигналом пересечения скользящей средней, он улучшает точность суждения.
Стратегия сочетает в себе двойной кроссовер скользящей средней и индикатор FRAMA, который может эффективно фильтровать ложные сигналы прорыва и улучшать качество торговых сигналов.
По сравнению с одним индикатором и моделью, эта стратегия может значительно улучшить качество сигнала и уменьшить вероятность ошибочного суждения.
Основные риски этой стратегии заключаются в том, что двойные скользящие средние могут производить больше ложных сигналов прорыва, а параметры индикатора FRAMA также повлияют на эффективность.
Чтобы контролировать вышеуказанные риски, такие параметры, как скользящие средние периоды, могут быть соответствующим образом скорректированы или отфильтрованы другими показателями.
Стратегия может быть оптимизирована в следующих аспектах:
Проверьте больше комбинаций и периодов скользящих средних, чтобы найти оптимальную пару параметров.
Добавьте стратегию стоп-лосса для контроля одиночных потерь.
Комбинировать показатели объема торговли, чтобы избежать ложного прорыва при низком объеме.
Добавление моделей машинного обучения для оценки состояния рынка в режиме реального времени и динамического регулирования параметров.
Сочетание индикаторов настроения, новостей и других многофакторных факторов для улучшения качества принятия решений.
Эта предварительная стратегия сочетает в себе применение двойного скользящего среднего кроссовера и индикатора FRAMA. На основе сохранения простоты и интуиции она эффективно улучшила качество сигнала и стоит дальнейшего тестирования и оптимизации.
/*backtest start: 2023-12-14 00:00:00 end: 2023-12-16 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Fractal Adaptive Moving Average",shorttitle="FRAMA",overlay=true) ma_fast = sma(close,13) ma_slow = sma(close,26) plot(ma_fast,color = green) plot(ma_slow, color = yellow) price = input(hl2) len = input(defval=16,minval=1) FC = input(defval=1,minval=1) SC = input(defval=198,minval=1) len1 = len/2 w = log(2/(SC+1)) H1 = highest(high,len1) L1 = lowest(low,len1) N1 = (H1-L1)/len1 H2 = highest(high,len)[len1] L2 = lowest(low,len)[len1] N2 = (H2-L2)/len1 H3 = highest(high,len) L3 = lowest(low,len) N3 = (H3-L3)/len dimen1 = (log(N1+N2)-log(N3))/log(2) dimen = iff(N1>0 and N2>0 and N3>0,dimen1,nz(dimen1[1])) alpha1 = exp(w*(dimen-1)) oldalpha = alpha1>1?1:(alpha1<0.01?0.01:alpha1) oldN = (2-oldalpha)/oldalpha N = (((SC-FC)*(oldN-1))/(SC-1))+FC alpha_ = 2/(N+1) alpha = alpha_<2/(SC+1)?2/(SC+1):(alpha_>1?1:alpha_) out = (1-alpha)*nz(out[1]) + alpha*price plot(out,title="FRAMA",color=purple,transp=0) entry() => crossover(ma_fast, ma_slow) and (out < close) exit() => crossover(ma_slow, ma_fast) or crossunder(out, close) strategy.entry(id= "MA cross", long = true, when = entry()) strategy.close(id= "MA cross", when = exit())