اس حکمت عملی کا نام
حکمت عملی بولنگر بینڈ اور آر ایس آئی اشارے کو مربوط کرتی ہے۔ بولنگر بینڈ واضح طور پر اس رجحان کا فیصلہ کرتا ہے جہاں درمیانی بینڈ کے اوپر بول مارکیٹ کا مطلب ہے اور اس کے نیچے ریچھ مارکیٹ کا مطلب ہے۔ آر ایس آئی زیادہ خرید و فروخت کی صورتحال کی نشاندہی کرتا ہے۔ حکمت عملی بولنگر بینڈ کے انحراف اور آر ایس آئی کی K قدر کو وزن دے کر ایک MIX اشارے کی تعمیر کرتی ہے۔ ایک لمبا سگنل اس وقت پیدا ہوتا ہے جب MIX اشارے نیچے سے 20 سے ٹوٹ جاتا ہے۔
ترقی پسند ڈی سی اے حصے کے لئے ، ایک ابتدائی پوزیشن اس وقت کھولی جاتی ہے جب ایم آئی ایکس 20 سے گزر جاتا ہے۔ ہر بار جب قیمت ایک مقررہ فیصد تک گرتی ہے تو اضافی پوزیشنوں کو مقررہ رقم پر شامل کیا جاتا ہے۔ یہ اس وقت تک جاری رہتا ہے جب تک کہ زیادہ سے زیادہ پوزیشنوں تک نہیں پہنچ جاتا ہے یا اسٹاپ نقصان / منافع حاصل کرنا شروع ہوجاتا ہے۔ مارکیٹ کی کم ترین پوزیشنوں کو متعدد بار شامل کرکے ، اوسط لاگت کو بتدریج کم کیا جاسکتا ہے۔
دو اشارے کو یکجا کرنے سے سگنل کی درستگی میں اضافہ ہوتا ہے کیونکہ اس سے رجحان کا فیصلہ واضح ہوتا ہے۔
ترقی پسند ڈی سی اے کمی کے دوران لاگت کی بنیاد کو کم کرتا ہے، منافع کی حد میں اضافہ کرتے ہوئے نقصان کے خطرے کو کم کرتا ہے.
منافع لے لو اور سٹاپ نقصان کی شرائط فوری طور پر خطرات کو کنٹرول اور جزوی منافع میں مقفل.
شامل کردہ تاریخ کی حد فلٹر مخصوص ادوار کے مرکوز بیک ٹیسٹ اور اصلاحات کی اجازت دیتا ہے.
بولنگر بینڈ اور آر ایس آئی دونوں ناکامی کا شکار ہوسکتے ہیں۔ سگنل کی بہترین درستگی کے لئے مختلف پیرامیٹر مجموعوں کا تجربہ کیا جاسکتا ہے۔
ترقی پسند ڈی سی اے مسلسل پوزیشنوں کو شامل کرکے بڑے حادثات کے دوران نقصان میں اضافہ کرسکتا ہے۔ بہتر رسک کنٹرول کے لئے زیادہ سے زیادہ اندراجات کو مناسب اسٹاپ نقصان کی سطح کے ساتھ ساتھ مقرر کیا جاسکتا ہے۔
بلیک سوان کے واقعات اور غیر معمولی قیمتوں کی نقل و حرکت کا اندازہ نہیں لگایا جاسکتا ہے۔ اہم اشاریہ جات کا استعمال کرتے ہوئے نظام کے خطرے کے فلٹرز غیر معمولی ادوار سے بچنے میں مدد کرسکتے ہیں۔
زیادہ درست تجارتی سگنل حاصل کرنے کے لئے MIX اشارے کے پیرامیٹرز کی جانچ اور اصلاح کریں۔
سٹاپ نقصان کو بہتر بنائیں، بہترین منافع/نقصان تناسب کے لیے منافع کے پیرامیٹرز لیں.
زیادہ سے زیادہ مجموعہ تلاش کرنے کے لئے مختلف جمع پوزیشن کے سائز اور تعدد کی جانچ کریں.
تجارتی حجم کنٹرول ماڈیولز کو حجم کی شرائط پر مبنی کھولنے / بند کرنے کی حکمت عملی میں شامل کرنے پر غور کریں۔
ڈی سی اے حکمت عملی کے ساتھ
/*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')