
A estratégia de arbitragem binária é uma estratégia que tenta usar uma combinação de um indicador de arbitragem e um indicador aleatório para encontrar oportunidades de negociação. Ela gera um sinal de negociação ao atravessar um SMA lento em um EMA rápido, enquanto usa o valor de K do indicador aleatório para determinar se está sendo superado por um super-vendido para eliminar parte do sinal.
A estratégia baseia-se em dois indicadores técnicos:
Linha média: calcula a linha média de três parâmetros diferentes: EMA rápida, SMA lenta e VWMA lenta, gerando um sinal de negociação quando a EMA rápida atravessa a SMA lenta acima ou abaixo.
Indicador aleatório: Calcule o valor de %K, quando ele ultrapassa o limite de um setor de overbought ou oversold, e considere que a tendência pode ser reversível, eliminando parte do sinal de negociação de linha média.
A lógica do sinal de estratégia é a seguinte:
Fazer mais quando o EMA rápido atravessa o SMA lento e o K% está abaixo do limiar da zona de superalimento; Fazer um corte quando o EMA rápido atravessa o SMA lento e o K% está acima do limiar da zona de superalimento.
Para as posições em ações abertas, se o valor de %K voltar a entrar na área de superalimento, ou o preço cair abaixo da linha de parada, será fechado. Para as posições em ações em aberto, se o valor de %K voltar a entrar na área de superalimento, ou o preço cair acima da linha de parada, será fechado.
A estratégia tenta emitir um sinal de entrada em um ponto de sinal de linha uniforme de alta probabilidade, combinando indicadores de linha uniforme e indicadores aleatórios, aproveitando a oportunidade de uma parte do filtro do indicador aleatório para entrar erroneamente.
As principais vantagens desta estratégia são:
A estratégia também apresenta alguns riscos:
Método de correspondência:
A estratégia pode ser melhorada em vários aspectos:
A estratégia aleatória de indicadores de dupla linha de equilíbrio cria uma estratégia de acompanhamento de tendências mais robusta através da combinação de indicadores de média e lenta com indicadores aleatórios. No entanto, há também espaço para otimização, como seleção de parâmetros, parâmetros de parada, etc.
/*backtest
start: 2023-01-22 00:00:00
end: 2024-01-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("TVIX MEAN REV V2 TREND", overlay=true)
length = input(16, minval=1)
OverBought = input(80)
OverSold = input(20)
TradeLong = input (true)
TradeShort = input (true)
OverBoughtClose = input(80)
OverSoldClose = input(20)
smoothK = 3
smoothD = 3
trail_points = input(50)
k = sma(stoch(close, high, low, length), smoothK)
d = sma(k, smoothD)
k2 = sma(stoch(close, high, low, length), smoothK)
d2 = sma(k, smoothD)
// === GENERAL INPUTS ===
// short Ema
maFastSource = input(defval=close, title="Fast EMA Source")
maFastLength = input(defval=1, title="Fast EMA Period", minval=1)
// long Sma
maSlowSource = input(defval=close, title="Slow SMA Source")
maSlowLength = input(defval=100, title="Slow SMA Period", minval=1)
// longer Sma
maSlowerSource = input(defval=close, title="Slower SMA Source")
maSlowerLength = input(defval=30, title="Slower SMA Period", minval=1)
//ATR Stop Loss Indicator by Keith Larson
atrDays = input(7, "ATR Days Lookback")
theAtr = atr(atrDays)
atrModifier = input(5.0, "ATR Modifier")
//plot(atr * atrModifier, title="ATR")
LstopLoss = close - (theAtr * atrModifier)
SstopLoss = close + (theAtr * atrModifier)
// === SERIES SETUP ===
/// a couple of ma's..
maFast = ema(maFastSource, maFastLength)
maSlow = sma(maSlowSource, maSlowLength)
maSlower = vwma(maSlowerSource, maSlowerLength)
rsi = rsi(maSlowerSource, maSlowerLength)
// === PLOTTING ===
fast = plot(maFast, title="Fast MA", color=color.red, linewidth=2, style=plot.style_line, transp=30)
slow = plot(maSlow, title="Slow MA", color=color.green, linewidth=2, style=plot.style_line, transp=30)
slower = plot(maSlower, title="Slower MA", color=color.teal, linewidth=2, style=plot.style_line, transp=30)
// === LOGIC === Basic - simply switches from long to short and vice-versa with each fast-slow MA cross
LongFilter = maFast > maSlow
ShortFilter = maSlow > maFast
BUY=crossover(k, d) and k < OverSold
SELL=crossunder(k, d) and k > OverBought
SELLCLOSE=crossover(k, d) and k < OverSoldClose
BUYCLOSE=crossunder(k, d) and k > OverBoughtClose
Open = open
if not na(k) and not na(d)
if crossover(k, d) and k < OverSold and LongFilter and TradeLong
strategy.entry("$", strategy.long, limit = Open, comment="Long")
strategy.close("$",when = crossunder(k, d) and k > OverBoughtClose or open < LstopLoss )
///strategy.close("$",when = open < LstopLoss )
if not na(k) and not na(d)
if crossunder(k, d) and k > OverBought and ShortFilter and TradeShort
strategy.entry("$1", strategy.short, limit = Open, comment="S")
strategy.close ("$1", when = crossover(k, d) and k < OverSoldClose or open > SstopLoss )
///strategy.close ("$1", when = open < SstopLoss)