دوہری ٹریک ریورسل حکمت عملی


تخلیق کی تاریخ: 2023-11-02 16:31:50 آخر میں ترمیم کریں: 2023-11-02 16:31:50
کاپی: 0 کلکس کی تعداد: 633
1
پر توجہ دیں
1617
پیروکار

دوہری ٹریک ریورسل حکمت عملی

جائزہ

ڈبل ریل ٹریکنگ الٹ حکمت عملی ایک الٹ ٹریڈنگ حکمت عملی ہے جس میں برن بینڈ ، کیلتنر چینل اور متحرک اشارے شامل ہیں۔ حکمت عملی ، برن بینڈ اور کیلتنر چینل کے مجموعی فیصلے کے ذریعے ، قیمتوں کے کمپریشن زون میں داخل ہونے کے وقت کی نشاندہی کرتی ہے۔ جبکہ متحرک اشارے کے ساتھ مل کر قیمتوں کے الٹ سگنل کا فیصلہ کیا جاتا ہے ، جس سے تجارت میں داخلے اور باہر نکلنے کا اشارہ ہوتا ہے۔

حکمت عملی کا اصول

  1. برن بینڈ میں درمیانی ، اوپری اور نچلی ریلوں کا حساب لگائیں

    • بند ایس ایم اے کا استعمال کرتے ہوئے
    • اوپر اور نیچے کی سکرین کے درمیان سکرین کے علاوہ ایک سایڈست ضرب کے معیاری فرق ہے
  2. Keltner چینل میں درمیانی ریل، اپر ریل، اور لوئر ریل کا حساب لگائیں

    • بند ایس ایم اے کا استعمال کرتے ہوئے
    • اوپر اور نیچے ریلیں درمیانی ریلوں کے علاوہ ایک سایڈست ضرب کے ATR ہیں
  3. یہ فیصلہ کرنے کے لئے کہ کیا برن کی پٹی کیلتنر چینل کے اندرونی حصے میں ہے

    • جب برن بیلٹ اوپری ریل کیٹلر اوپری ریل سے کم ہے اور برن بیلٹ ڈاون ریل کیٹلر ڈاون ریل سے زیادہ ہے تو ، سمجھا جاتا ہے کہ وہ کمپریشن میں ہے
    • اس کے بجائے، غیر کمپریسڈ
  4. برین بینڈ اور کیلٹنر چینل کے وسط نقطہ کے ساتھ قریبی اور لکیری regression slope val کا حساب لگائیں

    • VAL> 0 کا مطلب ہے کہ قریب بڑھ رہا ہے، VAL < 0 کا مطلب ہے کہ قریب کم ہو رہا ہے
  5. قریب کی تبدیلی کی شرح ROC اور اس کے EMA کا حساب لگائیں

    • تبدیلی کی شرح کو ایڈجسٹ کرنے کی حد تک پہنچنے کا تعین
    • ٹرینڈ میں اگر ٹریجڈ سے زیادہ ہے
  6. کمپریشن میں، جب val > 0 اور تبدیلی کی شرح ایک حد تک پہنچ جاتا ہے زیادہ

    • اس کے بجائے خالی
  7. سٹاپ نقصان، سٹاپ حالت سیٹ کریں

اسٹریٹجک فوائد

  1. دو ریل سسٹم کے ساتھ مل کر ریورس ٹائم پوائنٹ کا تعین کرنے کی درستگی میں اضافہ

  2. لکیری رجعت اور تبدیلی کی شرح کے فیصلے کو بڑھانا ، جھوٹے الٹ سگنل سے بچنا

  3. مختلف اقسام کے لئے مرضی کے مطابق کرنے کے لئے لچکدار پیرامیٹرز کی ترتیب

  4. اسٹاپ نقصان کی روک تھام کی حکمت عملی کا استعمال کرتے ہوئے ، ایک ہی تجارت کے خطرے کو مؤثر طریقے سے کنٹرول کیا جاسکتا ہے

  5. کافی اعداد و شمار سے پتہ چلتا ہے کہ حکمت عملی مؤثر ہے

اسٹریٹجک خطرات اور حل

  1. ڈبل ریل کمپریشن لازمی طور پر موثر الٹ نہیں ہے

    • اصلاح کے پیرامیٹرز ، سخت دو ریل کمپریشن کے حالات
  2. جعلی توڑنے سے غلط سگنل پیدا ہوتا ہے

    • لکیری رجعت کا تعین اور رجحانات کا تعین
  3. اسٹاپ نقصان کی ترتیب بہت زیادہ نرمی ہے ، ایک ہی وقت میں بہت زیادہ نقصان

    • اسٹاپ نقصان کو بہتر بنائیں ، ایک بار کے نقصان کو سختی سے کنٹرول کریں
  4. ٹیسٹ کی مدت Datenichinhalt

    • طویل مدتی افادیت کی توثیق کرنے کے لئے زیادہ سے زیادہ ریٹرننگ سائیکل شامل کریں

حکمت عملی کی اصلاح کی سمت

  1. زیادہ اقسام کو اپنانے کے لئے پیرامیٹرز کی ترتیبات کو بہتر بنائیں

  2. مشین سیکھنے کے فیصلے میں اضافے کے لئے مزاحمت کے اہم نکات

  3. ٹرانزیکشن حجم میں تبدیلیوں کے ساتھ ٹرانسمیشن کی حقیقت کو بہتر بنانا

  4. ٹرینڈ کے تسلسل کا اندازہ کرنے کے لئے ٹائم فریم تجزیہ شامل کریں

  5. سٹاپ نقصان کی روک تھام کی حکمت عملی کو بہتر بنانا، متحرک ٹریکنگ

خلاصہ کریں۔

ڈبل ریل ٹریکنگ الٹ حکمت عملی مجموعی طور پر ایک الٹ حکمت عملی ہے جس میں بلینز کے ساتھ کیلٹنر چینل جیسے اشارے کا استعمال کیا جاتا ہے۔ یہ حکمت عملی پیرامیٹرز کے ذریعہ بہتر ہے ، جو مختلف اقسام کے لئے موزوں ہے ، اور اس سے کسی حد تک کامیابی کی حقیقت کو پہچان سکتا ہے۔ لیکن الٹ تجارت خود ہی کچھ خطرات کا حامل ہے ، جس میں فیصلہ کی درستگی کو بڑھانے کے لئے مشین لرننگ جیسی ٹیکنالوجیز کے ساتھ مزید مجموعی طور پر ضرورت ہے ، جس سے زیادہ مستحکم اضافی منافع حاصل کیا جاسکتا ہے۔

حکمت عملی کا ماخذ کوڈ
/*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)