Краткосрочная стратегия торговли биткоином на основе индекса истинной силы

Автор:Чао Чжан, Дата: 2023-10-07 15:12:08
Тэги:

Обзор

Эта стратегия определяет тенденции на рынке биткоина путем расчета индекса истинной силы (TSI) и вводит длинные / короткие позиции, отфильтрованные индикатором RSI, для реализации алгоритмической торговли биткоином.

Логика стратегии

Ядром этой стратегии является индекс истинной силы (TSI). TSI измеряет абсолютную величину и направление изменений цен путем двойного сглаживания процентного изменения цен, тем самым определяя абсолютную силу движений цен вверх и вниз.

  1. Вычислить процентное изменение цены Pc
  2. Двойная плавная Pc с использованием долгосрочной EMA и краткосрочной EMA для генерации double_smoothed_pc
  3. Удвоить абсолютное значение Pc для получения double_smoothed_abs_pc
  4. Значение ТСОС равняется double_smoothed_pc деленному на double_smoothed_abs_pc умноженному на 100

Когда TSI пересекает свою сигнальную линию tsi2, генерируется длинный сигнал. Когда TSI пересекается ниже tsi2, генерируется короткий сигнал. Кроме того, стратегия фильтрует сигналы TSI с RSI - принимая только длинные сигналы, когда RSI выше 50 и короткие сигналы, когда RSI ниже 50, чтобы избежать некоторых ложных сигналов.

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

Преимущества этой стратегии включают:

  1. ТСИ может обнаруживать абсолютную силу и направление движения цен и чувствителен к тенденциям.
  2. Двойная EMA сглаживает скорость изменения цен и устойчива к шуму рынка и пикам.
  3. Фильтр RSI также предотвращает ошибочные сделки из-за шума.
  4. Краткосрочная торговля позволяет использовать временные возможности на рынке.
  5. Стратегия имеет большое пространство для настройки параметров для оптимизации, таких как периоды EMA, параметры RSI и т. Д.

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

Риски этой стратегии включают:

  1. В качестве индикатора, следующего за тенденцией, TSI имеет отстающую эмиссию и может пропустить точки переворота цен.
  2. Условия фильтра RSI слишком строги и могут упустить некоторые торговые возможности.
  3. Двойной EMA-фильтр также может отфильтровывать некоторые действительные сигналы.
  4. Высокая частота краткосрочной торговли приводит к более высоким издержкам торговли и рискам скольжения.

Отставание эмиссии и эффект фильтрации могут быть уменьшены путем смягчения правил фильтрации RSI и сокращения периодов EMA. Для строгого контроля рисков по торговле должна использоваться надлежащая стратегия стоп-лосса.

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

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

  1. Оптимизировать параметры TSI и RSI для поиска наилучшей комбинации.

  2. Ввести больше технических показателей для построения многофакторной модели.

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

  4. Оптимизируйте стратегии стоп-лосса, такие как стоп-лосс отслеживания, стоп-лосс на основе времени, стоп-лосс прорыва и т. Д.

  5. Оптимизируйте правила выхода, чтобы избежать преждевременного или позднего выхода.

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

Заключение

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


/*backtest
start: 2022-09-30 00:00:00
end: 2023-10-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


// strategy("True Strength Indicator BTCUSD 15p", shorttitle="TSI BTCUSD 15p",initial_capital=1000, commission_value=0.15, commission_type =strategy.commission.percent, default_qty_value=100 , overlay = false, pyramiding=10, default_qty_type=strategy.percent_of_equity)

//BASED ON True Strength Indicator MTF
resCustom = input(title="Timeframe",  defval="15" )
long = input(title="Long Length",  defval=25)
short = input(title="Short Length",  defval=13)
signal = input(title="Signal Length",  defval=13)
price = request.security(syminfo.tickerid,resCustom,close)


double_smooth(src, long, short) =>
    fist_smooth = ta.ema(src, long)
    ta.ema(fist_smooth, short)
pc = ta.change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(math.abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
tsi2=ta.ema(tsi_value, signal)
plot(tsi_value, color=color.lime,linewidth=2)
plot(tsi2, color=color.red,linewidth=2)




rsiserie = ta.rsi(price,7)
cciserie = ta.cci(price,14)
stochserie = ta.stoch(price,14,3,3)

plot(rsiserie,color=color.purple)



hline(30, title="Zero")
hline(50, title="Zero",linestyle=hline.style_solid, linewidth=2)
hline(70, title="Zero")

buy = ta.crossover(tsi_value, tsi2) //and rsiserie[1]<25 //and cciserie<-100 and stochserie<20
sell = ta.crossunder(tsi_value, tsi2) //and rsiserie[1]>85 //and cciserie>100 and stochserie>80


alertcondition(buy, title='TSI system', message='Buy signal at!' )
alertcondition(sell, title='TSI system', message='Sell signal at!' )

strategy.entry("BUY", strategy.long, 1, when = buy)
strategy.entry("SELL", strategy.short, 1, when = sell ) 

greentsi =tsi_value
redtsi = tsi2

bgcolor( greentsi>redtsi and rsiserie > 50 ? color.lime : na, transp=90)
bgcolor( greentsi<redtsi and rsiserie < 50 ? color.red : na, transp=90)

yellow1= redtsi > greentsi and rsiserie > 50 
yellow2 = redtsi < greentsi and rsiserie < 50 
bgcolor( yellow1 ? yellow : na, transp=80)
bgcolor( yellow2  ? yellow : na, transp=50)

bgcolor( yellow1 and yellow1[1] ? yellow : na, transp=70)
bgcolor( yellow2  and yellow2[2] ? yellow : na, transp=70)

bgcolor( rsiserie > 70 ? color.lime : na, transp=60)
bgcolor( rsiserie < 30  ? color.red : na, transp=60)


Больше