RSI اور تجارتی حجم پر مبنی Yin-Yang ڈبل ٹریک ٹرینڈ ٹریڈنگ حکمت عملی


تخلیق کی تاریخ: 2023-12-22 14:29:05 آخر میں ترمیم کریں: 2023-12-22 14:29:05
کاپی: 1 کلکس کی تعداد: 747
1
پر توجہ دیں
1621
پیروکار

RSI اور تجارتی حجم پر مبنی Yin-Yang ڈبل ٹریک ٹرینڈ ٹریڈنگ حکمت عملی

جائزہ

یہ حکمت عملی ایک ایسی حکمت عملی ہے جو رجحانات کی سمت کی نشاندہی کرنے اور رجحانات کی پیروی کرنے کے لئے رشتہ دار طاقت کے اشارے (RSI) اور تجارت کی مقدار کے مجموعی اشارے کا استعمال کرتی ہے۔ اہم نکات یہ ہیں:

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

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

اس حکمت عملی میں درج ذیل اشارے اور پیرامیٹرز استعمال کیے گئے ہیں۔

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

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

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

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

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

خطرے کا تجزیہ

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

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

بہتر بنانے کے اقدامات:

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

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

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

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-11-21 00:00:00
end: 2023-12-21 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/
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    ,@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@      @@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@        @@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@         @@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@           @@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@        .@@@@@@@@@@@@@@@            @@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@          *@@@@@@@@@@@@@@             @@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@         @@@@@@@@@@@@@@@               @@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@     @@@@@@@@@@@@@@@@                 @@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                  @@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.                    @@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                      @@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.                         @
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                             @
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,                                       @
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                                                @
// @@@@@@@@@@@@@@@@@@@@@@@@@@@                                                    @
// @@@@@@@@@@@@@@@@@@@@@@@@@                                                     @@
// @@@@@@@@@@@@@@@@@@@@@@@                                                       @@
// @@@@@@@@@@@@@@@@@@@@@@                                                       @@@
// @@@@@@@@@@@@@@@@@@@@@*                @@@@@                                 @@@@
// @@@@@@@@@@@@@@@@@@@@@               @@@@@@@@@                              @@@@@
// @@@@@@@@@@@@@@@@@@@@@              @@@@@@@@@@@                           @@@@@@@
// @@@@@@@@@@@@@@@@@@@@@               @@@@@@@@%                           @@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@                                                @@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@                                            @@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@                                        %@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@                                   @@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@                           @@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// © YinYangAlgorithms

//@version=5
strategy("YinYang RSI Volume Trend Strategy", shorttitle="YinYang RSVT Strategy", overlay=true )
// ~~~~~~~~~~~ INPUTS ~~~~~~~~~~~ //
len = input.int(80, "Trend Length:", tooltip="How far back should we span this indicator?\nThis length effects all lengths of the indicator")
purchaseSrc = input.source(close, "Purchase Source (Long and Short):", tooltip="What source needs to exit the purchase zone for a purchase to happen?")
exitSrc = input.source(close, "Exit Source (Long and Short):", tooltip="What source needs to hit a exit condition to stop the trade (Take profit, Stop Loss or hitting the other sides Purchase Zone)?")
useTakeProfit = input.bool(true, "Use Take Profit", tooltip="Should we take profit IF we cross the basis line and then cross it AGAIN?")
useStopLoss = input.bool(true, "Use Stop Loss", tooltip="Stop loss will ensure you don't lose too much if its a bad call")
stopLossMult = input.float(0.1, "Stoploss Multiplier %:", tooltip="How far from the purchase lines should the stop loss be")
resetCondition = input.string("Entry", "Reset Purchase Availability After:", options=["Entry", "Stop Loss", "None"],
 tooltip="If we reset after a condition is hit, this means we can purchase again when the purchase condition is met. \n" +
 "Otherwise, we will only purchase after an opposite signal has appeared.\n" +
 "Entry: means when the close enters the purchase zone (buy or sell).\n" +
 "Stop Loss: means when the close hits the stop loss location (even when were out of a trade)\n" +
 "This allows us to get more trades and also if our stop loss initally was hit but it WAS a good time to purchase, we don't lose that chance.")

// ~~~~~~~~~~~ VARIABLES ~~~~~~~~~~~ //
var bool longStart = na
var bool longAvailable = na
var bool longTakeProfitAvailable = na
var bool longStopLoss = na
var bool shortStart = na
var bool shortAvailable = na
var bool shortTakeProfitAvailable = na
var bool shortStopLoss = na

resetAfterStopLoss = resetCondition == "Stop Loss"
resetAfterEntry = resetCondition == "Entry"

// ~~~~~~~~~~~ CALCULATIONS ~~~~~~~~~~~ //
// Mid Line
midHigh = ta.vwma(ta.highest(high, len), len)
midLow = ta.vwma(ta.lowest(low, len), len)
mid = math.avg(midHigh, midLow)
midSmoothed = ta.ema(mid, len)

//Volume Filtered
avgVol = ta.vwma(volume, len)
volDiff = volume / avgVol
midVolSmoothed = ta.vwma(midSmoothed * volDiff, 3)

//RSI Filtered
midDifference = ta.sma(midHigh - midLow, len)
midRSI = ta.rsi(midVolSmoothed, len) * 0.01
midAdd = midRSI * midDifference

//Calculate Zones
purchaseZoneHigh = midSmoothed + midAdd
purchaseZoneLow = midSmoothed - midAdd
purchaseZoneBasis = math.avg(purchaseZoneHigh, purchaseZoneLow)

//Create Stop Loss Locations
stopLossHigh = purchaseZoneHigh * (1 + (stopLossMult * 0.01))
stopLossLow = purchaseZoneLow * (1 - (stopLossMult * 0.01))

// ~~~~~~~~~~~ PURCHASE CALCULATIONS ~~~~~~~~~~~ //
//Long
longEntry = ta.crossunder(purchaseSrc, purchaseZoneLow)
longStart := ta.crossover(purchaseSrc, purchaseZoneLow) and longAvailable
longAvailable := ta.crossunder(purchaseSrc, purchaseZoneHigh) or (resetAfterStopLoss and longStopLoss) or (resetAfterEntry and longEntry) ? true : longStart ? false : longAvailable[1]
longEnd = ta.crossover(exitSrc, purchaseZoneHigh)
longStopLoss := ta.crossunder(exitSrc, stopLossLow)
longTakeProfitAvailable := ta.crossover(exitSrc, purchaseZoneBasis) ? true : longEnd ? false : longTakeProfitAvailable[1]
longTakeProfit = ta.crossunder(exitSrc, purchaseZoneBasis) and longTakeProfitAvailable

//Short
shortEntry = ta.crossover(purchaseSrc, purchaseZoneHigh)
shortStart := ta.crossunder(purchaseSrc, purchaseZoneHigh) and shortAvailable
shortAvailable := ta.crossover(purchaseSrc, purchaseZoneLow) or (resetAfterStopLoss and shortStopLoss) or (resetAfterEntry and shortEntry)? true : shortStart ? false : shortAvailable[1]
shortEnd = ta.crossunder(exitSrc, purchaseZoneLow)
shortStopLoss := ta.crossover(exitSrc, stopLossHigh)
shortTakeProfitAvailable := ta.crossunder(exitSrc, purchaseZoneBasis) ? true : shortEnd ? false : shortTakeProfitAvailable[1]
shortTakeProfit = ta.crossover(exitSrc, purchaseZoneBasis) and shortTakeProfitAvailable

// ~~~~~~~~~~~ PLOTS ~~~~~~~~~~~ //
shortLine = plot(purchaseZoneHigh, color=color.green)
shortStopLossLine = plot(stopLossHigh, color=color.green) //color=color.rgb(0, 97, 3)
fill(shortLine, shortStopLossLine, color = color.new(color.green, 90))
plot(purchaseZoneBasis, color=color.white)
longLine = plot(purchaseZoneLow, color=color.red)
longStopLossLine = plot(stopLossLow, color=color.red) //color=color.rgb(105, 0, 0)
fill(longLine, longStopLossLine, color=color.new(color.red, 90))

// ~~~~~~~~~~~ STRATEGY ~~~~~~~~~~~ //
if (longStart)
    strategy.entry("buy", strategy.long)
else if (longEnd or (useStopLoss and longStopLoss) or (useTakeProfit and longTakeProfit))
    strategy.close("buy")

if (shortStart)
    strategy.entry("sell", strategy.short)
else if (shortEnd or (useStopLoss and shortStopLoss) or (useTakeProfit and shortTakeProfit))
    strategy.close("sell")

// ~~~~~~~~~~~ ALERTS ~~~~~~~~~~~ //
if longStart or (longEnd or (useStopLoss and longStopLoss) or (useTakeProfit and longTakeProfit)) or shortStart or (shortEnd or (useStopLoss and shortStopLoss) or (useTakeProfit and shortTakeProfit))
    alert("{{strategy.order.action}} | {{ticker}} | {{close}}", alert.freq_once_per_bar)