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


Дата создания: 2023-10-07 15:12:08 Последнее изменение: 2023-10-07 15:12:08
Копировать: 0 Количество просмотров: 782
1
Подписаться
1617
Подписчики

Обзор

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

Стратегический принцип

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

  1. Рассчитывание изменения цены Pc
  2. Двойное сглаживание ПК с использованием длительных и коротких ЭМА, создавая double_smoothed_pc
  3. Двойное сглаживание абсолютного значения PC, создающее double_smoothed_abs_pc
  4. Значение TSI равно double_smoothed_pc, деленное на double_smoothed_abs_pc умноженное на 100

Помимо этого, стратегия также сочетает в себе фильтрацию индикатора RSI на торговые сигналы TSI, которые производят многосигналы только тогда, когда значение RSI больше 50, и только тогда, когда значение RSI меньше 50, что отфильтровывает некоторые ложные сигналы.

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

Эта стратегия имеет следующие преимущества:

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

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

Также существуют следующие риски:

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

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

Направление оптимизации

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

  1. Оптимизируйте параметры TSI и RSI, чтобы найти оптимальное сочетание параметров. Можно скорректировать длинные и короткие циклы EMA, параметры RSI и т. Д.

  2. Добавление других показателей в комбинацию с другими показателями, чтобы сформировать многофакторную модель. Например, можно добавить показатели MA, KD и т. Д., чтобы в полной мере использовать преимущества каждого показателя.

  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)