YinYang RSI حجم رجحان ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-22 14:29:05
ٹیگز:

img

جائزہ

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

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

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

یہ حکمت عملی مندرجہ ذیل اشارے اور پیرامیٹرز کا استعمال کرتی ہے:

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

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

فوائد

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

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

خطرات

کچھ خطرات بھی ہیں:

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

حل:

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

اصلاح

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

  1. سگنل کی تصدیق کے لئے دوسرے اشارے کی کوشش کرنا جیسے موم بتی ، اتار چڑھاؤ کے اشارے وغیرہ
  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)

مزید