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

RSI اوسط ریورسشن قیمت فلوٹیشن کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-26 19:55:03
ٹیگز:

جائزہ

یہ حکمت عملی RSI اشارے کا استعمال کرتے ہوئے oversold مواقع کی نشاندہی کرتی ہے اور قیمتوں میں کمی کے وقت قیمتوں میں کمی کے بعد قیمتوں میں کمی کے ل gradually قیمت کی بنیاد کو کم کرنے اور طویل مدتی منافع حاصل کرنے کے لئے پوزیشن لیتی ہے۔ اس میں خطرات کو مزید سنبھالنے کے لئے DCA میکانزم بھی شامل ہے۔

حکمت عملی منطق

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

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

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

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

فوائد کا تجزیہ

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

  1. بیچوں میں پوزیشنیں لینے سے افتتاحی خطرہ متنوع ہوتا ہے اور سب سے کم نقطہ نظر سے بچنے سے بچتا ہے۔

  2. متعدد اوسط ریورس قیمت کی سطحوں کا تعین کرنے سے لاگت کی بنیاد کو مستقل طور پر کم کیا جاتا ہے اور نیچے کے خطرے کا انتظام کیا جاتا ہے۔

  3. اوسط پوزیشن کی قیمت کا حساب لگانے سے بروقت منافع حاصل کرنے اور گرین میں منافع میں مقفل ہونے کی اجازت ملتی ہے۔

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

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

  6. چلتی اوسط فلٹر واپسی کی تجارت سے بچتا ہے.

خطرے کا تجزیہ

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

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

  2. ایک ہی تجارت کے نقصان کو مؤثر طریقے سے کنٹرول کرنے کے لئے کوئی سٹاپ نقصان میکانزم نہیں ہے.

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

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

ممکنہ حل:

  1. صرف RSI پر انحصار کرنے کے بجائے مارکیٹ کی ساخت کا اندازہ کرنے کے لئے دوسرے اشارے شامل کریں.

  2. منتقل یا وقفے وقفے سٹاپ نقصان شامل کریں.

  3. پوزیشن کے اضافے کی تعداد کو محدود کریں.

  4. زیادہ مستحکم میکانزم کے لئے ڈی سی اے انٹری منطق کو بہتر بنائیں.

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

اسٹریٹیجی کو مندرجہ ذیل طریقوں سے بہتر بنایا جاسکتا ہے:

  1. زیادہ سائنسی نقطہ نظر کے لئے اوسط ریورسشن الگورتھم کو بہتر بنائیں.

  2. منافع لینے کے طریقہ کار کو بہتر بنائیں ، جیسے ٹریلنگ اسٹاپ یا پرتوں پر منافع لینا۔

  3. بہتر واحد تجارت کے خطرے کے کنٹرول کے لئے سٹاپ نقصان شامل کریں.

  4. مارکیٹ کی ساخت کے تجزیہ کے لئے خالص RSI کے بجائے دیگر اشارے شامل کریں.

  5. مقررہ وقت کے اندراج کے خطرات سے بچنے کے لئے ڈی سی اے منطق کو بہتر بنائیں.

  6. مجموعی پوزیشن سائز کو بہتر بنانے کے لئے پوزیشن سائزنگ شامل کریں.

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

  8. مختلف مارکیٹ کے نظام کو اپنانے کے لئے سوئچنگ منطق شامل کریں.

نتیجہ

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


/*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()





مزید