Level by Level Build Up Moving Average戦略は,RENKOチャートに基づいた取引戦略である.これは,異なるタイムフレームの移動平均値間の価格とクロスオーバーをシグナルとしてスムーズにするために移動平均指標を使用する.一方,より合理的なストップのためにストップ損失レベルを決定するためにATR指標を使用する.
この戦略の基本論理には,次のことが含まれます.
RENKOのタイムフレームとATR期間を選択するために入力を使用
RENKOの価格と色を計算します.価格が前のRENKO価格プラス現在のATRを突破すると上向きにします.価格が前のRENKO価格マイナス現在のATRを下向きにします.
現在のロングとショートポジションを記録するために BUYとSELLという2つの整数を使用します.
breakout のとき,short ポジションがない場合,ロング になります. ダウンブレイク時,ロングポジションがない場合はショートします.
グラフを使って RENKO のグラフをグラフ化します
このロジックにより,価格が前のレベルを突破するとロングまたはショートを開くことができ,価格が逆転するとポジションを閉じる.ブレイクアウト範囲を決定するためにATRを使用すると,現在の変動に基づいてストップロスはより合理的です.
この戦略には以下の利点があります.
RENKO は 騒音 を フィルタリング し,傾向 を 特定 し ます RENKOは価格騒音を効果的にフィルタリングし,重要なトレンドを特定することができます.この組み合わせはトレンド検出と追跡に最適です.
移動平均のクロスオーバーは取引信号を生成する 異なるタイムフレームの移動平均値のクロスオーバーは,信頼できる取引信号を提供し,ノイズによる誤った信号を避けることができます.
ATRで動的停止 ATRを動的にストップ・ロスを設定するために使用すると,現在の変動性に基づいてストップをより合理的にし,あまりにも幅広くまたは狭すぎないストップを避けることができます.
トレンドと移動平均の組み合わせ トレンドと移動平均指標を組み合わせると 両方の強みを活用します 移動平均値で信頼できる信号を保証しながら RENKO でトレンドを捉えます
この戦略にはいくつかのリスクもあります:
誤った傾向の特定 RENKO が 傾向 を 決定 する 方法 は,不要 な ロング と ショート に 繋がる こと が でき ます.誤った 信号 を 減らす ため に パラメータ を 最適化 する 必要 が あり ます.
移動平均のクロスオーバーからの誤った信号
移動平均のクロスオーバーから誤った信号があり,不必要な取引を引き起こす可能性があります.移動平均期間を最適化することができます.
誤ったATRパラメータ 誤ったATR期間設定は,あまりにも広いまたはあまりにも狭いストップにつながることもあります.最適なパラメータのために異なる市場をテストする必要があります.
ウィップソー市場 横向または強いウィップソー市場では,RENKOは多くの不必要な取引を生成し,資本を占拠する可能性があります.そのような市場での取引を避けるために他のフィルタが必要です.
戦略は以下の側面で最適化できます.
RENKOとATRのパラメータを最適化
このパラメータを調整して RENKOの誤った信号を最小限に抑え 傾向を把握する
移動平均のクロスオーバーフィルターを追加する 移動平均値を追加し 誤った信号をフィルタリングするために 信号を生成する前に ほとんどの移動平均を調整するようにします
他の指標フィルターを追加する 例えば,取引量を増やして,取引量が価格を確認するときにのみ取引を行うこと.
ストップ・ロスの戦略を改善する より論理的なストップをするために ATRを追跡するのではなく 傾向に基づくストップを使用する方法を探します
資金管理を最適化する リスクをコントロールしながら 収益を最大化するために この戦略の下で 最適な資本配分を研究します
一般的に,これはライブマーケットで最適化およびテストする価値のある戦略である.トレンドと移動平均クロスオーバーをフィルタリングされた信号としてRENKOを使用する基本的な考えは健全である.動的ATRストップにより,堅固なトレンドフォローシステムになることができます.次のステップは,パラメータとパフォーマンスを向上させるために既知のリスクに基づいてそれを最適化し続けることです.
/*backtest start: 2022-09-19 00:00:00 end: 2023-09-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Renko Level Strategy 2", shorttitle="RLS2", overlay=true, pyramiding=2, currency=currency.USD, default_qty_value=50, initial_capital=2000, default_qty_type=strategy.percent_of_equity) TF = input(title='TimeFrame', type=input.resolution, defval="D") ATRlength = input(title="ATR length", type=input.integer, defval=14, minval=2, maxval=100) HIGH = security(syminfo.tickerid, TF, high) LOW = security(syminfo.tickerid, TF, low) CLOSE = security(syminfo.tickerid, TF, close) ATR = security(syminfo.tickerid, TF, atr(ATRlength)) float RENKO = na color COLOR = na int BUY = na int SELL = na bool UP = na bool DN = na RENKO := na(RENKO[1]) ? close : RENKO[1] COLOR := na(COLOR[1]) ? color.white : COLOR[1] BUY := na(BUY[1]) ? 0 : BUY[1] SELL := na(SELL[1]) ? 0 : SELL[1] UP := false DN := false if(close > RENKO[1]+ATR[1]) UP := true RENKO := close COLOR := color.lime SELL := 0 BUY := BUY+1 if(close < RENKO[1]-ATR[1]) DN := true RENKO := close COLOR := color.red BUY := 0 SELL := SELL+1 if(BUY[1]==1 and BUY==2) strategy.entry("long", strategy.long)//, limit = RENKODN) if(DN) strategy.cancel_all() strategy.close_all(comment = "close") plot(RENKO, style=plot.style_line, linewidth=2, color=COLOR)