وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ڈی سی اے حکمت عملی کے ساتھ بولنگر بینڈ اور آر ایس آئی کا اختلاط

مصنف:چاؤ ژانگ، تاریخ: 2024-01-18 11:23:15
ٹیگز:

img

جائزہ

اس حکمت عملی کا نام بولنگر بینڈ اور ڈی سی اے کے ساتھ آر ایس آئی مکسنگ ہے۔ یہ بولنگر بینڈ اور رشتہ دار طاقت انڈیکس (آر ایس آئی) اشارے پر مبنی تجارتی سگنل تیار کرتا ہے اور ترقی پسند ڈالر لاگت اوسط (ڈی سی اے) کا استعمال کرتے ہوئے خطرات کا انتظام کرتا ہے۔ بنیادی خیال اشارے کا استعمال کرتے ہوئے بیل مارکیٹ میں رجحان کو پکڑنا اور ترقی پسند ڈی سی اے کے ذریعہ نیچے کی مارکیٹ میں لاگت کو کم کرنا ہے۔

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

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

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

حکمت عملی کے فوائد

  1. دو اشارے کو یکجا کرنے سے سگنل کی درستگی میں اضافہ ہوتا ہے کیونکہ اس سے رجحان کا فیصلہ واضح ہوتا ہے۔

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

  3. منافع لے لو اور سٹاپ نقصان کی شرائط فوری طور پر خطرات کو کنٹرول اور جزوی منافع میں مقفل.

  4. شامل کردہ تاریخ کی حد فلٹر مخصوص ادوار کے مرکوز بیک ٹیسٹ اور اصلاحات کی اجازت دیتا ہے.

خطرات اور حل

  1. بولنگر بینڈ اور آر ایس آئی دونوں ناکامی کا شکار ہوسکتے ہیں۔ سگنل کی بہترین درستگی کے لئے مختلف پیرامیٹر مجموعوں کا تجربہ کیا جاسکتا ہے۔

  2. ترقی پسند ڈی سی اے مسلسل پوزیشنوں کو شامل کرکے بڑے حادثات کے دوران نقصان میں اضافہ کرسکتا ہے۔ بہتر رسک کنٹرول کے لئے زیادہ سے زیادہ اندراجات کو مناسب اسٹاپ نقصان کی سطح کے ساتھ ساتھ مقرر کیا جاسکتا ہے۔

  3. بلیک سوان کے واقعات اور غیر معمولی قیمتوں کی نقل و حرکت کا اندازہ نہیں لگایا جاسکتا ہے۔ اہم اشاریہ جات کا استعمال کرتے ہوئے نظام کے خطرے کے فلٹرز غیر معمولی ادوار سے بچنے میں مدد کرسکتے ہیں۔

اصلاح کی ہدایات

  1. زیادہ درست تجارتی سگنل حاصل کرنے کے لئے MIX اشارے کے پیرامیٹرز کی جانچ اور اصلاح کریں۔

  2. سٹاپ نقصان کو بہتر بنائیں، بہترین منافع/نقصان تناسب کے لیے منافع کے پیرامیٹرز لیں.

  3. زیادہ سے زیادہ مجموعہ تلاش کرنے کے لئے مختلف جمع پوزیشن کے سائز اور تعدد کی جانچ کریں.

  4. تجارتی حجم کنٹرول ماڈیولز کو حجم کی شرائط پر مبنی کھولنے / بند کرنے کی حکمت عملی میں شامل کرنے پر غور کریں۔

خلاصہ

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


/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © lagobrian23
//@version=4
strategy(title = 'Bollinger Bands and RSI mix with DCA', shorttitle = 'BB/RSI with DCA',pyramiding = 20, calc_on_every_tick = true, overlay = false )
source=close
smoothK = input(3, "K", minval=1)
smoothD = input(3, "D", minval=1)
lengthRSI = input(14, "RSI Length", minval=1)
lengthStoch = input(14, "Stochastic Length", minval=1)
src = input(close, title="RSI Source")
rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)

// Bollinger Band

length = input(20,title = 'BB lookback length', minval=1)
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
BBval = (src - basis)/dev*30+50
offset = input(0, title = "Offset", type = input.integer, minval = -500, maxval = 500)
mix=(d + BBval)/2

//plot
//plot(k, "K", color=#606060)
plot(BBval, "BBval", color=#872323, offset = offset)
plot(d, "D", color=#FF6A00)
h0 = hline(80, "Upper Band", color=#606060)
h1 = hline(20, "Lower Band", color=#606060)
plot(mix, "MIX", color=#888888, linewidth=3)

//background MIX
bgcolor(mix < 20 ? color.green : color.white, transp=50)
bgcolor(mix > 80 ? color.red : color.white, transp=50)

// Choosing the date range
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
toMonth = input(defval = 1,    title = "To Month",      type = input.integer, minval = 1, maxval = 12)
toDay   = input(defval = 1,    title = "To Day",        type = input.integer, minval = 1, maxval = 31)
toYear  = input(defval = 2112, title = "To Year",       type = input.integer, minval = 1970)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(toYear, toMonth, toDay, 23, 59)        // backtest finish window
window()  => true

// Initializing the strategy paraeters

P = input(defval = 1, title = 'Amount (P)' , type = input.integer, minval = 1, maxval = 100)
X = input(defval = 2, title = '% Price drop for consecutive entries(X)', type = input.float, minval = 1, maxval = 100)
B_tp = input(defval = 10, title = '% Level for Take Profit (B)', type = input.float , minval = 1, maxval = 100)
D_sl = input(defval = 10, title = '% Level for Stop Loss (D)', type = input.float, minval = 1, maxval = 100)
A = input(defval = 5, title = 'Max consecutive entries (A)', type = input.integer, minval = 2, maxval = 20)
Z = input(defval = 0.5, title = 'Z', type = input.float , minval = 0, maxval = 10)

// Declaring key DCA variables
entry_price = 0.0
entry_price := na(entry_price[1]) ? na : entry_price[1]
new_entry = 0.0
consec_entryCondition = false
// Implementing the strategy
longEntry = crossover(mix,20)
exitLongs = crossunder(mix, 80)

if(longEntry)
    entry_price := close
    strategy.entry('main_LE', strategy.long , P, when = window() and longEntry)

// Exiting conditions
stoploss = strategy.position_avg_price*(1-(D_sl/100))
takeprofit = strategy.position_avg_price*(1+(B_tp/100))
slCondition = crossunder(close, stoploss)
tpCondition = crossover(close, takeprofit)

// We want to exit if the 'mix' indicator crosses 80, take profit is attained or stop loss is tagged.
exitConditions = exitLongs or slCondition or tpCondition

// Consecutive entries upto A times
// strategy.risk.max_intraday_filled_orders(A)

//Dollar-Cost-Averaging
// Enter long whenever price goes down X%: amount set to (P+Y)*Z
newAmount = (P+X)*Z
// If we haven't reached max open trades, buy newAmount immediately price crosses under X% lower the previous entry price
new_entry := entry_price - ((X/100)*entry_price)
consec_entryCondition := crossunder(close, new_entry)
if(consec_entryCondition and strategy.opentrades != A)
    strategy.entry('consec_LE', strategy.long, newAmount, oca_name = 'consecLongs', when = window() and consec_entryCondition)
    entry_price := close
    
// Exiting
// The main trade is closed only when the  main exit conditions are satisfied
strategy.close('main_LE', comment = 'Main Long Closed', when = window() and exitConditions)

// A consective long is closed only when tp or sl is tagged
strategy.exit('ext a consec', 'consec_LE', loss = D_sl*strategy.position_avg_price , profit = B_tp*strategy.position_avg_price, oca_name =  'consecLongs')


مزید