
レンコ平均真波幅のトレンド逆転戦略 (Renko ATR Trend Reversal Strategy) は,レンコグラフと平均真波幅 (ATR) の指標を組み合わせて,金融市場のトレンド逆転点を識別することを目的としたユニークな取引戦略である.この戦略は,レンコグラフの遅滞描画の問題を取り除き,ターニングポイントを正確に捕捉し,取引決定に明確な信号を提供します.
この戦略は,まず,一定の周期内のATRの値を計算し,このATRを基準としてRenko図のブロックサイズを設定する.価格が1つのATRを超えると新しいRenkoブロックが描かれます.この方法で,Renko図は,市場の波動程度に自動的に適応し,高い波動時に大きなブロックサイズを設定し,低い波動時に小さなブロックサイズを設定します.
レンコの開値が閉値を下に突破すると,買入シグナルが生成され,レンコの開値が閉値に突破すると,売り出シグナルが生成されます.これらのシグナルは潜在的トレンドの逆転点を示すものです.
この戦略は,ユーザが定義したストップ・ロス・パーセントとストップ・ストップ・パーセントに基づいて,Renkoの開場価格を基準として,各取引のストップ・ロス・価格とストップ・ストップ・価格を動的に設定し,各取引のリスクと利益を制御する.
この戦略は,手動でレンコの開値と閉値を計算することで,遅滞描写の問題を取り除き,信号の生成をより正確かつタイムリーにします.
ATR指数に基づくRenkoブロックサイズ設定により,戦略は異なる市場条件下での価格変動率に自動的に適応できます.
この戦略は,各取引ごとにダイナミックな止損と停止メカニズムを設定し,市場の波動程度に応じてリスクを制御します.
レンコのグラフは市場騒音を消去し,トレンドの逆転を識別する明確な簡潔な視覚効果を提供します.
ユーザは,ATR周期,ストップ・ローズ・パーセント,ストップ・パーセンテージなどのパラメータを,異なる市場環境に対応するために最適化する必要があります.パラメータを正しく設定しなければ,戦略の効果が低下します.
重大な経済事件や政策の出台により,急激な放出が起こり,その結果,止損または停止のレベルが突破され,大きな損失が生じます.
取引シグナルによって決定された逆転は,いくつかの場合,失敗し,価格を逆転方向に動かすことができず,損失を招く可能性があります.
より高い時間周期で大トレンドを判断し,逆転取引を避ける.また,より低い時間周期で偽信号をフィルターすることができる.
運動指数,波動率指数などと組み合わせて使用すると,信号の質を高め,誤信号を回避できる.
ストップの比率は,市場の波動程度と最新の価格とエントリーポイントの距離に応じて動的に調整できます.
レンコ平均の実際の波幅に基づいたトレンド反転戦略は,レンコグラフとATR指標を組み合わせて金融市場の転換点を自動的に識別することに成功している.この戦略は,遅延図を描画をなくし,市場変動率を自動的に適応し,ダイナミックストップストップなどの利点がある.同時に,ユーザーは,警戒パラメータの設定と最適化リスク,および突発事件と反転の失敗のリスクも必要である.複数の時間周期分析,指標の組み合わせ,ストップストップ,および調整などの方法で,この戦略を最適化し続け,効果を向上させることができる.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title='[tradinghook] - Renko Trend Reversal Strategy', shorttitle='[tradinghook] - Renko TRS', overlay=true ,initial_capital = 100, commission_value = 0.05, default_qty_value = 5)
// INPUTS
renkoATRLength = input.int(10, minval=1, title='ATR Length')
stopLossPct = input.float(3, title='Stop Loss Percentage', step=0.1)
takeProfitPct = input.float(20, title='Take Profit Percentage', step=0.1)
startDate = input(timestamp("01 July 2023 00:00"), title="Start Date")
endDate = input(timestamp("31 Dec 2025 23:59"), title="End Date")
enableShorts = input.bool(true, title="Enable Shorts")
var float stopLossPrice = na
var float takeProfitPrice = na
atr = ta.atr(renkoATRLength)
// thanks to https://www.tradingview.com/script/2vKhpfVH-Renko-XZ/ for manually calculating renkoClose and renkoOpen in order to remove repaint
getRenkoClose() =>
p1 = 0.0
p1 := close > nz(p1[1]) + atr ? nz(p1[1]) + atr : close < nz(p1[1]) - atr ? nz(p1[1]) - atr : nz(p1[1])
p1
Renko3() =>
p3 = 0.0
p3 := open > nz(p3[1]) + atr ? nz(p3[1]) + atr : open < nz(p3[1]) - atr ? nz(p3[1]) - atr : nz(p3[1])
p3
getRenkoOpen() =>
open_v = 0.0
Br_2 = Renko3()
open_v := Renko3() != Renko3()[1] ? Br_2[1] : nz(open_v[1])
open_v
renkoOpen = getRenkoOpen()
renkoClose = getRenkoClose()
// COLORS
colorGreen = #089981
colorRed = #F23645
bgTransparency = 95
bgColorRed = color.new(colorRed, bgTransparency)
bgColorGreen = color.new(colorGreen, bgTransparency)
lineColor = renkoClose < renkoOpen ? colorRed : colorGreen
bgColor = renkoClose < renkoOpen ? bgColorRed : bgColorGreen
// PLOTS
plot(renkoOpen, title="Renko Open", style=plot.style_line, linewidth=2, color=lineColor)
bgcolor(bgColor)
// SIGNALS
isWithinTimeRange = true
buySignal = ta.crossunder(renkoOpen, renkoClose) and isWithinTimeRange
sellSignal = ta.crossover(renkoOpen, renkoClose) and isWithinTimeRange and enableShorts
if (buySignal)
stopLossPrice := renkoOpen * (1 - stopLossPct / 100)
takeProfitPrice := renkoOpen * (1 + takeProfitPct / 100)
strategy.entry("Long", strategy.long)
strategy.exit("ExitLong", "Long", stop = stopLossPrice, limit = takeProfitPrice, comment="SL: " + str.tostring(stopLossPrice) + ", TP: " + str.tostring(takeProfitPrice))
if (sellSignal)
stopLossPrice := renkoOpen * (1 + stopLossPct / 100)
takeProfitPrice := renkoOpen * (1 - takeProfitPct / 100)
strategy.entry("Short", strategy.short)
strategy.exit("ExitShort", "Short", stop = stopLossPrice, limit = takeProfitPrice, comment="SL: " + str.tostring(stopLossPrice) + ", TP: " + str.tostring(takeProfitPrice))