
この戦略は,レンコグラフと相対活力指数 (RVI) の2つの指標を融合させ,主要市場のトレンドのほとんどを捕捉することを目指しています.これはビットコイン,恒指などの主流品種に適用されます.
戦略は9期ATRを使用してレンコを構築し,閉じる価格が前のレンコの高点を超えると新しいを構築し,緑色で表示され,閉じる価格が前のレンコ低点を下回ると新しいを構築し,赤色で表示され,RVI指標と組み合わせてトレンドの方向を決定する.
RVI指標は,多頭力と空頭力の相対的な強さを判断するために使用される.RVI値は0-1の間で波動し,0.5以上は多頭力が空頭より強いことを示し,0.5未満は空頭力が多頭力より強いことを示している.RVI上を通過すると空頭力が弱まり,多頭力が強化され,空頭信号が与えられます.RVI下を通過すると空頭力が弱まり,空頭力が強化され,空頭信号が与えられます.
総合的なRenko方向とRVI指標の多多空調信号を出し,対応する多頭または空頭ポジションに入る。
この戦略は,二つの異なるタイプの指標の優位性を統合し,市場の主流のトレンドを捉えることを目的としている.RenkoとRVIのパラメータを最適化することで,より高い安定性を得ることができる.しかし,どのモデルも完璧ではない,あるシグナルを逃すのは避けられない,主要な方向を把握することの鍵である.ユーザーは,自分のリスクの好みを明確に評価し,自分の品種とパラメータに適した選択する必要がある.
/*backtest
start: 2023-01-28 00:00:00
end: 2024-02-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Lancelot RR Strategy", overlay=false)
p=9
CO=close-open
HL=high-low
value1 = (CO + 2*CO[1] + 2*CO[2] + CO[3])/6
value2 = (HL + 2*HL[1] + 2*HL[2] + HL[3])/6
num=sum(value1,p)
denom=sum(value2,p)
RVI=denom!=0?num/denom:0
RVIsig=(RVI+ 2*RVI[1] + 2*RVI[2] + RVI[3])/6
rvicloselongcondition = crossunder(RVI, RVIsig)
rvicloseshortcondition = crossover(RVI, RVIsig)
plot(RVI,color=green,style=line,linewidth=1)
plot(RVIsig,color=red,style=line,linewidth=1)
bgcolor(rvicloseshortcondition ? green : na, transp = 75)
bgcolor(rvicloselongcondition ? red : na, transp = 75)
///Renko///
TF = input(title='TimeFrame', defval="D")
ATRlength = input(title="ATR length", defval=9, minval=2, maxval=100)
SMAlength = input(title="SMA length", defval=5, minval=2, maxval=100)
SMACurTFlength = input(title="SMA CurTF length", defval=20, minval=2, maxval=100)
HIGH = request.security(syminfo.tickerid, TF, high)
LOW = request.security(syminfo.tickerid, TF, low)
CLOSE = request.security(syminfo.tickerid, TF, close)
ATR = request.security(syminfo.tickerid, TF, atr(ATRlength))
SMA = request.security(syminfo.tickerid, TF, sma(close, SMAlength))
SMACurTF = sma(close, SMACurTFlength)
RENKOUP = na
RENKODN = na
H = na
COLOR = na
BUY = na
SELL = na
UP = na
DN = na
CHANGE = na
RENKOUP := na(RENKOUP[1]) ? ((HIGH+LOW)/2)+(ATR/2) : RENKOUP[1]
RENKODN := na(RENKOUP[1]) ? ((HIGH+LOW)/2)-(ATR/2) : RENKODN[1]
H := na(RENKOUP[1]) or na(RENKODN[1]) ? RENKOUP-RENKODN : RENKOUP[1]-RENKODN[1]
COLOR := na(COLOR[1]) ? white : COLOR[1]
BUY := na(BUY[1]) ? 0 : BUY[1]
SELL := na(SELL[1]) ? 0 : SELL[1]
UP := false
DN := false
CHANGE := false
if(not CHANGE and close >= RENKOUP[1]+H*3)
CHANGE := true
UP := true
RENKOUP := RENKOUP[1]+ATR*3
RENKODN := RENKOUP[1]+ATR*2
COLOR := lime
SELL := 0
BUY := BUY+3
if(not CHANGE and close >= RENKOUP[1]+H*2)
CHANGE := true
UP := true
RENKOUP := RENKOUP[1]+ATR*2
RENKODN := RENKOUP[1]+ATR
COLOR := lime
SELL := 0
BUY := BUY+2
if(not CHANGE and close >= RENKOUP[1]+H)
CHANGE := true
UP := true
RENKOUP := RENKOUP[1]+ATR
RENKODN := RENKOUP[1]
COLOR := lime
SELL := 0
BUY := BUY+1
if(not CHANGE and close <= RENKODN[1]-H*3)
CHANGE := true
DN := true
RENKODN := RENKODN[1]-ATR*3
RENKOUP := RENKODN[1]-ATR*2
COLOR := red
BUY := 0
SELL := SELL+3
if(not CHANGE and close <= RENKODN[1]-H*2)
CHANGE := true
DN := true
RENKODN := RENKODN[1]-ATR*2
RENKOUP := RENKODN[1]-ATR
COLOR := red
BUY := 0
SELL := SELL+2
if(not CHANGE and close <= RENKODN[1]-H)
CHANGE := true
DN := true
RENKODN := RENKODN[1]-ATR
RENKOUP := RENKODN[1]
COLOR := red
BUY := 0
SELL := SELL+1
plotshape(UP, style=shape.arrowup, location=location.bottom, size=size.normal)
renkolongcondition = UP
renkoshortcondition = DN
///Long Entry///
longcondition = UP
if (longcondition)
strategy.entry("Long", strategy.long)
///Long exit///
closeconditionlong = rvicloselongcondition
if (closeconditionlong)
strategy.close("Long")