تاخیر شدہ RSI تجارتی حکمت عملی


تخلیق کی تاریخ: 2023-10-07 15:38:56 آخر میں ترمیم کریں: 2023-10-07 15:38:56
کاپی: 0 کلکس کی تعداد: 701
1
پر توجہ دیں
1617
پیروکار

جائزہ

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

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

یہ حکمت عملی 21 دوروں کی لمبائی کے آر ایس آئی اشارے کا استعمال کرتی ہے جس میں اوورلوڈ اور اوورلوڈ کا تعین کیا جاتا ہے۔ جب آر ایس آئی اشارے پر صارف کے ذریعہ طے شدہ اوورلوڈ لائن (ڈیفالٹ 60) کو عبور کرتے ہیں تو ، اسے اوورلوڈ سمجھا جاتا ہے۔ جب آر ایس آئی اشارے کے نیچے صارف کے ذریعہ طے شدہ اوورلوڈ لائن (ڈیفالٹ 40) کو عبور کرتے ہیں تو ، اسے اوورلوڈ سمجھا جاتا ہے۔

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

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

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

اسٹریٹجک فوائد

  1. RSI اشارے کا استعمال کرتے ہوئے اوورلوڈ اور اوورلوڈ کے حالات کا تعین کرنے کے لئے ، واپسی کے مواقع کو درست طریقے سے پکڑ سکتے ہیں۔ RSI ایک زیادہ پختہ اوورلوڈ اور اوورلوڈ اشارے ہے جو واپسی کے مواقع کی مؤثر طریقے سے شناخت کرسکتا ہے۔

  2. تاخیر سے داخلے کا طریقہ کار جعلی کامیابیوں سے ہونے والے نقصانات کو روکنے میں مدد کرتا ہے۔ بہت سے کامیابیوں کا مطلب یہ نہیں ہے کہ کوئی اہم تبدیلی واقع ہوئی ہے۔ تاخیر سے داخلے سے کامیابیوں کی تاثیر کی تصدیق ہوسکتی ہے۔

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

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

  5. ریورس ٹریڈنگ کے اختیارات فراہم کرتے ہیں، مختلف قسم کی خصوصیات کو اپنانے کے لئے. صارفین کو غیر یقینی صورتحال کو ہینڈل کرنے کے لئے مثبت یا ریورس ٹریڈنگ منطق کا انتخاب کر سکتے ہیں.

اسٹریٹجک رسک

  1. آر ایس آئی کے غلط سگنل کا خطرہ۔ آر ایس آئی سگنل ہمیشہ کام نہیں کرتے ہیں ، اور کچھ مارکیٹ کے حالات میں غلط سگنل ہوسکتے ہیں۔

  2. بہت زیادہ تاخیر سے داخلے کے وقت سے محروم ہونے کا خطرہ ہے۔ تاخیر کا دورانیہ بہت طویل ہونے کی وجہ سے داخلے کے بہتر مقامات سے محروم ہوجاتا ہے۔

  3. ریورس ٹریڈنگ میں نقصان کا خطرہ بڑھ جاتا ہے۔ ریورس ٹریڈنگ غیر یقینی صورتحال کو بچانے کے لئے کام کرتی ہے ، لیکن مجموعی نقصان کو بڑھا سکتی ہے۔

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

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

مذکورہ بالا خطرات کے لئے ، اصلاحات کی سفارشات یہ ہیں:

  1. دوسرے اشارے کے ساتھ مل کر آر ایس آئی سگنل کو فلٹر کریں ، جس سے وشوسنییتا میں اضافہ ہوتا ہے۔ جیسے کے ڈی جے ، ایم اے سی ڈی اور دیگر اشارے۔

  2. مختلف قسم کے تاریخی اعداد و شمار کی جانچ کے مطابق بہترین تاخیر کی مدت کے پیرامیٹرز کو منتخب کریں۔ یہ ضروری نہیں ہے کہ یہ عام طور پر ہو۔

  3. ریورس ٹریڈنگ کا استعمال کرتے ہوئے محتاط رہیں، رجحان ٹریڈنگ کے ساتھ بہتر ہے.

  4. اسٹاپ نقصانات کو ٹریک کرنے کے لئے وسیع فاصلہ طے کریں تاکہ موجودہ قیمتوں کے قریب سے بچنے سے گریز کیا جاسکے۔

  5. مختلف سٹاپ کا ضرب جانچ کر کے بہترین پیرامیٹرز تلاش کریں۔ متحرک سٹاپ کا بھی خیال کیا جا سکتا ہے۔

اصلاح کی سمت

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

  1. متعدد اشارے کے ساتھ مل کر انٹری سگنل کو فلٹر کریں۔ مثال کے طور پر ، KDJ ، MACD اور دیگر اشارے RSI کے ساتھ مل کر ، زیادہ قابل اعتماد تجارتی سگنل تشکیل دے سکتے ہیں۔

  2. متحرک ایڈجسٹمنٹ تاخیر کی مدت کی تعداد۔ مارکیٹ میں اتار چڑھاؤ کی حد کے مطابق ، تاخیر کی مدت کی تعداد کو متحرک طور پر تبدیل کیا جاسکتا ہے ، جس سے غلط بریک سے بچنے کی ضمانت دی جاسکتی ہے ، اور اسی کے ساتھ ہی داخلے کی درستگی کو بہتر بنایا جاسکتا ہے۔

  3. اسٹاپ نقصان کی روک تھام کی حکمت عملی کو بہتر بنائیں۔ متحرک اسٹاپ ، منافع کی واپسی کا تناسب اسٹاپ ، ٹائم اسٹاپ وغیرہ کا مطالعہ کیا جاسکتا ہے ، تاکہ اسٹاپ نقصان کی روک تھام کو مارکیٹ کے اتار چڑھاؤ کی خصوصیات کے مطابق بنایا جاسکے۔

  4. رجحان کے عوامل کے ساتھ مل کر. آپ کو یہ فیصلہ کر سکتے ہیں کہ بریکٹ کی سمت بڑے رجحان کی سمت کے ساتھ مطابقت رکھتی ہے ، اور اس کے برعکس تجارت سے بچنے کے لئے. آپ کو بریکٹ کی طاقت کے مطابق تاخیر کی مدت کی تعداد کو بھی ایڈجسٹ کر سکتے ہیں.

  5. مشین لرننگ کا استعمال کرتے ہوئے بہترین پیرامیٹرز کا مجموعہ تلاش کریں۔ مشین لرننگ بہت سارے ٹریننگ اور ریٹرننگ ڈیٹا کے ذریعہ خود بخود پیرامیٹرز کو ایڈجسٹ کرسکتا ہے تاکہ بہترین پیرامیٹرز کا مجموعہ حاصل کیا جاسکے۔

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-06 00:00:00
period: 1d
basePeriod: 1h
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/
// © tweakerID and © BacktestRookies

// This strategy uses a 21 period RSI with an overbought (RSI indicator 
// is greater than) level of 60 (user defined) to determines long entries and an oversold 
// (RSI indicator is less than) level of 40 (user defined) for shorts. It introduces a bar delay that starts
// counting when the RSI < Oversold or RSI > Overbought conditions are true, delaying the entry with 
// the amount of bars determined by the user. The trading logic can be reversed, which seems to work better.

//@version=4
strategy("Delayed RSI Strategy", 
     overlay=false, 
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, 
     initial_capital=10000, 
     commission_value=0.04, 
     calc_on_every_tick=false, 
     slippage=0)
     
direction = input(0, title = "Strategy Direction", type=input.integer, minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : 
 (direction < 0 ? strategy.direction.short : strategy.direction.long))

// Bought and Sold Boolean Signal
bought = strategy.position_size > strategy.position_size[1] 
 or strategy.position_size < strategy.position_size[1]

/////////////////////// STRATEGY INPUTS ////////////////////////////////////////
title1=input(true, "-----------------Strategy Inputs-------------------")  

rsiLen=input(21, title="RSI Length")
i_OB = input(60, title="Overbought")
i_OS = input(40, title="Oversold")
i_delay = input(15, title="Entry Delay (# of Bars)")
i_Close= input(false, title="Use Strategy Close")

/////////////////////// BACKTESTER /////////////////////////////////////////////
title2=input(true, "-----------------General Inputs-------------------")  

// Backtester General Inputs
i_SL=input(true, title="Use Stop Loss and Take Profit")
TS=input(false, title="Use Trailing Stop")
i_SLType=input(defval="ATR Stop", title="Type Of Stop", options=["Strategy Stop", "Swing Lo/Hi", "ATR Stop"])
i_SPL=input(defval=10, title="Swing Point Lookback")
i_PercIncrement=input(defval=3, step=.1, title="Swing Point SL Perc Increment")*0.01
i_ATR = input(14, title="ATR Length")
i_ATRMult = input(3, step=.1, title="ATR Multiple")
i_TPRRR = input(2, step=.1, title="Take Profit Risk Reward Ratio")
DPR=input(false, "Allow Direct Position Reverse")
reverse=input(true, "Reverse Trades")

// Swing Points Stop and Take Profit
SwingStopProfit() =>
    LL=(lowest(i_SPL))*(1-i_PercIncrement)
    HH=(highest(i_SPL))*(1+i_PercIncrement)
    LL_price = valuewhen(bought, LL, 0)
    HH_price = valuewhen(bought, HH, 0)
    entry_LL_price = strategy.position_size > 0 ? LL_price : na 
    entry_HH_price = strategy.position_size < 0 ? HH_price : na 
    tp=strategy.position_avg_price + (strategy.position_avg_price - entry_LL_price)*i_TPRRR
    stp=strategy.position_avg_price - (entry_HH_price - strategy.position_avg_price)*i_TPRRR
    [entry_LL_price, entry_HH_price, tp, stp]

// ATR Stop
ATRStop() =>
    ATR=atr(i_ATR)*i_ATRMult
    ATRLong = ohlc4 - ATR
    ATRShort = ohlc4 + ATR
    ATRLongStop = valuewhen(bought, ATRLong, 0)
    ATRShortStop = valuewhen(bought, ATRShort, 0)
    LongSL_ATR_price = strategy.position_size > 0 ? ATRLongStop : na 
    ShortSL_ATR_price = strategy.position_size < 0 ? ATRShortStop : na 
    ATRtp=strategy.position_avg_price + (strategy.position_avg_price - LongSL_ATR_price)*i_TPRRR
    ATRstp=strategy.position_avg_price - (ShortSL_ATR_price - strategy.position_avg_price)*i_TPRRR
    [LongSL_ATR_price, ShortSL_ATR_price, ATRtp, ATRstp]
    
// Strategy Stop
StrategyStop(bought) =>
    float LongStop = na
    float ShortStop = na
    float StratTP = na
    float StratSTP = na
    [LongStop, ShortStop, StratTP, StratSTP]

//TrailingStop
TrailingStop(SL,SSL) =>
    dif=(valuewhen(strategy.position_size>0 and strategy.position_size[1]<=0, high,0))
     -strategy.position_avg_price
    trailOffset     = strategy.position_avg_price - SL
    var tstop = float(na)
    if strategy.position_size > 0
        tstop := high- trailOffset - dif
        if tstop<tstop[1]
            tstop:=tstop[1]
    else
        tstop := na
    StrailOffset     = SSL - strategy.position_avg_price
    var Ststop = float(na)
    Sdif=strategy.position_avg_price-(valuewhen(strategy.position_size<0 
     and strategy.position_size[1]>=0, low,0))
    if strategy.position_size < 0
        Ststop := low+ StrailOffset + Sdif
        if Ststop>Ststop[1]
            Ststop:=Ststop[1]
    else
        Ststop := na
    [tstop, Ststop]
  
//Stop Loss & Take Profit Switches  
SLTPLogic(LongStop, ShortStop, StratTP, StratSTP, LongSL_ATR_price, ShortSL_ATR_price, ATRtp, ATRstp,
 entry_LL_price, entry_HH_price, tp, stp) =>
    SL= i_SLType == "Swing Lo/Hi" ? entry_LL_price : i_SLType == "ATR Stop" ? LongSL_ATR_price : LongStop
    SSL= i_SLType == "Swing Lo/Hi" ? entry_HH_price : i_SLType == "ATR Stop" ? ShortSL_ATR_price : ShortStop
    TP= i_SLType == "Swing Lo/Hi" ? tp : i_SLType == "ATR Stop" ? ATRtp : StratTP
    STP= i_SLType == "Swing Lo/Hi" ? stp : i_SLType == "ATR Stop" ? ATRstp : StratSTP
    [SL, SSL, TP, STP]


/////////////////////// STRATEGY LOGIC /////////////////////////////////////////

rsi = rsi(close, rsiLen)
isOB= rsi > i_OB
isOS= rsi < i_OS
BarsSinceOB = barssince(not isOB)
BarsSinceOS = barssince(not isOS)

BUY = BarsSinceOS == i_delay
SELL = BarsSinceOB == i_delay

/////////////////////// FUNCTION CALLS /////////////////////////////////////////

// Stops and Profits
[entry_LL_price, entry_HH_price, tp, stp] = SwingStopProfit()
[LongSL_ATR_price, ShortSL_ATR_price, ATRtp, ATRstp] = ATRStop()
[LongStop, ShortStop, StratTP, StratSTP] = StrategyStop(bought)
[SL, SSL, TP, STP] = SLTPLogic(LongStop, ShortStop, StratTP, StratSTP, 
 LongSL_ATR_price, ShortSL_ATR_price, ATRtp, ATRstp, entry_LL_price, entry_HH_price, tp, stp)
[tstop, Ststop] = TrailingStop(SL,SSL)

// Entries
if reverse
    if not DPR
        strategy.entry("long", strategy.long, when=SELL and strategy.position_size == 0)
        strategy.entry("short", strategy.short, when=BUY and strategy.position_size == 0)
    else     
        strategy.entry("long", strategy.long, when=SELL)
        strategy.entry("short", strategy.short, when=BUY)
else
    if not DPR 
        strategy.entry("long", strategy.long, when=BUY and strategy.position_size == 0)
        strategy.entry("short", strategy.short, when=SELL and strategy.position_size == 0)
    else
        strategy.entry("long", strategy.long, when=BUY)
        strategy.entry("short", strategy.short, when=SELL)
// Exits
if i_SL
    strategy.exit("TP & SL", "long", limit=TP, stop=TS? tstop : SL)
    strategy.exit("TP & SL", "short", limit=STP, stop=TS? Ststop : SSL)
    
if i_Close
    strategy.close_all(when=cross(rsi, 50))

/////////////////////// PLOTS //////////////////////////////////////////////////

//Plots
rsiplot = plot(rsi, "RSI", color=#7E57C2)
band1 = hline(i_OB, "Upper Band", color=#787B86)
bandm = hline(50, "Middle Band", color=color.new(#787B86, 50))
band0 = hline(i_OS, "Lower Band", color=#787B86)
fill(band1, band0, color=color.rgb(126, 87, 194, 90), title="Background")
plot(rsi, "RSI", color=#7E57C2)
// OSOBCount = plot(isOB ? BarsSinceOB : isOS ? BarsSinceOS : na, transp=100)
// OSOBColor = color.from_gradient(isOB ? BarsSinceOB : BarsSinceOS, 0, 20, color.black, isOB ? color.red : isOS ? color.green : na)
// OBP = plot(rsi > i_OB ? rsi : na, color=color.white, display=display.none)
// fill(plot(i_OB, display=display.none), OBP, color=OSOBColor, transp=0, fillgaps=false)
// OSP = plot(rsi < i_OS ? rsi : na, color=color.white, display=display.none)
// fill(plot(i_OS, display=display.none), OSP, color=OSOBColor, transp=0, fillgaps=false)

// plotshape(BUY ? 1 : na, style=shape.arrowdown, location=location.bottom, 
//  color=color.green, title="Bullish Setup", size=size.normal)
// plotshape(SELL ? 1 : na, style=shape.arrowup, location=location.top, 
//  color=color.red, title="Bearish Setup", size=size.normal)