FRAMA и стратегия перекрестной торговли скользящими средними на основе двойной скользящей средней

Автор:Чао Чжан, Дата: 2023-12-22 16:08:23
Тэги:

img

Обзор

Эта стратегия сначала рассчитывает простые скользящие средние от 13 периодов и 26 периодов, а затем рассчитывает индикатор FRAMA. Он длинный, когда быстрая линия проходит через медленную линию снизу вверх, и выходит из позиции, когда быстрая линия проходит через медленную линию сверху вниз или когда индикатор FRAMA проходит через цену закрытия сверху вниз.

Принцип стратегии

Стратегия в основном использует перекресток скользящей средней для генерации торговых сигналов. Когда краткосрочная скользящая средняя прорывается через долгосрочную скользящую среднюю снизу вверх, это указывает на то, что тенденция переходит от снижения к росту и идет на длинный. Когда краткосрочная скользящая средняя пересекается ниже долгосрочной, это указывает на надвигающееся изменение и закрывает позицию.

Между тем, индикатор FRAMA вводится в качестве вспомогательного суждения. Индикатор FRAMA - это адаптивная скользящая средняя линия, улучшенная на основе гипотезы фрактального рынка. Вычисляя логарифмическую скорость изменения амплитуды колебаний цен в разные периоды, он оценил фрактальное измерение рынка в режиме реального времени для динамической корректировки плавности скользящей средней. Когда индикатор FRAMA пересекает ниже цены закрытия, он указывает на обратный сигнал тренда. В сочетании с сигналом пересечения скользящей средней, он улучшает точность суждения.

Анализ преимуществ

Стратегия сочетает в себе двойной кроссовер скользящей средней и индикатор FRAMA, который может эффективно фильтровать ложные сигналы прорыва и улучшать качество торговых сигналов.

По сравнению с одним индикатором и моделью, эта стратегия может значительно улучшить качество сигнала и уменьшить вероятность ошибочного суждения.

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

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

Чтобы контролировать вышеуказанные риски, такие параметры, как скользящие средние периоды, могут быть соответствующим образом скорректированы или отфильтрованы другими показателями.

Руководство по оптимизации

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

  1. Проверьте больше комбинаций и периодов скользящих средних, чтобы найти оптимальную пару параметров.

  2. Добавьте стратегию стоп-лосса для контроля одиночных потерь.

  3. Комбинировать показатели объема торговли, чтобы избежать ложного прорыва при низком объеме.

  4. Добавление моделей машинного обучения для оценки состояния рынка в режиме реального времени и динамического регулирования параметров.

  5. Сочетание индикаторов настроения, новостей и других многофакторных факторов для улучшения качества принятия решений.

Заключение

Эта предварительная стратегия сочетает в себе применение двойного скользящего среднего кроссовера и индикатора 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())

Больше