Эта стратегия сначала рассчитывает быструю скользящую среднюю линию ma_fast и медленную скользящую среднюю линию ma_slow, а затем объединяет ее с адаптивной скользящей средней линией FRAMA. Она становится длинной, когда ma_fast пересекает ma_slow, и закрывает позицию, когда ma_slow пересекается ниже ma_fast или FRAMA падает ниже цены закрытия.
Вычислите 13-дневную простую скользящую среднюю ma_fast и 26-дневную простую скользящую среднюю ma_slow.
Расчет адаптивной скользящей средней линии FRAMA. Формула FRAMA сложна, основная идея заключается в динамической корректировке плавности α скользящей средней на основе наивысшей, наименьшей и волатильности цен.
Это означает, что краткосрочная скользящая средняя начинает двигаться вверх и работает быстрее, чем долгосрочная, соответствуя характеристикам тренда.
Закрыть позицию, когда ma_slow переходит ниже ma_fast или FRAMA падает ниже цены закрытия.
Сочетает в себе преимущества двойной системы скользящей средней и адаптивной системы скользящей средней.
Индикатор FRAMA автоматически регулирует параметры, избегая субъективности ручной настройки параметров.
Использование двух сигналов выхода позволяет вовремя обнаружить обратный тренд.
Двойные пересечения скользящих средних могут иметь випса, что приводит к периодическим потерям.
Адаптивные скользящие средние вводят больше параметров, рискуя переустановить.
Рассматривает только ценовые факторы без фильтра объема торговли, поэтому может упустить возможности.
Испытывайте различные периоды MA, чтобы найти оптимальную комбинацию.
Добавить подтверждение объема, чтобы избежать ложных сигналов, например, требующих пиков объема.
Оптимизировать правила входа и выхода, чтобы сделать стратегию более надежной, например, принимая сигналы только в продолжении.
Эта стратегия сочетает в себе двойной скользящий средний кроссовер и адаптивный скользящий средний FRAMA, автоматически адаптируясь к рыночным условиям путем динамической корректировки параметров. Двойные MAs хорошо улавливают тенденции, а FRAMA фильтрует шум. Использование двух выходных сигналов также делает стратегию более надежной. Следующими шагами могут быть дальнейшая оптимизация параметров и добавление фильтра объема для его улучшения.
/*backtest start: 2023-01-14 00:00:00 end: 2024-01-14 00:00:00 period: 1d basePeriod: 1h 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())