Биномиальная скользящая средняя (BMA) - это новый тип индикатора скользящей средней.
Эта стратегия сочетает в себе быструю BMA и медленную BMA, чтобы генерировать торговые сигналы, такие как MACD, относящиеся к стратегии следования тренду.
Стратегия тренда биномиальной скользящей средней
Вычислить биномиальную скользящую среднюю (BMA). Согласно установленному пользователем периоду, он вычисляет биномиальные коэффициенты и берет половину из них в качестве веса к средним ценам. Например, с периодом 5, он вычисляет 9 биномиальных коэффициентов и берет их половину для взвешенной средней. Это дает больше веса недавним свечам и лучшую гладкость.
Установите быстрый период BMA и медленный период BMA. Быстрый BMA более чувствителен к изменениям цен, в то время как медленный BMA более стабилен. Их перекресток генерирует торговые сигналы.
Когда быстрая BMA выходит выше медленной BMA, открывается длинная позиция. Когда быстрая BMA падает ниже медленной BMA, открывается короткая позиция. Держите позицию до появления противоположного сигнала.
Наибольшее преимущество этой стратегии заключается в инновационном расчете BMA. Он повышает сильные стороны скользящих средних с улучшенной плавностью и практичностью. По сравнению с EMA и SMA, BMA придает большее значение недавним свечам, сохраняя при этом больше исторической информации. Это позволяет лучше улавливать тенденции и генерировать меньше ложных сигналов.
Кроме того, быстрая и медленная комбинация BMA в полной мере использует преимущества скользящих средних. Она фильтрует много шума и производит сигналы только в поворотные моменты тренда. Сама стратегия проста в понимании и реализации, подходит для средне- и долгосрочной торговли.
К основным рискам этой стратегии относятся:
Как и все стратегии, следующие за трендом, это может привести к потерям, когда тренд переворачивается.
Неправильная настройка параметров BMA также влияет на эффективность стратегии. Чрезвычайно чувствительная быстрая BMA может генерировать ложные сигналы, в то время как отстающая медленная BMA может упустить трендовые возможности. Необходимы обширные тесты для поиска оптимальной комбинации параметров.
Стратегия по умолчанию использует полную позицию. Размер позиции может быть добавлен в соответствии с предпочтениями риска для ограничения потери по сделке.
Основными направлениями оптимизации являются тестирование самой BMA и комбинации параметров.
Настройка периода: тестируйте различные периоды быстрого BMA и медленного BMA, чтобы найти оптимальную комбинацию.
Вес BMA: тестируйте различные схемы взвешивания, такие как полное распределение половины биномиальных коэффициентов или увеличение веса недавних свечей.
Для предотвращения необоснованных сигналов могут быть добавлены такие условия фильтрации, как прорыв и повышение громкости.
Механизм остановки потерь и размещение позиций также могут быть проверены для лучшего контроля рисков.
Эта стратегия, во-первых, предлагает уникальный индикатор биномиальной скользящей средней. Он улучшает расчет скользящей средней и улучшает общую полезность и стабильность стратегии. Кроссворды между быстрой и медленной BMA генерируют простые, но эффективные торговые сигналы.
/*backtest start: 2022-12-07 00:00:00 end: 2023-12-07 00:00:00 period: 1d basePeriod: 1h 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/ // © HosseinDaftary //@version=4 strategy("Binomial Moving Average","BMA", overlay=true, margin_long=100, margin_short=100 ,max_bars_back=96) //Binomial Moving Average:This type of moving average that is made by myself and i did not see anywhere before uses the half of binomial cofficients for //averaging the prices for example if the period be 5 then we use the 9 degree binomial cofficients(that yields 10 cofficients) and use half of them. //we use 126/256 for last bar,84/256,36/256,9/256 and finally use 1/256 for 5th bar. Seemingly this MA works better than EMA. fa_ma=input(title='Fast MA',defval=10) sl_ma=input(title='Slow MA',defval=30) fac(n)=> fact=1 for i= 1 to n fact:=fact*i fact cof= array.new_float(sl_ma) hn_ma(price,length)=> sum=1.0 sum1=0.0 array.set(cof,length-1,1) for i=2 to length array.set(cof,length-i,fac(2*length-1)/(fac(i-1)*fac(2*length-i))) sum:=sum+array.get(cof,length-i) for i=0 to length-1 array.set(cof,i,array.get(cof,i)/sum) sum1:=sum1+array.get(cof,i)*price[i] sum1 hn1=plot(hn_ma(close,sl_ma) , color=#00ff00) hn2=plot(hn_ma(close,fa_ma) ,color=#ff0000) fill(hn1,hn2,color=hn_ma(close,fa_ma)>hn_ma(close,sl_ma)?color.green:color.red) longCondition = crossover(hn_ma(close, fa_ma), hn_ma(close, sl_ma)) if (longCondition) strategy.entry("Long", strategy.long) shortCondition = crossunder(hn_ma(close, fa_ma), hn_ma(close, sl_ma)) if (shortCondition) strategy.entry("Short", strategy.short)