Хэджирование криповалют (Hedging Cryptocurrency)

При написании скрипта автор мотивировался статьей о хэджировании криптовалют. Для работы с данным скрипом необходима установить дневной таймфрейм.

Скрипт "Hedging Cryptocurrency", по своей сути, является стохастическим осциллятором данных спрэда между ценой (годичной давности) на BTC и равноценным количестве выбранного альткоина. Стоит сразу заметить, что для корректного использования данного скрипта необходима выбирать инструмент вида XXX/USD (где XXX - выбранный альткоин, а USD - стабильный альткоин, привязанный к доллару). В настройках можно включать/выключать сигналы на покупку (зеленые точки) и продажу (красные точки) альткоина. Закрывать сделку можно, когда осциллятор перешагнет нулевую отметку. ВАЖНО, что для хэджирования криптовалют, при открытии сделки на альткоин, необходимо также открыть сделку и на BTC , но уже в обратном направлении. Кроме всего перечисленного сам осциллятор имеет градацию зеленых и красных оттенков, которые говорят об условной перекупленности и перепроданности соответственно. Добавлю, что индикатор чаще ошибается при низкой корреляции между инструментами, поэтому в такие моменты он начинает сигнализировать черными крестиками. В этих ситуациях скрипт не гарантирует ту точность, которую может предложить.


На TradingView его можно найти по ЭТОЙ ССЫЛКЕ.

Код открытый, поэтому можно поизучать:

study(title="Hedging Altcoins", shorttitle="HedgAlt", precision=2)
sym = input(title="BTC on your favorite exchange", type=symbol, defval="BITSTAMP:BTCUSD")
src = input(close, title="Altcoin price type")
length = input(90, title="Stochastic Lenght", minval=1, maxval=365)
cor = input(365, title="Correlation Coeff", minval=1, maxval=365) // recommended 1 year
ris_fal = input(16, title="Rising or Falling Period", minval=1)
hints = input(type=bool, defval=false, title="Buy/Sell Hint")

BTC = security(sym, period, src)
coef = BTC[365]/src[365] // or fix in code manually - BTC/Altcoin (1 year ago)
correl = correlation(src, BTC, cor)
spread = round(BTC-(coef*src))
max_spread = highest(spread, length)
min_spread = lowest(spread, length)
stoch_spread = (stoch(spread, max_spread, min_spread, length)-50)*(-1)

// ---- Plot colors ----
col_38_50 = #00ff00   // 50 Зеленый
col_25_38 = #33ff33   // 38
col_13_25 = #77ff77   // 25
col_0_13 = #bbffbb    // 13
col_m13_0 = #ffbbbb   //-13
col_m25_m13 = #ff7777 //-25
col_m38_m25 = #ff3333 //-38
col_m50_m38 = #ff0000 //-50 Красный
color_now=(stoch_spread>=0 ? (stoch_spread<=13 ? col_0_13 : (stoch_spread<=25 ? col_13_25 : (stoch_spread<=38 ? col_25_38 : col_38_50))) : (stoch_spread>=-13 ? col_m13_0 : (stoch_spread>=-25 ? col_m25_m13 : (stoch_spread>=-38 ? col_m38_m25 : col_m50_m38))))
// ---------------------

h0 = hline(0)
trans = hints ? 25 : 100
warning = correl<0.7 ? na : (correl>-0.7 ? na : stoch_spread)
buy_now = stoch_spread<=0 ? (falling(stoch_spread, ris_fal) ? stoch_spread : na ) : na
sell_now = stoch_spread>=0 ? (rising(stoch_spread, ris_fal) ? stoch_spread : na ) : na

plot(stoch_spread, style=area, color=color_now, transp=60)
plot(sell_now, title="SELL NOW!", color=#ff0000, style=circles, linewidth=4, transp=trans)
plot(buy_now, title="BUY NOW!", color=#00ff00, style=circles, linewidth=4, transp=trans)
plot(warning, title="STOP TRAIDING!", color=black, style=cross, linewidth=4, transp=0)