ڈوئل چینل ٹریکنگ ریورسنگ حکمت عملی ایک ریورسنگ ٹریڈنگ حکمت عملی ہے جو بولنگر بینڈ ، کیلٹنر چینلز ، اور رفتار کے اشارے کو یکجا کرتی ہے۔ یہ بولنگر بینڈ اور کیلٹنر چینلز کی ترکیب کے ذریعے قیمت کمپریشن زون کی نشاندہی کرتی ہے ، اور انٹری اور آؤٹ پٹ کے لئے الٹ سگنل کا تعین کرنے کے لئے رفتار کے اشارے کا استعمال کرتی ہے۔
بولنگر بینڈ کے لئے درمیانی، اوپری اور نچلی بینڈ کا حساب لگائیں
Keltner چینلز کے لئے وسط، اوپری اور نچلے بینڈ کا حساب لگائیں
اس بات کا تعین کریں کہ کیا بولنگر بینڈ Keltner چینلز کے اندر ہیں
BB اور KC midpoints کے خلاف بند کے لکیری رجعت ڈھلوان والو کا حساب لگائیں
بندش کے لئے ROC اور EMA کا حساب لگائیں
جب دباؤ میں، طویل وقت تک جب ویلیو > 0 اور ROC حد سے تجاوز کرتا ہے
سٹاپ نقصان اور منافع لینے کی شرائط مقرر کریں
ریورسنگ کے لئے ڈبل چینل سسٹم کو یکجا کرکے بہتر درستگی
لکیری رجسٹریشن اور تبدیلی کی شرح کا استعمال کرتے ہوئے جھوٹے سگنل سے بچیں
مصنوعات کے درمیان اصلاح کے لئے لچکدار سایڈست پیرامیٹرز
اسٹاپ نقصان / منافع لینے کے ساتھ ہر تجارت کے لئے مؤثر رسک کنٹرول
حکمت عملی کی قابل عمل تصدیق کے لئے کافی بیک ٹسٹ ڈیٹا
دباؤ ہمیشہ مؤثر الٹ کے نتیجے میں نہیں ہے
جھوٹے بھاگنے سے غلط سگنل پیدا ہوتے ہیں
اسٹاپ نقصان بہت وسیع ہے جس کی وجہ سے ایک ہی نقصان میں بہت زیادہ اضافہ ہوتا ہے
ناکافی ٹیسٹ کی مدت
زیادہ مصنوعات کے لئے پیرامیٹر کی اصلاح
سپورٹ / مزاحمت کی نشاندہی کے لئے مشین لرننگ شامل کریں
بریک آؤٹ کی موزونیت کو بہتر بنانے کے لئے حجم کی تبدیلی کو شامل کریں
رجحان کی مستقل مزاجی کے لئے کثیر ٹائم فریم تجزیہ انجام دیں
متحرک سٹاپ نقصان / منافع لے لو کو بہتر بنائیں
ڈوئل چینل ٹریکنگ ریورسنگ حکمت عملی الٹ ٹریڈنگ کے لئے بولنگر بینڈ اور کیلٹنر چینلز جیسے اشارے استعمال کرتی ہے۔ پیرامیٹر کی اصلاح کے ساتھ ، اسے کسی حد تک بریک آؤٹ کی موزونیت کی نشاندہی کرنے کے لئے مختلف مصنوعات میں اپنایا جاسکتا ہے۔ لیکن الٹ ٹریڈنگ میں اب بھی موروثی خطرات ہیں ، جس میں مستحکم اضافی منافع کے ل accuracy درستگی کو بہتر بنانے کے لئے مشین لرننگ وغیرہ کو مزید شامل کرنے کی ضرورت ہے۔
/*backtest start: 2023-10-02 00:00:00 end: 2023-11-01 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Credit for the initial Squeeze Momentum code to LazyBear, rate of change code is from Kiasaki strategy("Squeeze X BF 🚀", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0) /////////////// Time Frame /////////////// testStartYear = input(2012, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0) testStopYear = input(2019, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(31, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0) testPeriod() => true /////////////// Squeeeeze /////////////// length = input(20, title="BB Length") mult = input(2.0,title="BB MultFactor") lengthKC=input(22, title="KC Length") multKC = input(1.5, title="KC MultFactor") useTrueRange = input(true, title="Use TrueRange (KC)") // Calculate BB source = close basis = sma(source, length) dev = mult * stdev(source, length) upperBB = basis + dev lowerBB = basis - dev // Calculate KC ma = sma(source, lengthKC) range = useTrueRange ? tr : (high - low) rangema = sma(range, lengthKC) upperKC = ma + rangema * multKC lowerKC = ma - rangema * multKC sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC) sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC) noSqz = (sqzOn == false) and (sqzOff == false) val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)),sma(close,lengthKC)), lengthKC,0) ///////////// Rate Of Change ///////////// roclength = input(30, minval=1), pcntChange = input(7, minval=1) roc = 100 * (source - source[roclength]) / source[roclength] emaroc = ema(roc, roclength / 2) isMoving() => emaroc > (pcntChange / 2) or emaroc < (0 - (pcntChange / 2)) /////////////// Strategy /////////////// long = val > 0 and isMoving() short = val < 0 and isMoving() last_long = 0.0 last_short = 0.0 last_long := long ? time : nz(last_long[1]) last_short := short ? time : nz(last_short[1]) long_signal = crossover(last_long, last_short) short_signal = crossover(last_short, last_long) last_open_long_signal = 0.0 last_open_short_signal = 0.0 last_open_long_signal := long_signal ? open : nz(last_open_long_signal[1]) last_open_short_signal := short_signal ? open : nz(last_open_short_signal[1]) last_long_signal = 0.0 last_short_signal = 0.0 last_long_signal := long_signal ? time : nz(last_long_signal[1]) last_short_signal := short_signal ? time : nz(last_short_signal[1]) in_long_signal = last_long_signal > last_short_signal in_short_signal = last_short_signal > last_long_signal last_high = 0.0 last_low = 0.0 last_high := not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1]) last_low := not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1]) sl_inp = input(100.0, title='Stop Loss %') / 100 tp_inp = input(5000.0, title='Take Profit %') / 100 take_level_l = strategy.position_avg_price * (1 + tp_inp) take_level_s = strategy.position_avg_price * (1 - tp_inp) since_longEntry = barssince(last_open_long_signal != last_open_long_signal[1]) since_shortEntry = barssince(last_open_short_signal != last_open_short_signal[1]) slLong = in_long_signal ? strategy.position_avg_price * (1 - sl_inp) : na slShort = strategy.position_avg_price * (1 + sl_inp) long_sl = in_long_signal ? slLong : na short_sl = in_short_signal ? slShort : na /////////////// Execution /////////////// if testPeriod() strategy.entry("Long", strategy.long, when=long) strategy.entry("Short", strategy.short, when=short) strategy.exit("Long Ex", "Long", stop=long_sl, limit=take_level_l, when=since_longEntry > 0) strategy.exit("Short Ex", "Short", stop=short_sl, limit=take_level_s, when=since_shortEntry > 0) /////////////// Plotting /////////////// bcolor = iff(val > 0, iff(val > nz(val[1]), color.lime, color.green), iff(val < nz(val[1]), color.red, color.maroon)) plot(val, color=bcolor, linewidth=4) bgcolor(not isMoving() ? color.white : long ? color.lime : short ? color.red : na, transp=70) bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=50) hline(0, color = color.white)