これは,波動性とウィリアムズ百分比範囲指標を組み合わせる適応型トレンドフォロー戦略である.この戦略は,価格範囲とカスタムカウンタを計算することによってトレンド決定感度を調整し,異なる市場条件でより良い適応性を達成する.コアメカニズムは,価格波動に基づいてウィリアムズ指標パラメータを動的に調整して,市場のトレンド移行点をより正確に把握することを含む.
この戦略は,価格範囲とその移動平均 (AvgRange) を期間中に計算することによって始まる.平均変動範囲とのリアルタイム価格変化を比較することによって,重要な変動頻度を記録するために2つのカウンター (TrueCountとTrueCount2) を確立する.これらのカウンターは,ウィリアムズ指標計算パラメータを動的に調整するために使用され,戦略が市場変動条件に基づいて敏感性を自動的に調整することを可能にする.調整されたウィリアムズ指標値が事前に設定された
この革新的な戦略は,変動分析とトレンドフォローを組み合わせ,適応メカニズムを通じて戦略の安定性と信頼性を向上させる.固有のリスクが存在するものの,戦略は適切なパラメータ設定と最適化実装を通じてさまざまな市場条件で安定したパフォーマンスを維持することができる.戦略の枠組みは,さらなる拡大と最適化が可能で,良好な開発の可能性を示している.
/*backtest start: 2024-10-28 00:00:00 end: 2024-11-27 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("ASCTrend", shorttitle="ASCTrend", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) eternalfg = input(false, title="eternal 確定") eternal = eternalfg ? 1 : 0 ASClength = input.int(title="ASC Length", minval=4, defval=10) RISK = input.int(title="RISK", minval=0, defval=3) // Custom sum function customSum(source, length) => sum = 0.0 for i = 0 to length - 1 sum := sum + source[i] sum x1 = 67 + RISK x2 = 33 - RISK Range = ta.highest(ASClength) - ta.lowest(ASClength) AvgRange = ta.sma(Range, ASClength) CountFg = math.abs(open - close) >= AvgRange * 2.0 ? 1 : 0 TrueCount = customSum(CountFg, ASClength) CountFg2 = math.abs(close[3] - close) >= AvgRange * 4.6 ? 1 : 0 TrueCount2 = customSum(CountFg2, ASClength - 3) wpr3RR = ta.wpr(3 + RISK + RISK) wpr3 = ta.wpr(3) wpr4 = ta.wpr(4) WprAbs = 100 + (TrueCount2 > 0 ? wpr4 : TrueCount > 0 ? wpr3 : wpr3RR) ASC_Trend = 0 ASC_Trend := WprAbs[eternal] < x2[eternal] ? -1 : WprAbs[eternal] > x1[eternal] ? 1 : ASC_Trend[1] if (ta.crossover(ASC_Trend, 0)) strategy.entry("Long", strategy.long) if (ta.crossunder(ASC_Trend, 0)) strategy.entry("Short", strategy.short) plotshape(ta.crossover(ASC_Trend, 0), location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small, text="B", textcolor=color.white) plotshape(ta.crossunder(ASC_Trend, 0), location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small, text="S", textcolor=color.white) alertcondition(ta.crossover(ASC_Trend, 0), title="ASC_Trend UP", message="ASC_Trend UP") alertcondition(ta.crossunder(ASC_Trend, 0), title="ASC_Trend Down", message="ASC_Trend Down")