
ڈبل ریل ٹریکنگ الٹ حکمت عملی ایک الٹ ٹریڈنگ حکمت عملی ہے جس میں برن بینڈ ، کیلتنر چینل اور متحرک اشارے شامل ہیں۔ حکمت عملی ، برن بینڈ اور کیلتنر چینل کے مجموعی فیصلے کے ذریعے ، قیمتوں کے کمپریشن زون میں داخل ہونے کے وقت کی نشاندہی کرتی ہے۔ جبکہ متحرک اشارے کے ساتھ مل کر قیمتوں کے الٹ سگنل کا فیصلہ کیا جاتا ہے ، جس سے تجارت میں داخلے اور باہر نکلنے کا اشارہ ہوتا ہے۔
برن بینڈ میں درمیانی ، اوپری اور نچلی ریلوں کا حساب لگائیں
Keltner چینل میں درمیانی ریل، اپر ریل، اور لوئر ریل کا حساب لگائیں
یہ فیصلہ کرنے کے لئے کہ کیا برن کی پٹی کیلتنر چینل کے اندرونی حصے میں ہے
برین بینڈ اور کیلٹنر چینل کے وسط نقطہ کے ساتھ قریبی اور لکیری regression slope val کا حساب لگائیں
قریب کی تبدیلی کی شرح ROC اور اس کے EMA کا حساب لگائیں
کمپریشن میں، جب val > 0 اور تبدیلی کی شرح ایک حد تک پہنچ جاتا ہے زیادہ
سٹاپ نقصان، سٹاپ حالت سیٹ کریں
دو ریل سسٹم کے ساتھ مل کر ریورس ٹائم پوائنٹ کا تعین کرنے کی درستگی میں اضافہ
لکیری رجعت اور تبدیلی کی شرح کے فیصلے کو بڑھانا ، جھوٹے الٹ سگنل سے بچنا
مختلف اقسام کے لئے مرضی کے مطابق کرنے کے لئے لچکدار پیرامیٹرز کی ترتیب
اسٹاپ نقصان کی روک تھام کی حکمت عملی کا استعمال کرتے ہوئے ، ایک ہی تجارت کے خطرے کو مؤثر طریقے سے کنٹرول کیا جاسکتا ہے
کافی اعداد و شمار سے پتہ چلتا ہے کہ حکمت عملی مؤثر ہے
ڈبل ریل کمپریشن لازمی طور پر موثر الٹ نہیں ہے
جعلی توڑنے سے غلط سگنل پیدا ہوتا ہے
اسٹاپ نقصان کی ترتیب بہت زیادہ نرمی ہے ، ایک ہی وقت میں بہت زیادہ نقصان
ٹیسٹ کی مدت Datenichinhalt
زیادہ اقسام کو اپنانے کے لئے پیرامیٹرز کی ترتیبات کو بہتر بنائیں
مشین سیکھنے کے فیصلے میں اضافے کے لئے مزاحمت کے اہم نکات
ٹرانزیکشن حجم میں تبدیلیوں کے ساتھ ٹرانسمیشن کی حقیقت کو بہتر بنانا
ٹرینڈ کے تسلسل کا اندازہ کرنے کے لئے ٹائم فریم تجزیہ شامل کریں
سٹاپ نقصان کی روک تھام کی حکمت عملی کو بہتر بنانا، متحرک ٹریکنگ
ڈبل ریل ٹریکنگ الٹ حکمت عملی مجموعی طور پر ایک الٹ حکمت عملی ہے جس میں بلینز کے ساتھ کیلٹنر چینل جیسے اشارے کا استعمال کیا جاتا ہے۔ یہ حکمت عملی پیرامیٹرز کے ذریعہ بہتر ہے ، جو مختلف اقسام کے لئے موزوں ہے ، اور اس سے کسی حد تک کامیابی کی حقیقت کو پہچان سکتا ہے۔ لیکن الٹ تجارت خود ہی کچھ خطرات کا حامل ہے ، جس میں فیصلہ کی درستگی کو بڑھانے کے لئے مشین لرننگ جیسی ٹیکنالوجیز کے ساتھ مزید مجموعی طور پر ضرورت ہے ، جس سے زیادہ مستحکم اضافی منافع حاصل کیا جاسکتا ہے۔
/*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)