
Двойная равнолинейная случайная стратегия - это стратегия, которая пытается использовать комбинацию равнолинейных и случайных индикаторов для поиска торговых возможностей. Она создает торговый сигнал при прохождении медленного SMA на быстром EMA, а также использует K-значение случайного индикатора, чтобы определить, не является ли это перепродажей, чтобы устранить часть сигнала.
Стратегия основана на двух технических показателях:
Средняя линия: рассчитывается средняя линия трёх различных параметров: быстрая EMA, медленная SMA и медленная VWMA, которая создает торговый сигнал, когда быстрая EMA проходит над или ниже медленной SMA.
Случайный индикатор: рассчитывается %K, когда он превышает установленный предел зоны перекупа или предела зоны перепродажи, считая, что ситуация может измениться, можно убрать часть среднелинейного торгового сигнала.
В частности, логика стратегического сигнала заключается в следующем:
При прохождении медленного SMA над быстрым EMA и% K ниже отметки от перепродажи, делать больше; при прохождении медленного SMA над быстрым EMA и% K выше отметки от отметки от перепродажи, делать больше.
Для открытых позиций, если %K вновь входит в зону перепродажи, или цена пробивает линию остановки, то они будут закрыты. Для открытых позиций, если %K вновь входит в зону перекупа, или цена пробивает линию остановки, то они будут закрыты.
С помощью комбинации равнолинейных показателей и случайных показателей стратегия пытается подать входный сигнал в высоковероятных равнолинейных сигнальных точках, используя при этом возможность ошибочного входа в фильтрованную часть случайных показателей.
Основные преимущества этой стратегии:
Однако эта стратегия также несет в себе некоторые риски:
Метод:
Эта стратегия может быть оптимизирована в следующих аспектах:
Двухлинейная случайная стратегия с использованием комбинации быстрого и медленного среднелинейного показателя и случайного показателя создает более устойчивую стратегию отслеживания тенденций. Однако существует некоторое пространство для оптимизации, например, выбор параметров, метод остановки убытков и т. Д. Если внедрить и оптимизировать дополнительные показатели, эта стратегия может получить более стабильную дополнительную прибыль.
/*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)