实现 TradingFinder 或 TFLab 风格的 自动支撑/阻力 (主要与次要) 及市场结构 (Market Structure) 算法,核心在于通过波动率、分形 (Fractals) 以及价格触及频率来量化价格波动。这可以通过 TradingView 的 Pine Script 或 Python 轻松构建。
以下是实现该算法的核心逻辑与分步指南:
一、 核心算法逻辑
1. 识别关键枢轴点 (Fractal Pivots)
算法的第一步是寻找具有局部高点和低点的 K 线。
- 分形逻辑:一个枢轴高点 (Pivot High) 指的是当前 K 线的最高价高于其左侧 N 根 K 线,且高于其右侧 N 根 K 线。
- 枢轴低点 (Pivot Low) 逻辑相反。
- N 值越大,筛选出的枢轴级别越高、越重要。
2. 区分主要与次要级别 (Major / Minor Levels)
3. 市场结构标记 (Market Structure - BOS / CHoCH)
- 结构突破 (BOS - Break of Structure):当价格实体收盘价突破前一个主要的枢轴高点(看涨趋势)或低点(看跌趋势)时,确认趋势延续。 [1]
- 趋势反转 (CHoCH - Change of Character):当价格反向跌破最近的关键回调低点(看涨变看跌)或涨破关键高点时,确认潜在趋势反转。 [1]
二、 Pine Script 实现示例 (TradingView)
以下是一个自动化提取基础枢轴 S/R 级别并标出分形结构的 Pine Script 核心示例代码: [1]
pinescript
//@version=5
indicator("Swing Structure & S/R [Auto]", overlay=true)
// 1. 设置分形周期 (可调)
leftBars = input.int(3, title="Left Bars")
rightBars = input.int(3, title="Right Bars")
// 2. 获取分形枢轴
pH = ta.pivothigh(leftBars, rightBars)
pL = ta.pivotlow(leftBars, rightBars)
// 3. 记录枢轴价格和位置
var float last_pH = na
var float last_pL = na
if not na(pH)
last_pH := pH
line.new(bar_index - rightBars, pH, bar_index, pH, color=color.red, width=2)
if not na(pL)
last_pL := pL
line.new(bar_index - rightBars, pL, bar_index, pL, color=color.green, width=2)
// 4. 市场结构标记示例 (BOS - 向上突破)
if not na(last_pH) and close > last_pH and close[1] <= last_pH
label.new(bar_index, high, "BOS", style=label.style_label_up, color=color.new(color.green, 0), textcolor=color.white)
Use code with caution.
No comments:
Post a Comment