
ملٹی ٹائم فریم کراس کی توثیقی قسم کی رینڈم نسبتا weak مضبوط اشارے کی حکمت عملی ایک جامع تجارتی نظام ہے جو ہنر مند طریقے سے مختلف ٹائم فریموں میں رینڈم نسبتا strong مضبوط اشارے ((Stochastic RSI) کی سگنل کراسنگ کی خصوصیات کو جوڑتا ہے ، اور اس میں اوسط حقیقی طول موج ((ATR) فلٹر شامل ہوتا ہے تاکہ یہ یقینی بنایا جاسکے کہ مارکیٹ میں کافی اتار چڑھاؤ ہے۔ اس حکمت عملی کا بنیادی خیال یہ ہے کہ ابتدائی سگنل کو مختصر ٹائم فریم (5 منٹ) کے ذریعے پکڑیں ، اور پھر طویل ٹائم فریم (15 منٹ) کے ذریعے اس کی تصدیق کریں ، جس سے تجارتی سگنل کی وشوسنییتا اور درستگی میں اضافہ ہوتا ہے۔ اس کے علاوہ ، حکمت عملی نے سگنل کولنگ میکانزم کو ڈیزائن کیا ہے ، جس سے مختصر وقت میں بار بار تجارت سے بچنے کی دشواری کو کم کیا جاسکتا ہے ، اور اس سے زیادہ تجارت کے خطرے کو مؤثر طریقے سے کم کیا جاسکتا ہے۔
اس حکمت عملی کے کام کرنے کے چار بنیادی طریقہ کار پر مبنی ہے: ابتدائی سگنل ٹرگر، کثیر ٹائم فریم کی تصدیق، اتار چڑھاؤ کی شرح فلٹرنگ اور سگنل کولنگ سسٹم۔
ابتدائی سگنل ٹرگر:
ملٹی ٹائم فریم تصدیق میکانزم:
اے ٹی آر فلو ریٹ فلٹرنگ میکانزم:
سگنل کولنگ سسٹم:
حکمت عملی کا استعمال کرتے ہوئے کراس ریورس موڈ میں پوزیشن کی پوزیشن کا انتظام کیا جاتا ہے ، یعنی ، جب ایک سے زیادہ سگنل ہوتا ہے تو ، کسی بھی پہلے سے موجود خالی پوزیشن کو ختم کردیا جاتا ہے اور ایک سے زیادہ پوزیشن قائم کی جاتی ہے ، اور جب ایک سے زیادہ سگنل ہوتا ہے تو ، کسی بھی پہلے سے موجود خالی پوزیشن کو ختم کردیا جاتا ہے اور خالی پوزیشن قائم کی جاتی ہے۔
کثیر سطحی فلٹرنگ سسٹم: مختلف ٹائم فریموں کے سگنل کی توثیق اور اے ٹی آر اتار چڑھاؤ کی شرح فلٹرنگ کے ساتھ مل کر ، نظام نے جعلی سگنل کو نمایاں طور پر کم کیا اور تجارت کے معیار کو بہتر بنایا۔ ایک کثیر درجے کی توثیق کا طریقہ کار صرف سب سے زیادہ سازگار مارکیٹ کے حالات میں داخل ہونے کو یقینی بناتا ہے ، غیر ضروری تجارت کی تعدد کو کم کرتا ہے۔
لچکدارحکمت عملی کے پیرامیٹرز انتہائی حسب ضرورت ہیں ، بشمول آر ایس آئی کی مدت ، بے ترتیب اشارے کی ہموار قیمت ، سگنل ٹرگر کی کم قیمت وغیرہ ، تاجر کو مختلف مارکیٹ کے حالات اور ذاتی خطرے کی ترجیحات کے مطابق بہتر ایڈجسٹمنٹ کرنے کی اجازت دیتا ہے۔
شرح میں تبدیلی کا احساس: اے ٹی آر فلٹر کے ذریعہ ، حکمت عملی مارکیٹ میں اتار چڑھاؤ کی حالت کو ذہانت سے پہچاننے کے قابل ہے ، اور صرف اس صورت میں تجارت کرتی ہے جب اتار چڑھاؤ کافی ہو ، اور اس سے بچنے والے بازاروں میں چھوٹے اتار چڑھاؤ کی وجہ سے پیدا ہونے والے غیر موثر سگنل سے بچتا ہے۔
زیادہ تجارت سے بچاؤ: سگنل کولنگ میکانزم ایک جدید ڈیزائن ہے جو ایک ہی سمت میں تجارت کی تعدد کو لازمی طور پر انتظار کی مدت کے ذریعے محدود کرتا ہے ، جو نظام کو مختصر وقت میں زیادہ تجارت سے بچاتا ہے ، کمیشن کی لاگت اور پوائنٹ کھونے کو کم کرتا ہے۔
منطق واضح اور شفافحکمت عملی کے ہر جزو میں واضح افعال اور مقاصد ہیں ، پیچیدہ بلیک باکس الگورتھم نہیں ہیں ، جس سے تاجروں کو نظام کے کام کرنے کے طریقہ کار کو مکمل طور پر سمجھنے کی اجازت ملتی ہے ، جس سے آپریشنل اعتماد میں اضافہ ہوتا ہے۔
سگنل کی تاخیر: کثیر سطحی تصدیق کے میکانزم نے سگنل کے معیار کو بہتر بنایا ، لیکن اس کے ساتھ ہی سگنل کی تاخیر کو بھی بڑھایا۔ خاص طور پر تیزی سے بدلتے ہوئے بازاروں میں ، 15 منٹ کے ٹائم فریم کی تصدیق کا انتظار کرنے سے بہترین داخلے کے نقطہ نظر کو یاد کیا جاسکتا ہے یا غیر مستحکم پوزیشن میں داخل ہوسکتا ہے۔
پیرامیٹر کی حساسیتاس حکمت عملی کی تاثیر پیرامیٹرز کی ترتیبات پر بہت زیادہ انحصار کرتی ہے ، جیسے کہ اسٹوکاسٹک آر ایس آئی کی مدت ، اوور بائیڈ اوور سیلنگ گھاٹ ، تصدیق کے لئے انتظار کی کھڑکی وغیرہ۔ غلط پیرامیٹرز کی ترتیبات سے ممکنہ طور پر غلط سگنل یا بہت زیادہ غلط سگنل پیدا ہوسکتے ہیں۔
واضح روک تھام کا فقداناس حکمت عملی میں خطرہ کا انتظام کرنے کے لئے بنیادی طور پر ریورس سگنل پر انحصار کیا جاتا ہے ، اور اس میں کوئی واضح اسٹاپ نقصان کی حکمت عملی نہیں ہے۔ مارکیٹ کے انتہائی حالات میں ، جیسے بڑے پیمانے پر اچھال یا ایک طرفہ تیز رفتار ، اس سے بڑے نقصانات کا سامنا کرنا پڑ سکتا ہے۔
سائیکل ایک دوسرے پر اثر انداز: ایک سے زیادہ ٹائم فریم حکمت عملی میں ، وقت کی مدت کے اشارے ایک دوسرے پر اثر انداز ہوتے ہیں ، اور بعض اوقات پیچیدہ تعلقات پیدا ہوتے ہیں۔ مثال کے طور پر ، مارکیٹ کے کچھ حالات میں ، 5 منٹ اور 15 منٹ کا اسٹوکاسٹک آر ایس آئی طویل عرصے تک ایک ہی سمت میں رہ سکتا ہے ، جس کی وجہ سے نظام کو الٹ پلٹ کا اشارہ مل جاتا ہے۔
اے ٹی آر کی حد مقرر کرنے کا چیلنجاے ٹی آر فلٹر کی حد مقرر کرنے میں دو دشواریاں ہیں: حد سے زیادہ حد مقرر کرنے سے موثر تجارتی مواقع ضائع ہوجاتے ہیں ، اور حد سے کم حد مقرر کرنے سے کم اتار چڑھاؤ والے ماحول میں جعلی سگنل کو مؤثر طریقے سے فلٹر نہیں کیا جاسکتا ہے۔
متحرک سٹاپ نقصان روکنے کا طریقہ کار:
strategy.exit()کمانڈ ، جو اے ٹی آر کے ضارب پر مبنی اسٹاپ نقصان کا تعین کرتی ہے ، جیسےstrategy.exit("long_exit", "LE", stop=entry_price - current_atr_value * 2)。ٹرینڈ فلٹر شامل کریں۔:
trend_direction = request.security(syminfo.tickerid, "240", ta.ema(close, 200) < ta.ema(close, 50) ? -1 : 1)اور اس کو تجارت کی سمت کے لئے فلٹرنگ کی شرط کے طور پر استعمال کیا جاتا ہے۔متحرک پیرامیٹرز کی اصلاح:
dynamic_overbought = 70 + math.min(15, current_atr_value / 2)。سگنل کی توثیق کے لئے بہتر طریقہ کار:
bb_condition = (close - ta.sma(close, 20)) / (ta.stdev(close, 20) * 2)قیمتوں اور اوسط سے انحراف کا اندازہ لگانے کے لئے استعمال کیا جاتا ہے۔فنڈ مینجمنٹ کی اصلاح:
position_size = strategy.initial_capital * 0.01 * (recent_win_rate * 2)。ملٹی ٹائم فریم کراس کی توثیقی قسم رینڈم نسبتا weak مضبوط اشارے کی حکمت عملی ایک ڈیزائن کردہ ٹریڈنگ سسٹم ہے ، جس میں متعدد سطحوں پر سگنل کی توثیق اور فلٹرنگ کے طریقہ کار کے ذریعہ ، تجارت کے معیار کو مؤثر طریقے سے بہتر بنایا گیا ہے ، جس سے جعلی سگنل کا خطرہ کم کیا گیا ہے۔ یہ حکمت عملی خاص طور پر زیادہ اتار چڑھاؤ والی مارکیٹ کے ماحول کے لئے موزوں ہے۔ اے ٹی آر فلٹر کے ذریعہ کم اتار چڑھاؤ والی مارکیٹ میں بہت زیادہ غیر موثر سگنل پیدا ہونے سے بچنے کے لئے ، جبکہ سگنل کولنگ کا طریقہ کار زیادہ تجارت کے مسئلے کو مؤثر طریقے سے کنٹرول کرتا ہے۔
اس حکمت عملی کا سب سے بڑا فائدہ اس کی منطقی وضاحت ، پیرامیٹرز کی ایڈجسٹ ایبلٹی اور لچک کی خصوصیات میں ہے ، جس سے یہ مختلف قسم کے تجارت اور مارکیٹ کے ماحول کے مطابق ڈھال سکتا ہے۔ تاہم ، واضح اسٹاپ نقصان کے طریقہ کار کی کمی اور ممکنہ سگنل کی تاخیر کی وجہ سے ، تاجروں کو عملی استعمال میں اضافی خطرے کے انتظام کے اقدامات شامل کرنے چاہئیں ، اور مخصوص تجارت کی اقسام اور ذاتی خطرے کی ترجیحات کے مطابق پیرامیٹرز کو بہتر بنائیں۔
اس حکمت عملی میں تجویز کردہ اصلاحات جیسے متحرک اسٹاپ نقصان کا طریقہ کار ، رجحان فلٹر اور فنڈ مینجمنٹ کی اصلاحات کو متعارف کرایا گیا ہے ، جس سے اس کی استحکام اور منافع بخش صلاحیت کو مزید بہتر بنانے کی امید ہے ، اور یہ ایک زیادہ جامع اور قابل اعتماد تجارتی نظام بن جائے گا۔
/*backtest
start: 2025-05-04 00:00:00
end: 2025-06-03 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Archertoria
//@version=6
strategy("System 0530 - Stoch RSI Strategy with ATR filter")
// --- 原始指标输入参数 ---
g_stoch = "Stochastic RSI 参数"
rsi_len = input.int(14, "RSI 周期", minval=1, group=g_stoch)
stoch_rsi_len = input.int(14, "Stochastic of RSI 周期 (K Period for Stoch)", minval=1, group=g_stoch)
stoch_k_smooth = input.int(3, "Stochastic %K 平滑 (D Period for Stoch)", minval=1, group=g_stoch)
stoch_d_smooth = input.int(3, "Stochastic %D 平滑 (Smoothing for final D)", minval=1, group=g_stoch)
g_signal = "信号触发与确认参数"
stoch_5min_k_long_trigger = input.float(30.0, "5分钟 Stoch K 做多触发水平 (K需 ≤ 此值)", minval=0, maxval=100, step=0.1, group=g_signal, tooltip="5分钟图上,K线向上交叉D线时,当时的K值必须小于或等于此设定值,才会启动做多信号等待。")
stoch_5min_k_short_trigger = input.float(70.0, "5分钟 Stoch K 做空触发水平 (K需 ≥ 此值)", minval=0, maxval=100, step=0.1, group=g_signal, tooltip="5分钟图上,K线向下交叉D线时,当时的K值必须大于或等于此设定值,才会启动做空信号等待。")
stoch_15min_long_entry_level = input.int(40, "15分钟 Stoch K 做多确认阈值 (K需低于此值)", minval=0, maxval=100, group=g_signal, tooltip="15分钟图上,最终确认做多时,15分钟K线值需低于此设定值。")
stoch_15min_short_entry_level = input.int(60, "15分钟 Stoch K 做空确认阈值 (K需高于此值)", minval=0, maxval=100, group=g_signal, tooltip="15分钟图上,最终确认做空时,15分钟K线值需高于此设定值。")
wait_window_5min_bars = input.int(5, "等待15分钟信号的K线数 (5分钟图)", minval=1, group=g_signal, tooltip="5分钟信号发出后,在接下来的N根5分钟K线内等待15分钟信号确认。")
g_repeat_filter = "重复信号过滤设置"
use_signal_cooldown_filter = input.bool(true, title="启用重复信号过滤器", group=g_repeat_filter, tooltip="过滤掉短时间内同向的重复信号。")
min_bars_between_signals = input.int(18, title="同向信号最小间隔K线数", minval=1, group=g_repeat_filter, tooltip="一个信号发出后,至少等待这么多根K线才会发出下一个同向信号。")
// --- 策略特定输入参数 ---
g_strategy = "策略参数"
leverage_multiplier = input.float(1.0, "杠杆倍数 (仅影响理论头寸大小)", minval=1.0, step=0.1, group=g_strategy, tooltip="注意:TradingView策略本身不直接模拟保证金账户的杠杆爆仓。此杠杆用于计算理论头寸大小。实际杠杆效果需在支持杠杆的经纪商处体现。")
// --- ATR波动率过滤器参数 --- (止盈止损参数组已删除)
g_volatility = "波动率过滤器参数 (ATR)"
use_atr_filter = input.bool(true, "启用ATR波动率过滤器", group=g_volatility, tooltip="勾选以启用ATR过滤器。")
atr_period = input.int(14, "ATR计算周期", minval=1, group=g_volatility)
min_atr_value_ticks = input.float(10, "ATR最小跳动点数阈值", minval=0, step=1, group=g_volatility, tooltip="ATR值(以合约最小跳动点数为单位)必须大于等于此阈值才允许开仓。例如,如果最小跳动点是0.1,这里填10,则要求ATR至少为1.0。0表示不基于此项过滤。")
// --- 函数: 计算 Stochastic RSI ---
getStochasticRSI(src, rsiLen, stochLen, kSmooth, dSmooth) =>
rsi_val = ta.rsi(src, rsiLen)
stoch_rsi_k_raw = ta.stoch(rsi_val, rsi_val, rsi_val, stochLen)
stoch_rsi_k = ta.sma(stoch_rsi_k_raw, kSmooth)
stoch_rsi_d = ta.sma(stoch_rsi_k, dSmooth)
[stoch_rsi_k, stoch_rsi_d]
// --- 时间序列数据获取与Stochastic RSI计算 ---
[stoch_k_15min_val, stoch_d_15min_val] = request.security(syminfo.tickerid, "15", getStochasticRSI(close, rsi_len, stoch_rsi_len, stoch_k_smooth, stoch_d_smooth), lookahead=barmerge.lookahead_off)
[stoch_k_5min_val, stoch_d_5min_val] = getStochasticRSI(close, rsi_len, stoch_rsi_len, stoch_k_smooth, stoch_d_smooth)
// --- ATR 计算 ---
current_atr_value = ta.atr(atr_period)
atr_condition_met = not use_atr_filter or (min_atr_value_ticks == 0) or (current_atr_value / syminfo.mintick >= min_atr_value_ticks)
// --- 信号逻辑状态变量 ---
var bool waiting_for_15m_long_confirm = false
var bool waiting_for_15m_short_confirm = false
var int bars_elapsed_in_wait_state = 0
var int last_long_signal_bar_idx = -min_bars_between_signals
var int last_short_signal_bar_idx = -min_bars_between_signals
// --- 检测5分钟Stochastic RSI交叉事件 ---
bool stoch_5min_crossed_up_prev_bar = ta.crossover(stoch_k_5min_val[1], stoch_d_5min_val[1])
bool stoch_5min_crossed_down_prev_bar = ta.crossunder(stoch_k_5min_val[1], stoch_d_5min_val[1])
bool condition_5min_k_level_for_long_trigger = stoch_k_5min_val[1] <= stoch_5min_k_long_trigger
bool condition_5min_k_level_for_short_trigger = stoch_k_5min_val[1] >= stoch_5min_k_short_trigger
// --- 管理等待状态和容错期 ---
if (stoch_5min_crossed_up_prev_bar and condition_5min_k_level_for_long_trigger)
can_trigger_new_long = not use_signal_cooldown_filter or (bar_index - last_long_signal_bar_idx >= min_bars_between_signals)
if (can_trigger_new_long)
waiting_for_15m_long_confirm := true
waiting_for_15m_short_confirm := false
bars_elapsed_in_wait_state := 1
else
if (waiting_for_15m_long_confirm or waiting_for_15m_short_confirm)
bars_elapsed_in_wait_state := 1
else if (stoch_5min_crossed_down_prev_bar and condition_5min_k_level_for_short_trigger)
can_trigger_new_short = not use_signal_cooldown_filter or (bar_index - last_short_signal_bar_idx >= min_bars_between_signals)
if (can_trigger_new_short)
waiting_for_15m_short_confirm := true
waiting_for_15m_long_confirm := false
bars_elapsed_in_wait_state := 1
else
if (waiting_for_15m_long_confirm or waiting_for_15m_short_confirm)
bars_elapsed_in_wait_state := 1
else if (waiting_for_15m_long_confirm or waiting_for_15m_short_confirm)
bars_elapsed_in_wait_state += 1
if (bars_elapsed_in_wait_state > wait_window_5min_bars)
waiting_for_15m_long_confirm := false
waiting_for_15m_short_confirm := false
// bars_elapsed_in_wait_state := 0 // Optional reset
// --- 15分钟Stochastic RSI确认条件 ---
bool confirm_15min_long_stoch_kd_cond = stoch_k_15min_val >= stoch_d_15min_val
bool confirm_15min_short_stoch_kd_cond = stoch_k_15min_val <= stoch_d_15min_val
bool filter_15min_stoch_level_long = stoch_k_15min_val < stoch_15min_long_entry_level
bool filter_15min_stoch_level_short = stoch_k_15min_val > stoch_15min_short_entry_level
// --- 主要信号判断 (用于策略逻辑) ---
entry_long_signal = false
entry_short_signal = false
if (waiting_for_15m_long_confirm and bars_elapsed_in_wait_state <= wait_window_5min_bars)
if (confirm_15min_long_stoch_kd_cond and filter_15min_stoch_level_long)
can_confirm_new_long = not use_signal_cooldown_filter or (bar_index - last_long_signal_bar_idx >= min_bars_between_signals)
if (can_confirm_new_long)
if (atr_condition_met) // ATR 过滤器检查
entry_long_signal := true
last_long_signal_bar_idx := bar_index
waiting_for_15m_long_confirm := false
bars_elapsed_in_wait_state := 0
else
waiting_for_15m_long_confirm := false
bars_elapsed_in_wait_state := 0
if (waiting_for_15m_short_confirm and bars_elapsed_in_wait_state <= wait_window_5min_bars)
if (confirm_15min_short_stoch_kd_cond and filter_15min_stoch_level_short)
can_confirm_new_short = not use_signal_cooldown_filter or (bar_index - last_short_signal_bar_idx >= min_bars_between_signals)
if (can_confirm_new_short)
if (atr_condition_met) // ATR 过滤器检查
entry_short_signal := true
last_short_signal_bar_idx := bar_index
waiting_for_15m_short_confirm := false
bars_elapsed_in_wait_state := 0
else
waiting_for_15m_short_confirm := false
bars_elapsed_in_wait_state := 0
// --- 策略执行逻辑 ---
if (entry_long_signal)
strategy.entry("LE", strategy.long, comment="long entry")
if (entry_short_signal)
strategy.entry("SE", strategy.short, comment="short entry")
// --- 绘图 ---
plotshape(entry_long_signal, title="做多信号点", location=location.belowbar, color=color.new(color.green,0), style=shape.triangleup, size=size.small)
plotshape(entry_short_signal, title="做空信号点", location=location.abovebar, color=color.new(color.red,0), style=shape.triangledown, size=size.small)