RSI مطلب ریورژن پرائس اتار چڑھاؤ کی حکمت عملی


تخلیق کی تاریخ: 2023-09-26 19:55:03 آخر میں ترمیم کریں: 2023-09-26 19:55:03
کاپی: 2 کلکس کی تعداد: 749
1
پر توجہ دیں
1617
پیروکار

جائزہ

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

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

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

پوزیشن کھولنے کے بعد ، حکمت عملی 6 اوسط قیمتوں پر واپسی کی قیمتوں کا تعین کرتی ہے ، جو موجودہ قیمت کا 98٪ ، 97٪ ، 95٪ ، 90٪ ، 84٪ اور 70٪ ہے۔ جب قیمت ان قیمتوں کو چھوتی ہے تو ، پوزیشنوں میں اضافے کا سلسلہ جاری رہتا ہے۔ اس طرح مسلسل اوسط قیمت کے ذریعہ ، پوزیشن رکھنے کی لاگت کو کم کیا جاسکتا ہے۔

اس کے علاوہ ، حکمت عملی میں پوزیشن کی اوسط قیمت کا حساب بھی لگایا گیا ہے۔ جب قیمت میں اضافہ اوسط قیمت کے 5٪ سے زیادہ ہوتا ہے تو ، اسٹاپ شروع ہوتا ہے۔ اس کے علاوہ ، اگر قیمت میں اضافہ ہوتا رہتا ہے اور اوسط قیمت کے 5٪ اسٹاپ قیمت سے زیادہ ہوتا ہے تو ، تمام اسٹاپ ہوتے ہیں۔

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

طاقت کا تجزیہ

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

  1. اس کے علاوہ ، یہ بھی کہا گیا ہے کہ اس طرح کی حکمت عملی کے ساتھ ، کم سے کم خطرہ سے بچنے کے لئے پوزیشن کھولنے کے خطرے کو تقسیم کیا جاسکتا ہے۔

  2. ایک سے زیادہ اوسط واپسی کی قیمتوں کا تعین کرنے سے ، پوزیشن کی لاگت کو مستقل طور پر کم کیا جاسکتا ہے ، اور گرنے کے خطرے کو مؤثر طریقے سے کنٹرول کیا جاسکتا ہے۔

  3. اوسط پوزیشن کی قیمت کا حساب لگانا ، منافع کے بعد بروقت اسٹاپ اور منافع کو لاک کرنا۔

  4. ڈی سی اے کے طریقہ کار کو لاگو کریں تاکہ انعقاد کی لاگت کو مزید کم کیا جاسکے اور خطرات پر قابو پایا جاسکے۔

  5. RSI اشارے کا استعمال کرتے ہوئے مارکیٹ کے اوقات کا اندازہ لگائیں ، اونچائی پر پوزیشن کھولنے سے گریز کریں۔

  6. ہم آہنگ فلٹرنگ کا استعمال کرتے ہوئے، ریورس کھولنے سے بچنے کے لئے.

خطرے کا تجزیہ

اس حکمت عملی کے ساتھ کچھ خطرات بھی ہیں، جن میں سے کچھ یہ ہیں:

  1. حکمت عملی مارکیٹ کے الٹ پوائنٹس کی نشاندہی نہیں کرسکتی ہے ، اور اگر مارکیٹ طویل عرصے تک کم سطح پر برقرار رہتی ہے تو ، زیادہ کام کرنا نقصان میں اضافہ کرسکتا ہے۔

  2. اس حکمت عملی میں اسٹاپ نقصان کے طریقہ کار کو مدنظر نہیں رکھا گیا ہے ، جس سے انفرادی نقصان کو مؤثر طریقے سے کنٹرول نہیں کیا جاسکتا ہے۔

  3. اس حکمت عملی میں پوزیشن کھولنے کی تعداد پر کوئی پابندی نہیں ہے۔ اگر مارکیٹ میں تیزی سے کمی واقع ہوتی ہے تو ، پوزیشنوں میں اضافہ ہوتا رہتا ہے۔

  4. ڈی سی اے کے نظام میں وقت کا خطرہ ہوتا ہے اور اس بات کی ضمانت نہیں دی جاسکتی ہے کہ کم سے کم پوزیشن کھولی جائے۔

اس کا حل کیا ہے؟

  1. مارکیٹ کی ساخت کا اندازہ لگانے کے لئے دوسرے اشارے کے ساتھ مل کر ، صرف آر ایس آئی پر انحصار کرنے سے گریز کریں۔

  2. بڑھتی ہوئی نقل و حرکت کی روک تھام یا سکیننگ کی روک تھام۔

  3. اسٹاک کھولنے کی تعداد کو محدود کریں اور زیادہ سے زیادہ پوزیشنوں سے گریز کریں۔

  4. ڈی سی اے کو زیادہ مستحکم کرنے کے لئے پوزیشن کھولنے کے وقت کو بہتر بنائیں۔

اصلاح کی سمت

یہ حکمت عملی مندرجہ ذیل پہلوؤں سے بہتر بنائی جا سکتی ہے۔

  1. اوسط واپسی کے الگورتھم کو بہتر بنانا ، قیمت کی واپسی کی قیمتوں کا حساب لگانے کے لئے زیادہ سائنسی طریقہ اپنانا۔

  2. سٹاپس کو بہتر بنانے کے لئے، آپ کو ایک موبائل سٹاپس یا ایک سیڑھی سٹاپس کا استعمال کر سکتے ہیں.

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

  4. دوسرے اشارے کے ساتھ مل کر مارکیٹ کی ساخت کا تعین کرنے کے لئے ، صرف RSI پر انحصار کرنے سے گریز کریں۔

  5. ڈی سی اے پوزیشن کھولنے کی منطق کو بہتر بنائیں اور پوزیشن کھولنے کے مقررہ وقت کے خطرات سے بچیں۔

  6. پوزیشن مینجمنٹ ماڈیول شامل کریں اور پوزیشن سائز کو بہتر بنائیں۔

  7. مارکیٹ کے اعدادوشمار کی خصوصیات کے مطابق حکمت عملی کو بہتر بنانے کے لئے پیرامیٹرز کی ترتیبات کو بہتر بنائیں۔

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
//@version=4
// © A3Sh

// RSI Strategy that buys the dips, works with Price Averaging and has a Dollar Cost Average option.
// When the price drops below specified percentages of the price (6 PA layers), new entries are openend to average the price of the assets.
// Open entries are closed by a specified take profit.
// Entries can be reopened, after closing and consequently crossing a PA layer again.
// The idea is to lower the average position price to a point that when the market rises, the current price crosses over the average position price.
// When the current price crosses the average position size and reaches the specified take profit, all entries are closed at once.
// In case the market drops significantly, there is an option to activate DCA to lower the average price further.

// RSI code adapted from the Optimized RSI Buy the Dips strategy, by Coinrule
// https://www.tradingview.com/script/Pm1WAtyI-Optimized-RSI-Strategy-Buy-The-Dips-by-Coinrule/
// Pyramiding entries code adapted from Pyramiding Entries on Early Trends startegy, by Coinrule
// https://www.tradingview.com/script/7NNJ0sXB-Pyramiding-Entries-On-Early-Trends-by-Coinrule/
// Plot entry layers code adapted from HOWTO Plot Entry Price by vitvlkv
// https://www.tradingview.com/script/bHTnipgY-HOWTO-Plot-Entry-Price/
// Buy every week code based on the following question in Stack Overflow
// https://stackoverflow.com/questions/59870411/in-pine-script-how-can-you-do-something-once-per-day-or-keep-track-if-somethin


strategy(title = "RSI+PA+DCA", pyramiding = 16, overlay = true, initial_capital = 400, default_qty_type = strategy.percent_of_equity, default_qty_value = 15, commission_type = strategy.commission.percent, commission_value = 0.075)

port = input(15, title = "Portfolio %", type = input.float, step = 0.1, minval = 0.1, maxval = 100)
q = (strategy.equity / 100 * port) / open

// Long position entry layers. Percentage from the entry price of the the first long
PositionInputs = input("++++", title = "+++++ Long Positions VA Layers +++++")

ps2 = input(2,  title = "2nd Long Entry %", step = 0.1)
ps3 = input(3,  title = "3rd Long Entry %", step = 0.1)
ps4 = input(5,  title = "4th Long Entry %", step = 0.1)
ps5 = input(10, title = "5th Long Entry %", step = 0.1)
ps6 = input(16, title = "6th Long Entry %", step = 0.1)


// Calculate Moving Averages
maInput = input("++++", title = "+++++ Moving Average Filter +++++")

plotMA = input(title = "Plot Moving Average", defval = false)
movingaverage_signal = sma(close, input(100))
plot (plotMA ? movingaverage_signal : na, color = color.white)

// RSI inputs and calculations
rsiInput = input( "++++", title = "+++++ RSI Inputs +++++" )

length =     input( 14 )
overSold =   input( 30, title = "oversold, entry trigger long position" )
overBought = input( 70, title = "overbought, has no specific function")
price = close
vrsi = rsi(price, length)

// Long trigger (co)
co = crossover(vrsi, overSold) and close < movingaverage_signal

// Take profit
takeprofit = input("++++", title = "+++++ Take Profit +++++")

ProfitTarget_Percent = input(5)


// Store values to create and plot the different DCA layers
long1 = valuewhen(co, close, 0)
long2 = valuewhen(co, close - (close / 100 * ps2), 0)
long3 = valuewhen(co, close - (close / 100 * ps3), 0)
long4 = valuewhen(co, close - (close / 100 * ps4), 0)
long5 = valuewhen(co, close - (close / 100 * ps5), 0)
long6 = valuewhen(co, close - (close / 100 * ps6), 0)

eps1 = 0.00
eps1 := na(eps1[1]) ? na : eps1[1]

eps2 = 0.00
eps2 := na(eps2[1]) ? na : eps2[1]

eps3 = 0.00
eps3 := na(eps3[1]) ? na : eps3[1]

eps4 = 0.00
eps4 := na(eps4[1]) ? na : eps4[1]

eps5 = 0.00
eps5 := na(eps5[1]) ? na : eps5[1]

eps6 = 0.00
eps6 := na(eps6[1]) ? na : eps6[1]

plot (strategy.position_size > 0 ? eps1 : na, title = "Long entry 1", style = plot.style_linebr)
plot (strategy.position_size > 0 ? eps2 : na, title = "Long entry 2", style = plot.style_linebr)
plot (strategy.position_size > 0 ? eps3 : na, title = "Long entry 3", style = plot.style_linebr)
plot (strategy.position_size > 0 ? eps4 : na, title = "Long entry 4", style = plot.style_linebr)
plot (strategy.position_size > 0 ? eps5 : na, title = "Long entry 5", style = plot.style_linebr)
plot (strategy.position_size > 0 ? eps6 : na, title = "Long entry 6", style = plot.style_linebr)


// Plot position average price
plot (strategy.position_avg_price, title = "Average price", style = plot.style_linebr, color = color.red, linewidth = 2)


// Take profit and exit all on take profit above position average price
tpv = strategy.position_avg_price + (strategy.position_avg_price / 100 * ProfitTarget_Percent)

tpl1 = close < tpv ? eps1 + close * (ProfitTarget_Percent / 100) : tpv
tpl2 = close < tpv ? eps2 + close * (ProfitTarget_Percent / 100) : tpv
tpl3 = close < tpv ? eps3 + close * (ProfitTarget_Percent / 100) : tpv
tpl4 = close < tpv ? eps4 + close * (ProfitTarget_Percent / 100) : tpv
tpl5 = close < tpv ? eps5 + close * (ProfitTarget_Percent / 100) : tpv
tpl6 = close < tpv ? eps6 + close * (ProfitTarget_Percent / 100) : tpv


// Open DCA order once at the start of the week
dcaWeek = input("++++", title = "+++++ Open DCA order once every week +++++")

newWeek = change(time("W"))
dcatime = input(title = "Buy a fixed amount every Monday", defval = false)
fixedAmount = input(40, title = "Fixed amount currency for DCA orders", step = 0.1)
dcaq = fixedAmount / open
plotchar (dcatime ? newWeek : na, "buy at Week start", "▼", location.top, size = size.tiny, color = color.white)
bgcolor (dcatime and newWeek ? color.white : na, transp = 50)

// Submit entry orders
if (co and strategy.opentrades == 0)
    eps1 := long1
    eps2 := long2
    eps3 := long3
    eps4 := long4
    eps5 := long5
    eps6 := long6

    strategy.entry("Long1", strategy.long, q)

if (strategy.opentrades == 1)
    strategy.entry("Long2", strategy.long, q, limit = eps2)

    
if (strategy.opentrades == 2)
    strategy.entry("Long3", strategy.long, q, limit = eps3)


if (strategy.opentrades == 3)
    strategy.entry("Long4", strategy.long, q, limit = eps4)


if (strategy.opentrades == 4)
    strategy.entry("Long5", strategy.long, q, limit = eps5)

    
if (strategy.opentrades == 5) 
    strategy.entry("Long6", strategy.long, q, limit = eps6)
    
// Submit Weekly DCA order, only when price is below position average price and when a position is open
if (dcatime and newWeek and strategy.position_size > 0 and close < strategy.position_avg_price) 
    strategy.entry("DCA", strategy.long, dcaq)


// Exit orders
if (strategy.position_size > 0)
    strategy.exit(id = "Exit 1", from_entry = "Long1", limit = tpl1)
    strategy.exit(id = "Exit 2", from_entry = "Long2", limit = tpl2)
    strategy.exit(id = "Exit 3", from_entry = "Long3", limit = tpl3)
    strategy.exit(id = "Exit 4", from_entry = "Long4", limit = tpl4)
    strategy.exit(id = "Exit 5", from_entry = "Long5", limit = tpl5)
    strategy.exit(id = "Exit 6", from_entry = "Long6", limit = tpl6)
    strategy.exit(id = "Exit DCA", from_entry = "DCA", limit = tpv)
 

// Make sure that all open limit orders are canceled after exiting all the positions 
longClose = strategy.position_size[1] > 0 and strategy.position_size == 0 ? 1 : 0   
if longClose
    strategy.cancel_all()