ریورس کیپچر کی حکمت عملی


تخلیق کی تاریخ: 2023-11-24 16:43:25 آخر میں ترمیم کریں: 2023-11-24 16:43:25
کاپی: 0 کلکس کی تعداد: 676
1
پر توجہ دیں
1617
پیروکار

ریورس کیپچر کی حکمت عملی

جائزہ

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

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

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

  1. بڑے دورانیہ کے رجحان کی سمت کا تعین کرنے کے لئے ، اس بات کا تعین کریں کہ آیا یہ اچھال ہے یا اچھال۔ 50 دن کے ای ایم اے اور 21 دن کے ای ایم اے کا گولڈ فورک ڈیڈ فورک استعمال کرکے فیصلہ کریں۔
  2. گرنے کے رجحان میں ، جب قیمتوں میں اضافے نے برلن کے نچلے حصے کو توڑ دیا ، اور RSI اشارے نے ابھی ابھی اوور سیل علاقے سے بازیافت کیا ، تو سونے کی کان کی شکل ظاہر ہوتی ہے ، جس سے یہ ظاہر ہوتا ہے کہ اوور سیل علاقے کی بنیاد رکھی گئی ہے ، اور اسے خریدنے کا اشارہ سمجھا جاتا ہے۔
  3. اوپر کی طرف بڑھنے والے رجحان میں ، جب قیمتوں میں کمی برلن کو توڑنے کے لئے ٹریک کو توڑ دیتی ہے ، اور RSI اشارے ابھی ابھی اوور بائڈ زون سے پیچھے ہٹ گیا ہے ، تو ایک ڈیڈ فورک شکل ظاہر ہوتی ہے ، جس سے یہ ظاہر ہوتا ہے کہ اوور بائڈ زون نے پیچھے ہٹنا شروع کردیا ہے ، اور اسے فروخت کرنے کا اشارہ سمجھا جاتا ہے۔
  4. خرید و فروخت کے سگنل کو ایک ساتھ مل کر پورا کیا جانا چاہیے تاکہ جعلی سگنل سے بچا جا سکے۔

طاقت کا تجزیہ

یہ حکمت عملی مندرجہ ذیل فوائد رکھتی ہے:

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

خطرے کا تجزیہ

اس حکمت عملی میں مندرجہ ذیل خطرات بھی ہیں:

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

مندرجہ بالا خطرات کے لئے ، خطرے کے دروازے کو کنٹرول کرنے کے لئے اسٹاپ نقصان کی پوزیشن ترتیب دی جاسکتی ہے ، جبکہ پیرامیٹرز کو بہتر بنانا ، بولین لائن کی مدت یا آر ایس آئی پیرامیٹرز کو ایڈجسٹ کرنا۔

اصلاح کی سمت

اس حکمت عملی کو مندرجہ ذیل نکات سے بہتر بنایا جاسکتا ہے:

  1. برن بینڈ پیرامیٹرز کو بہتر بنائیں ، سائیکل کی لمبائی اور معیاری فرق کی مقدار کو ایڈجسٹ کریں ، اور بہترین پیرامیٹرز کا مجموعہ تلاش کریں۔
  2. رجحانات کا فیصلہ کرنے کے لئے بہترین دورانیہ کی لمبائی کا تعین کرنے کے لئے منتقل اوسط کی مدت کو بہتر بنائیں۔
  3. RSI پیرامیٹرز کو ایڈجسٹ کریں اور بہترین اوورلوڈ اور اوورلوڈ علاقوں کی تلاش کریں۔
  4. دوسرے اشارے کے مجموعے کو شامل کریں ، جیسے کے ڈی جے ، ایم اے سی ڈی ، وغیرہ ، نظام میں داخلے کی وجوہات میں اضافہ کریں۔
  5. مشین لرننگ الگورتھم کو شامل کریں اور AI ٹیکنالوجی کا استعمال کرکے خود کار طریقے سے بہترین پیرامیٹرز تلاش کریں۔

خلاصہ کریں۔

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

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

// This is an Open source work. Please do acknowledge in case you want to reuse whole or part of this code.
// Please see the documentation to know the details about this.

//@version=5
strategy('Strategy:Reversal-Catcher', shorttitle="Reversal-Catcher", overlay=true , currency=currency.NONE, initial_capital=100000)

// Inputs
src = input(close, title="Source (close, high, low, open etc.")

BBlength = input.int(defval=20, minval=1,title="Bollinger Period Length, default 20")
BBmult = input.float(defval=1.5, minval=1.0, maxval=4, step=0.1, title="Bollinger Bands Standard Deviation, default is 1.5")

fastMovingAvg = input.int(defval=21, minval=5,title="Fast Exponential Moving Average, default 21", group = "Trends")
slowMovingAvg = input.int(defval=50, minval=8,title="Slow Exponential Moving Average, default 50", group = "Trends")

rsiLenght = input.int(defval=14, title="RSI Lenght, default 14", group = "Momentum")
overbought = input.int(defval=70, title="Overbought limit (RSI), default 70", group = "Momentum")
oversold = input.int(defval=30, title="Oversold limit (RSI), default 30", group = "Momentum")

hide = input.bool(defval=true, title="Hide all plots and legends from the chart (default: true)")


// Trade related
tradeType = input.string(defval='Both', group="Trade settings", title="Trade Type", options=['Both', 'TrendFollowing', 'Reversal'], tooltip="Consider all types of trades? Or only Trend Following or only Reversal? (default: Both).")
endOfDay = input.int(defval=1500, title="Close all trades, default is 3:00 PM, 1500 hours (integer)", group="Trade settings")
mktAlwaysOn = input.bool(defval=false, title="Markets that never closed (Crypto, Forex, Commodity)", tooltip="Some markers never closes. For those cases, make this checked. (Default: off)", group="Trade settings")


// Utils
annotatePlots(txt, val, hide) => 
    if (not hide)
        var l1 = label.new(bar_index, val, txt, style=label.style_label_left, size = size.tiny, textcolor = color.white, tooltip = txt)
        label.set_xy(l1, bar_index, val)

/////////////////////////////// Indicators /////////////////////
vwap = ta.vwap(src)
plot(hide ? na : vwap, color=color.purple, title="VWAP", style = plot.style_line)
annotatePlots('VWAP', vwap, hide)

// Bollinger Band of present time frame
[BBbasis, BBupper, BBlower] = ta.bb(src, BBlength, BBmult)
p1 = plot(hide ? na : BBupper, color=color.blue,title="Bollinger Bands Upper Line")
p2 = plot(hide ? na : BBlower, color=color.blue,title="Bollinger Bands Lower Line")
p3 = plot(hide ? na : BBbasis, color=color.maroon,title="Bollinger Bands Width", style=plot.style_circles, linewidth = 1)
annotatePlots('BB-Upper', BBupper, hide)
annotatePlots('BB-Lower', BBlower, hide)
annotatePlots('BB-Base(20-SMA)', BBbasis, hide)

// RSI
rsi = ta.rsi(src, rsiLenght)

// Trend following
ema50 = ta.ema(src, slowMovingAvg)
ema21 = ta.ema(src, fastMovingAvg)
annotatePlots('21-EMA', ema21, hide)
annotatePlots('50-EMA', ema50, hide)


// Trend conditions
upTrend = ema21 > ema50 
downTrend = ema21 < ema50


// Condition to check Special Entry: HH_LL
// Long side:
hhLLong = barstate.isconfirmed and (low > low[1]) and (high > high[1]) and (close > high[1])
hhLLShort = barstate.isconfirmed and (low < low[1]) and (high < high[1]) and (close < low[1])

longCond =  barstate.isconfirmed and (high[1] < BBlower[1]) and (close > BBlower) and (close < BBupper) and hhLLong and ta.crossover(rsi, oversold) and downTrend
shortCond = barstate.isconfirmed and (low[1] > BBupper[1]) and (close < BBupper) and (close > BBlower) and hhLLShort and ta.crossunder(rsi, overbought) and upTrend

// Trade execute
h = hour(time('1'), syminfo.timezone)
m = minute(time('1'), syminfo.timezone)
hourVal = h * 100 + m
totalTrades = strategy.opentrades + strategy.closedtrades
if (mktAlwaysOn or (hourVal < endOfDay))
    // Entry
    var float sl = na
    var float target = na
    if (longCond)
        strategy.entry("enter long", strategy.long, 1, limit=na, stop=na, comment="Long[E]")
        sl := low[1]
        target := high >= BBbasis ? BBupper : BBbasis
        alert('Buy:' + syminfo.ticker + ' ,SL:' + str.tostring(math.floor(sl)) + ', Target:' + str.tostring(target), alert.freq_once_per_bar)
    if (shortCond)
        strategy.entry("enter short", strategy.short, 1, limit=na, stop=na, comment="Short[E]")
        sl := high[1]
        target := low <= BBbasis ? BBlower : BBbasis
        alert('Sell:' + syminfo.ticker + ' ,SL:' + str.tostring(math.floor(sl)) + ', Target:' + str.tostring(target), alert.freq_once_per_bar)

    // Exit: target or SL
    if ((close >= target) or (close <= sl))
        strategy.close("enter long", comment=close < sl ? "Long[SL]" : "Long[T]")
    if ((close <= target) or (close >= sl))
        strategy.close("enter short", comment=close > sl ? "Short[SL]" : "Short[T]")
else if (not mktAlwaysOn)
    // Close all open position at the end if Day
    strategy.close_all(comment = "EoD[Exit]", alert_message = "EoD Exit", immediately = true)