VRSI 対 MARSI 戦略


作成日: 2024-02-02 17:21:09 最終変更日: 2024-02-02 17:21:09
コピー: 0 クリック数: 970
1
フォロー
1617
フォロワー

VRSI 対 MARSI 戦略

概要

VRSIとMARSIの戦略は,移動平均を使用してRSIを平らにするため,双指数戦略を実現する.この戦略は,価格のRSIと取引量のRSIを同時に使用し,移動平均と組み合わせて取引信号を生成する.価格のRSIが上昇するときに多行し,価格のRSIが低下するときに空行する.同時に取引量のRSIの変化を観察して,市場力と潜在的なトレンド変化を判断する.

戦略原則

この戦略は,まず価格の9周期RSI指数 ((RSI) と取引量の9周期RSI指数 ((VRSI) を計算します. そして,これらの2つのRSI指数の5周期SMP (MARSIとMAVRSI) を計算します.

取引シグナルの生成はMARSI指数に基づいています.MARSIが上昇すると多し,MARSIが低下すると空し.さらに,MAVRSI指数は,市場の力と潜在的なトレンドの変化を判断するために使用されます.

例えば,多頭行情では,価格が上昇し続け,取引量が減少した場合,多頭力が弱まっている可能性があることを予兆し,平仓を準備するべきである.逆に,空頭行情では,価格が低下し続け,取引量が上昇した場合,空頭力が強まっていることを予兆し,空券を保有し続けることができる.

優位分析

この戦略は,二重のRSI指標の移動平均と組み合わせて,トレンドを効果的に捉え,取引量の変化を利用して市場の力を判断し,被套を避けることができます.この戦略は,単一のRSI指標と比較して,市場のリズムをより正確に把握できます.

移動平均の使用は,部分的なノイズをフィルターして,信号をより信頼できるようにすることもできます.さらに,RSI周期や移動平均周期などの異なるパラメータの設定は,戦略の最適化にも役立ちます.

リスク分析

この戦略の最も重要なリスクは,二重指標の間の逸脱が生じることにある.価格と取引量との間の逸脱が生じると,取引信号も信頼性が低下する.このとき,指標の間の関係を人工的に判断する必要がある.

もう一つのリスクは,整合の状況で容易に套用されるものです.価格が横横整合しているときに,RSI指標は,不必要な取引シグナルを誘発する上下振動が容易です.このとき,パラメータを調整したり,指標の絶対的な位置を判断したりする必要があります.

最適化の方向

この戦略は以下の点で最適化できます.

  1. RSI指数と移動平均のパラメータを調整して,最適なパラメータの組み合わせを見つける

  2. 取引シグナルを生成する際に他の条件判断を追加します.例えば,RSI指標が超買い超売り領域で誘発される反転シグナルの信頼性が高くなります.

  3. ストップ戦略を追加し,移動ストップまたは指標ストップを設定します.

  4. K線形,波動率指数などの他の指標と組み合わせて,套装を避ける

要約する

VRSIとMARSIの戦略は,価格と取引量のRSI指標を組み合わせて成功し,二重指標の間の比較と判断は,信号の正確さと収益率を向上させることができる. 最適化されたパラメータ設定とストップダスト戦略は,安定した動作を可能にします. 全体的に,この戦略は,指標の間の組み合わせを利用し,単一のRSI指標よりも優れたパフォーマンスを得ます.

ストラテジーソースコード
/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("VRSI-MARSI Strategy", shorttitle="(V/MA)RSI Str.", overlay=false, default_qty_type=strategy.percent_of_equity, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0, default_qty_value=5, initial_capital=100)

// RSI(close, ="RSI") and RSI(Volume, ="VRSI")
src = close, len = input(9, minval=1, title="Length RSI")
src2 = volume, len2 = input(9, minval=1, title="Length VRSI)")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
up2 = rma(max(change(src2), 0), len2)
down2 = rma(-min(change(src2), 0), len2)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsi2 = down2 == 0 ? 100 : up2 == 0 ? 0 : 100 - (100 / (1 + up2 / down2))

// MA(=Moving Average) of RSI(close, ="MARSI") and RSI(Volume, ="MAVRSI")
len3 = input(5, minval=1, title="Length MARSI")
marsi = sma(rsi, len3)
len4 = input(5, minval=1, title="Length MAVRSI")
marsi2 = sma(rsi2, len4)

// Plot: 
// Default plot of RSI and VRSI: not visible but can be made visible
// Default plot MARSI and MAVRSI: visible
p1 = plot(rsi, linewidth=2, transp=100, color=color.yellow, title="RSI")
p2 = plot(rsi2, linewidth=2, transp=100, color=color.orange, title="VRSI")
m1 = plot(marsi, color=(marsi>=0 ? (marsi[1] < marsi ? color.yellow : color.blue) : (marsi[1] < marsi ? color.yellow : color.blue) ), linewidth = 2, transp = 0, title="MARSI")
m2 = plot(marsi2, color=color.orange, linewidth = 2, transp = 0, title="MAVRSI")

// Color fill:
// Default color fill "RSI - VRSI": not visible but can be made visible
// Default color fill "MARSI - MAVRSI": visible
fill(p1,p2, color = rsi>rsi2 ? color.green : color.red, transp=100, title="BG RSI-VRSI")
fill(m1,m2, color = marsi>marsi2 ? color.green : color.red, transp=75, title="BG MARSI-MAVRSI")

// Lines:
h2=hline(20, color=color.green, linestyle=hline.style_dotted, title="Extreme Oversold Rsi")
h3=hline(30, color=color.black, linestyle=hline.style_dotted, title="Oversold Rsi")
h5=hline(50, color=color.yellow, linestyle=hline.style_dashed, title="Middle line")
h7=hline(70, color=color.black, linestyle=hline.style_dotted, title="Overbought Rsi")
h8=hline(80, color=color.red, linestyle=hline.style_dotted, title="Extreme Overbought Rsi")

// Color fill between Lines "20-30" and "70-80" represents the crossing of "MARSI" and "MAVRSI":
fill(h2, h3, color=(marsi2 > marsi ? color.red : color.green), transp=80, title="20-30 BG color X MARSI/MAVRSI")
fill(h7, h8, color=(marsi2 > marsi ? color.red : color.green), transp=80, title="70-80 BG color X MARSI/MAVRSI")

///Long Entry///
longCondition = marsi > marsi[1] 
if (longCondition)
    strategy.entry("Long", strategy.long)

///Long exit///
Xlong =input(true)
closeConditionLong = marsi < marsi[1] and Xlong
if (closeConditionLong)
    strategy.close("Long")

///Short Entry///
shortCondition = marsi < marsi[1] 
if (shortCondition)
    strategy.entry("Short", strategy.short)
    
///Short exit///
Xshort =input(true)
closeConditionShort = marsi > marsi[1] and Xshort
if (closeConditionShort)
    strategy.close("Short")