レンコATRトレンド逆転戦略は,金融市場のトレンド逆転点を特定するために,レンコチャートと平均真差 (ATR) インジケーターを組み合わせて利用するユニークな取引アプローチです.この戦略は,レンコチャートの再塗装問題を排除することで,ターニングポイントを正確に把握し,取引決定のための明確な信号を提供します.
この戦略は,最初に定義された期間におけるATR値を計算し,このATRをレンコチャートのブロックサイズとして使用する.価格変動が1ATRを超えると新しいレンコブロックが引き出されます.この方法で,レンコチャートは市場の変動に自動的に適応することができ,より高い変動のために大きなブロックサイズと,より低い変動期間のために小さなブロックサイズがあります.
レンコチャートのオープン価格が閉値を下回ると購入信号が生成される.逆に,オープン価格が閉値を下回ると販売信号が生成される.これらの信号は潜在的なトレンド逆転点をマークする.
この戦略は,ユーザーによって定義された入力パラメータに基づいて,Renkoのオープン価格の割合として,各取引のストップ・ロストとテイク・プロフィートのレベルを動的に設定します.これは,各取引のリスクと報酬を制御します.
手動で開閉価格を計算することで,再塗装はなくなり,信号がより正確でタイムリーになります.
ATRベースのブロックサイズにより,戦略は異なる市場変動条件に自動的に適応できます.
ストップ・ロースとテイク・プロフィートのレベルを設定するダイナミックメカニズムは,市場の変動に基づいてよりよいリスク管理を可能にします.
市場騒音をフィルタリングし,トレンド逆転を検出するための 明確な視覚を提供します.
ユーザーには,異なる市場環境のためにATR期間,ストップ損失%および利益%を最適化する必要があります. 悪いパラメータ設定は戦略のパフォーマンスを低下させることができます.
主要なニュースイベントや政策発表は,ストップ損失を超えた急速な滑りや利益レベルを引き上げ,大きな損失を引き起こす可能性があります.
取引が損をする場合もありますが 取引が損をする場合もあります
より長いタイムフレームは,全体的なトレンドの方向性を測定するために使用できます.より短いタイムフレームは,誤った信号をフィルタリングすることができます.
動力,波動性,その他の指標を組み合わせることで,信号の質が向上し,誤った信号を避けることができます.
市場変動とエントリー価格と現在の価格の間の距離に基づいて,収益率を動的に調整することができます.
レンコ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))