
双均線指数ランダム化策略は,均線指数とランダムな指数の組み合わせを使用して取引機会を探そうとする策略である.それは,高速EMA上で遅いSMAを横断すると取引信号を生じ,同時,乱指数K値を使用して,超買いまたは超売りかどうかを判断して,部分的な信号を排除する.
この戦略は主に2つの技術指標に基づいています.
平均線: 急速EMA,緩慢SMA,緩慢VWMAの3つの異なるパラメータの平均線を計算し,急速EMAを上または下を通過すると取引シグナルを生成する.
ランダム指標: %K値を計算し,設定された超買区または超売り区の値を超えると,市場が逆転する可能性があり,部分平均線取引信号を除することができる.
具体的には,戦略信号の論理は次のとおりです.
速速EMA上では緩慢SMAを通過し,K値が超売り区の値より低いとき,多額にする.速速EMA下では緩慢SMAを通過し,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)