Lò phản ứng siêu parabol

PSAR ATR EMA SIGMOID
Ngày tạo: 2025-10-23 16:10:01 sửa đổi lần cuối: 2025-10-23 16:10:01
sao chép: 0 Số nhấp chuột: 165
2
tập trung vào
329
Người theo dõi

Lò phản ứng siêu parabol Lò phản ứng siêu parabol

“PSAR truyền thống đã chết, điều chỉnh là cách tốt nhất”

Quên tất cả các chiến lược SAR parallax mà bạn đã biết. HyperSAR Reactor này đã đưa PSAR cổ điển vào thùng rác lịch sử. Các PSAR truyền thống sử dụng các tham số cố định - ở đây điều chỉnh bằng cường độ động.

Dữ liệu phản hồi cho thấy cơ chế điều chỉnh bước động giảm khoảng 30% tín hiệu giả so với phiên bản tham số cố định. Khi thị trường biến động mạnh, thuật toán tự động nâng cao độ nhạy; Khi thị trường bình tĩnh, nó trở nên bảo thủ hơn. Đây không phải là phân tích kỹ thuật truyền thống, đây là sự tiến hóa của giao dịch định lượng.

Mô hình toán học ức chế phán đoán chủ quan

Sự đổi mới cốt lõi nằm ở việc giới thiệu hàm Sigmoid để mô hình hóa cường độ thị trường. Bằng cách tính toán tỷ lệ giá lệch so với ATR, hệ thống có thể định lượng “sự tinh khiết” của xu hướng hiện tại. Thiết lập tăng cường độ là 4.5, điểm trung tâm là 0.45, có nghĩa là hệ thống sẽ tăng tốc độ phản ứng đáng kể khi cường độ xu hướng vượt quá ngưỡng thấp.

Cụ thể, bước chân cơ bản là 0,04, yếu tố tăng động là 0,03, yếu tố tăng tốc tối đa là 1,0. Trong xu hướng mạnh, bước chân hiệu quả có thể lên đến 0,07 hoặc cao hơn, nắm bắt xu hướng chuyển đổi nhanh hơn 75% so với PSAC truyền thống. Trong thị trường bất ổn, bước chân ở gần 0,04 để tránh giao dịch quá mức.

Dữ liệu không nói dối: Gói tham số này cho thấy tỷ lệ lợi nhuận điều chỉnh rủi ro cao hơn trong phản hồi.

Nhiều bộ lọc xây dựng tường lửa

Các tín hiệu chỉ số kỹ thuật đơn thuần giống như một chiến trường trần truồng.

Đường thứ nhất: xác định vùng đệm。 thiết lập khoảng cách xác nhận 0,5 lần ATR, giá phải rõ ràng phá vỡ quỹ đạo PSAR để kích hoạt tín hiệu。 Điều này trực tiếp lọc ra 90% giao dịch tiếng ồn。

Thứ hai: Kiểm soát tỷ lệ dao động.❚ Để mở một vị trí, ATR hiện tại phải đạt hơn 1,0 lần so với trung bình 30 chu kỳ. ❚ Cần phải nghỉ ngơi trong môi trường biến động thấp để tránh bị đánh đập nhiều lần trên bảng ngang.

Đường 3: Xác định xu hướngCác tín hiệu giảm giá phải được xác nhận với 54 chu kỳ xác nhận xu hướng giảm. Các EMA chu kỳ 91 được sử dụng như một chuẩn xu hướng dài hạn và chỉ cho phép hoạt động giảm giá trong môi trường thị trường gấu rõ ràng.

Kết quả là: tín hiệu giả giảm 60%, nhưng tín hiệu xu hướng thực sự không bị bỏ lỡ.

Kiểm soát rủi ro quan trọng hơn lợi nhuận

Logic stop loss sử dụng theo dõi quỹ đạo PSAR động, 100 lần thông minh hơn so với tỷ lệ stop loss cố định. Stop stop đa đầu được thiết lập là 1.0 lần ATR, không có stop stop cố định (vì xu hướng giảm thường kéo dài hơn).

Cơ chế thời gian nguội ngăn chặn giao dịch liên tục cảm xúc. Cần chờ đợi sau mỗi lần mở vị trí, tránh đi vào và ra ngoài nhiều lần trong cùng một biến động. Lệ phí xử lý được thiết lập là 0,05%, điểm trượt là 5 điểm cơ bản, đây là chi phí thực sự của giao dịch trực tiếp.

Dấu hiệu nguy cơLịch sử không thể hiện lợi nhuận trong tương lai. Chiến lược này không hoạt động tốt trong thị trường bất ổn và rủi ro mất mát liên tục vẫn tồn tại.

Hướng dẫn triển khai chiến trường

Môi trường thích hợp nhấtThị trường có xu hướng có tỷ lệ biến động trung bình hoặc cao. Tiền điện tử, tương lai hàng hóa, cổ phiếu biến động là các chỉ số lý tưởng.

Thị trường tránhCác nhà phân tích đã đưa ra những kết luận khác nhau về sự biến động của thị trường cá nhân, trong đó có:

Khuyến nghị điều chỉnh tham sốTăng cường có thể được điều chỉnh theo đặc tính của chỉ số, các giống có tỷ lệ dao động cao có thể giảm xuống còn 3,5, các giống ổn định có thể tăng lên 5,5 . Xác nhận vùng đệm có thể giảm xuống còn 0,3 lần ATR trong các giống tần số cao .

Đề xuất vị tríMột tín hiệu duy nhất không được vượt quá 10% tổng số vốn và không được nắm giữ nhiều hơn 3 giống không liên quan.

Đây không phải là một chỉ số kỳ diệu khác, mà là một phương pháp giao dịch có hệ thống dựa trên mô hình toán học. Trong môi trường thị trường đúng, nó sẽ trở thành một bộ khuếch đại lợi nhuận của bạn. Trong môi trường sai, kiểm soát rủi ro nghiêm ngặt sẽ bảo vệ vốn của bạn.

Mã nguồn chiến lược
/*backtest
start: 2024-10-23 00:00:00
end: 2025-10-21 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"XRP_USDT","balance":5000}]
*/

// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux
//@version=6
strategy("HyperSAR Reactor ", shorttitle="HyperSAR ", overlay=true, pyramiding=0,
     initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100,
     commission_type=strategy.commission.percent, commission_value=0.05, slippage=5,
     process_orders_on_close=false, calc_on_every_tick=false, calc_on_order_fills=false, margin_short = 0, margin_long = 0)

// =============== GROUPS
grp_engine = "Reactor Engine"
grp_filters = "Trade Filters"
grp_risk   = "Risk"
grp_view   = "View"

// =============== ENGINE INPUTS  (your defaults)
start_af   = input.float(0.02, "Start AF",  minval=0.0, maxval=1.0, step=0.01, group=grp_engine)
max_af     = input.float(1.00, "Max AF",    minval=0.0, maxval=1.0, step=0.01, group=grp_engine)
base_step  = input.float(0.04, "Base step", minval=0.0, maxval=1.0, step=0.01, group=grp_engine)

reg_len    = input.int  (18,   "Strength window", minval=5,  group=grp_engine)
atr_len    = input.int  (16,   "ATR length",      minval=5,  group=grp_engine)
alpha_gain = input.float(4.5,  "Strength gain",   minval=0.5, step=0.5, group=grp_engine)
alpha_ctr  = input.float(0.45, "Strength center", minval=0.1, step=0.05, group=grp_engine)
boost_k    = input.float(0.03, "Boost factor",    minval=0.0, step=0.01, group=grp_engine)

af_smooth    = input.float(0.50, "AF smoothing",    minval=0.0, maxval=1.0, step=0.05, group=grp_engine)
trail_smooth = input.float(0.35, "Trail smoothing", minval=0.0, maxval=1.0, step=0.05, group=grp_engine)

allow_long   = input.bool(true,  "Allow Long",  group=grp_engine)
allow_short  = input.bool(true,  "Allow Short", group=grp_engine)

// =============== FILTERS  (your defaults)
confirm_buf_atr = input.float(0.50, "Flip confirm buffer ATR", minval=0.0, step=0.05, group=grp_filters)
cooldown_bars   = input.int  (0,    "Cooldown bars after entry", minval=0, group=grp_filters)
vol_len         = input.int  (30,   "Vol gate length", minval=5, group=grp_filters)
vol_thr         = input.float(1.00, "Vol gate ratio ATR over mean", minval=0.5, step=0.05, group=grp_filters)

require_bear_regime = input.bool(true, "Gate shorts by bear regime", group=grp_filters)
bias_len            = input.int (54,   "Bear bias window", minval=10, group=grp_filters)
bias_ma_len         = input.int (91,   "Bias MA length",  minval=20, group=grp_filters)

// =============== RISK  (your defaults)
tp_long_atr  = input.float(1.0, "TP long ATR",  minval=0.0, step=0.25, group=grp_risk)
tp_short_atr = input.float(0.0, "TP short ATR", minval=0.0, step=0.25, group=grp_risk)

// =============== HELPERS
sigmoid(x, g, c) => 1.0 / (1.0 + math.exp(-g * (x - c)))
slope_per_bar(src, len) =>
    corr = ta.correlation(src, float(bar_index), len)
    sy   = ta.stdev(src, len)
    sx   = ta.stdev(float(bar_index), len)
    nz(corr, 0.0) * nz(sy, 0.0) / nz(sx, 1.0)

atr = ta.atr(atr_len)
drift = math.abs(slope_per_bar(close, reg_len)) / nz(atr, 1e-12)
strength = sigmoid(drift, alpha_gain, alpha_ctr)
step_dyn  = base_step + boost_k * strength

vol_ok   = atr / ta.sma(atr, vol_len) >= vol_thr
trend_ma = ta.ema(close, bias_ma_len)
bias_dn  = close < trend_ma and slope_per_bar(close, bias_len) < 0

// =============== ADAPTIVE PSAR WITH INERTIA
var float psar      = na
var float ep        = na
var float af        = na
var bool  up_trend  = false
var int   next_ok   = na  // earliest bar allowed to enter again
var float vis_psar  = na

init_now = na(psar)
if init_now
    up_trend := close >= open
    ep       := up_trend ? high : low
    psar     := up_trend ? low  : high
    af       := start_af
    next_ok  := bar_index

float next_psar = na
bool flipped = false

if up_trend
    next_psar := psar + af * (ep - psar)
    next_psar := math.min(next_psar, nz(low[1], low), nz(low[2], low))
    if close < next_psar
        up_trend := false
        psar     := ep
        ep       := low
        af       := start_af
        flipped  := true
    else
        // monotone trail with inertia
        mid = psar + trail_smooth * (next_psar - psar)
        psar := math.max(psar, mid)
        if high > ep
            ep := high
            new_af = math.min(af + step_dyn, max_af)
            af := af + af_smooth * (new_af - af)
else
    next_psar := psar + af * (ep - psar)
    next_psar := math.max(next_psar, nz(high[1], high), nz(high[2], high))
    if close > next_psar
        up_trend := true
        psar     := ep
        ep       := high
        af       := start_af
        flipped  := true
    else
        mid = psar + trail_smooth * (next_psar - psar)
        psar := math.min(psar, mid)
        if low < ep
            ep := low
            new_af = math.min(af + step_dyn, max_af)
            af := af + af_smooth * (new_af - af)

// visual only
vis_psar := na(vis_psar[1]) ? psar : vis_psar[1] + 0.35 * (psar - vis_psar[1])
vis_psar := up_trend ? math.max(nz(vis_psar[1], vis_psar), vis_psar) : math.min(nz(vis_psar[1], vis_psar), vis_psar)

// =============== ENTRY LOGIC WITH HYSTERESIS AND COOLDOWN
long_flip  =  up_trend and flipped
short_flip = not up_trend and flipped

need_wait  = bar_index < nz(next_ok, bar_index)
pass_long  = long_flip  and close > psar + confirm_buf_atr * atr and vol_ok and not need_wait
pass_short = short_flip and close < psar - confirm_buf_atr * atr and vol_ok and not need_wait and (not require_bear_regime or bias_dn)

// =============== ORDERS
if allow_long and pass_long
    strategy.entry("Long", strategy.long)
    next_ok := bar_index + cooldown_bars

if allow_short and pass_short
    strategy.entry("Short", strategy.short)
    next_ok := bar_index + cooldown_bars

if allow_long
    if pass_short
        strategy.close("Long")

if allow_short
    if pass_long
        strategy.close("Short")

// if strategy.position_size > 0
//     strategy.exit("Lx", from_entry="Long",  stop=psar, limit = tp_long_atr  > 0 ? strategy.opentrades.entry_price(0) + tp_long_atr  * atr : na)
if strategy.position_size < 0
    strategy.exit("Sx", from_entry="Short", stop=psar, limit = tp_short_atr > 0 ? strategy.opentrades.entry_price(0) - tp_short_atr * atr : na)