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