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

حکمت عملی کے بعد متغیر میٹرکس رجحان

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

img

جائزہ

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

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

متغیر میٹرکس رجحان کے بعد کی حکمت عملی میں مندرجہ ذیل اہم حصے شامل ہیں:

  1. رجحان کی تشخیص کے لئے دوہری RSI

    مارکیٹ کے رجحان کی سمت کا تعین کرنے کے لئے تیز RSI اور سست RSI کا استعمال کریں۔ جب تیز RSI میں زیادہ خرید یا زیادہ فروخت کی سطح ظاہر ہوتی ہے تو ، رجحان کی سمت کے لئے سست RSI چیک کریں۔

  2. ٹریڈنگ سگنل کے لئے میٹرکس چلتی اوسط

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

  3. دو طرفہ تجارت

    ڈیفالٹ دو طرفہ تجارت ہے۔ صرف طویل عرصے تک جانے کا انتخاب کر سکتے ہیں۔

تجارتی منطق مندرجہ ذیل ہے:

  1. تیز رفتار RSI کا استعمال مارکیٹ میں عارضی طور پر زیادہ خریدنے / زیادہ فروخت کی سطحوں کو دیکھنے کے لئے کریں۔

  2. مارکیٹ کی درمیانی اور طویل مدتی رجحان کی سمت کا تعین کرنے کے لئے سست RSI کا استعمال کریں۔

  3. جب تیز RSI انتہائی دکھاتا ہے اور سست RSI رجحان کی تبدیلی کا اشارہ کرتا ہے، سست RSI کی طرف سے طویل / مختصر رجحان کی بنیاد پر پوزیشنیں لے.

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

  5. جب قیمت کسی میٹرکس لائن کو چھوتی ہے تو ، اس کے مطابق پوزیشن کا سائز ایڈجسٹ کریں۔ مثال کے طور پر ، اوپر کی توڑ پر لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے لمبے

  6. جب قیمت بڑی ایڈجسٹمنٹ دیکھتی ہے، پوزیشنوں کو ابتدائی سطح پر ری سیٹ کیا جائے گا.

مذکورہ بالا اس حکمت عملی کی بنیادی تجارتی منطق کی وضاحت کرتا ہے۔ میٹرکس میکانزم زیادہ رجحان منافع میں مقفل ہونے کی اجازت دیتا ہے۔

فوائد

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

  1. دوہری آر ایس آئی سگنل زیادہ قابل اعتماد ہیں۔ تیز آر ایس آئی جھوٹے بریکآؤٹس سے بچتا ہے اور سست آر ایس آئی اس بات کو یقینی بناتا ہے کہ اہم رجحان درست ہے۔

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

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

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

  5. لچکدار پیرامیٹر کی ترتیبات۔ صارفین تاریخی اعداد و شمار ، تجارتی آلات وغیرہ کی بنیاد پر پیرامیٹر کے بہترین مجموعے کا انتخاب کرسکتے ہیں۔

  6. صاف کوڈ کی ساخت۔ ذمہ داریوں کی واضح علیحدگی کوڈ کو سمجھنے ، بہتر بنانے اور بڑھانے میں آسان بناتی ہے۔

خلاصہ یہ کہ اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ کنٹرول شدہ خطرات کے تحت زیادہ منافع حاصل کرتے ہوئے متعدد میکانزم کے ذریعے سگنل کے معیار کو بہتر بنایا جائے۔ یہ ایک حکمت عملی ہے جو خطرہ اور انعام کو متوازن کرتی ہے۔

خطرات

متغیر میٹرکس رجحانات کے بعد کی حکمت عملی میں بھی کچھ خطرات ہیں ، بنیادی طور پر مندرجہ ذیل شعبوں میں:

  1. دوہری آر ایس آئی سگنلز کی ناکامی کا خطرہ۔ جب مارکیٹ رینج سے منسلک ہوتی ہے تو ، آر ایس آئی اکثر غلط سگنل دیتا ہے۔ پیرامیٹرز کو ایڈجسٹ کرنے یا تجارت کو معطل کرنے کے لئے دستی مداخلت کی ضرورت ہوتی ہے۔

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

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

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

  5. محدود اصلاح کی جگہ کا خطرہ۔ یہ حکمت عملی پہلے ہی کافی پختہ ہے۔ مستقل اصلاح کی صلاحیت محدود ہے۔ اگر مارکیٹ کے نظام میں تیزی سے تبدیلی آتی ہے تو بڑی اپ گریڈ کی ضرورت پڑسکتی ہے۔

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

بہتر مواقع

متغیر میٹرکس رجحان کو مزید بہتر بنانے کی گنجائش ہے:

  1. دوہری RSI پیرامیٹرز کو بہتر بنائیں۔ زیادہ پیرامیٹر مجموعے کی جانچ کریں اور اعلی ترین درستگی کے ساتھ RSI ادوار کا انتخاب کریں۔

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

  3. اسٹاپ نقصان کے طریقہ کار کو شامل کریں۔ مثال کے طور پر ، اگر قیمت ان لائنوں کو توڑتی ہے تو پوزیشنوں کو روکنے کے لئے باہر نکلنے کی لائنیں مرتب کریں۔

  4. مزید سائنسی پوزیشن سائزنگ کے قوانین شامل کریں۔ زیادہ سے زیادہ فائدہ اٹھانے سے بچنے کے لئے پوزیشن سائز ایڈجسٹمنٹ کو زیادہ بتدریج انداز میں منظم کریں.

  5. دوسرے اشارے شامل کریں۔ سگنل کی درستگی کو بہتر بنانے کے لئے اضافی اشارے جیسے ایم اے سی ڈی ، کے ڈی وغیرہ متعارف کروائیں۔

  6. کوڈ کی ساخت کو بہتر بنائیں۔ کوڈ کی توسیع ، بحالی اور کارکردگی کو مزید بہتر بنائیں۔

نتیجہ

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


/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("The Matrix 7.0 Strategy", overlay=false)

//Matrix Settings 
entry_size = input(title="Entry Size", defval = 1)
max_size = input(title="Max Size", defval = 10000)
matrix = input(title="Matrix Interval %", defval = 2)
matrix_price_overwrite = input(title="Matrix Overwrite $", defval = 0.0)
adjustment = input(title="Adjustment Size", defval = 1000)
trade_short = input(title="Trade Short", type=bool, defval = true)

//RSI Settings
periods = input(title="RSI Periods", defval = 14)
overbought_short = input(title="RSI Overbought", defval = 65)
oversold_short = input(title="RSI Oversold", defval = 30)

//RSI Trend Settings
resolution_long = input(title="Resolution Trend", defval = "D")
periods_long = input(title="RSI Trend Periods", defval = 14)
overbought_long = input(title="RSI Trend Overbought", defval = 64)
oversold_long = input(title="RSI Trend Oversold", defval = 30)

//Round Off to 2 decimals
round2(x) =>
    a = x * 10 * 10
    a := floor(a + 0.5)
    a := a / 10 / 10
    a

//RSI Function
RSI = rsi(close, periods)

//RSI Market Function
rsi_oversold = RSI < oversold_short
rsi_overbought = RSI > overbought_short

market_rsi = 0.0
market_rsi := if (rsi_oversold)
    RSI - oversold_short
else
    if (rsi_overbought)
        RSI - overbought_short
    else
        0

//RSI Trend Function
rsi_long = request.security(syminfo.tickerid,resolution_long,rsi(close,periods_long))
trend_rsi_long = rsi_long < oversold_long
trend_rsi_short = rsi_long > overbought_long
trend_rsi = 0
trend_rsi := if (trend_rsi_short)
    -1
else
    if (trend_rsi_long)
        1
    else
        trend_rsi[1] 

// // Shorter time resolution to make "close" crosses give faster positives.
// short_resolution = security(tickerid, "1", close)
// quick = round2(short_resolution) //ROUND OFF TO 2 DECIMAL PLACES.

//Declare Other Variables
entry_price = 0.0
entry_price := nz(entry_price[1])

position_size = 0.0
position_size := nz(position_size[1])

last_traded_price = 0.0
last_traded_price := nz(last_traded_price[1])


matrix_price = 0.0
if matrix_price_overwrite > 0.0
    matrix_price := matrix_price_overwrite
else
    matrix_price := round2((matrix/100) * entry_price)

level = 0
level := nz(level[1])

level_price = entry_price
if not na(level_price[1])
    level_price := level_price[1]

// Calculate Level
if close > level_price 
    level_change = floor((high - level_price)/matrix_price)
    level := level + level_change
else
    if close < level_price 
        level_change = ceil((low - level_price)/matrix_price)
        level := level + level_change
        
// Calculate Level Price   
level_price := (level * matrix_price) + entry_price

// Calculate Matrix Position
matrix_position = 0.0

if position_size > 0
    matrix_position :=  ((-1 * level) * adjustment) + entry_size
else
    if position_size < 0
        matrix_position :=  ((-1 * level) * adjustment) - entry_size
    
//Trend Entry or Reversal Conditions
trend_reversal_up = trend_rsi == 1 and (trend_rsi[1] == -1 or trend_rsi == 0) and position_size <= 0
trend_reversal_down = trend_rsi == -1 and (trend_rsi[1] == 1 or trend_rsi == 0) and position_size >= 0 and trade_short == true
flatten_position = trend_rsi == -1 and (trend_rsi[1] == 1 or trend_rsi == 0) and position_size >= 0 and trade_short == false

//Reset Conditions
reset_long = (position_size > 0) and (close - entry_price > matrix_price) and (market_rsi < 0) and (position_size != entry_size) 
reset_short = (position_size < 0) and (entry_price - close > matrix_price) and (market_rsi > 0) and (position_size != (-1 * entry_size)) 

//Adjustment Conditions
increase_long = (position_size > 0) and (matrix_position > position_size) and (market_rsi < 0) and (matrix_position <= max_size) 
decrease_long = (position_size > 0) and (matrix_position < position_size) and (market_rsi > 0) 
increase_short = (position_size < 0) and (matrix_position < position_size) and (market_rsi > 0) and (matrix_position >= (-1 * max_size)) 
decrease_short = (position_size < 0) and (matrix_position > position_size) and (market_rsi < 0)  

//Transactions
//Trend Reversals
if trend_reversal_up
    strategy.entry("OL", strategy.long, qty=entry_size)
    position_size := entry_size
    matrix_position := entry_size
    level := 0
else
    if trend_reversal_down 
        strategy.entry("OS", strategy.short, qty=entry_size)
        position_size := -1 * entry_size
        matrix_position := -1 * entry_size   
        level := 0
        
    //Reset Positions    
    else
        if reset_long
            order = entry_size - position_size[1]
            strategy.order("RL", strategy.long, qty=order)
            position_size := entry_size
            matrix_position := entry_size
            level := 0
        else
            if reset_short
                order = position_size[1] - (-1* entry_size)
                strategy.order("RS", strategy.short, qty=order)
                position_size := -1 * entry_size
                matrix_position := -1 * entry_size
                level := 0

    //Position Adjustments
            else    
                if increase_long
                    order = matrix_position - position_size[1]
                    strategy.order("IL", strategy.long, qty=order)
                    position_size := position_size[1] + order
                else
                    if decrease_long
                        order = position_size[1] - matrix_position
                        strategy.order("DL", strategy.short, qty=order)
                        position_size := position_size[1] - order
                    else
                        if increase_short
                            order = position_size[1] - matrix_position
                            strategy.order("IS", strategy.short, qty=order)
                            position_size := position_size[1] - order
                        else
                            if decrease_short
                                order = matrix_position - position_size[1]
                                strategy.order("DS", strategy.long, qty=order)
                                position_size := position_size[1] + order
                            else 
                                if flatten_position
                                    strategy.close_all()
                                    position_size := 0.0
                                    matrix_position := 0.0
                                    level := 0

//Grouped Actions
if trend_reversal_up or trend_reversal_down or reset_short or reset_long
    entry_price := round2(close)
    last_traded_price := round2(close)

if increase_long or decrease_long or increase_short or decrease_short
    last_traded_price := round2(close)

// //RSI Trend & Adjustment Moments. (strategy)
p1 = plot(market_rsi, color = trend_rsi > 0 ? green : red, linewidth = 4, title='Market', transp =0)
p2 = plot(trend_rsi, color = trend_rsi > 0 ? green : red, linewidth = 4, title='Trend', transp = 0)
fill(p1,p2, color=trend_rsi > 0 ? green : red, transp=0)
p3 = plot((rsi_long - 50) *2, color = white, title="Trend Index")
fill(p2,p3, color=white)
hline((overbought_long -50) * 2)
hline((oversold_long -50) * 2)

//Position Plots (strategy)
plot(matrix_position / 100, title='Matrix', color=white, linewidth = 4)
plot(position_size / 100, title='Position', color=blue, linewidth = 4)
plot(strategy.position_size / 100, title='Strategy', color=orange, linewidth = 4)

// //Price Plots (study)
// plot(level_price, title="Matrix Level Price", linewidth=4)
// plot(last_traded_price, title="Last Traded Price", linewidth=2, color=orange)
// plot(entry_price + (4 * matrix_price), title='Adjustment 4', color=white, linewidth = 1)
// plot(entry_price + (3 * matrix_price), title='Adjustment 3', color=white, linewidth = 1)
// plot(entry_price + (2 * matrix_price), title='Adjustment 2', color=white, linewidth = 1)
// plot(entry_price + matrix_price, title='Adjustment 1', color=white, linewidth = 1)
// plot(entry_price, title='Entry Price', color=white, linewidth = 3)
// plot(entry_price - matrix_price, title='Adjustment -1', color=white, linewidth = 1)
// plot(entry_price - (2 * matrix_price), title='Adjustment -2', color=white, linewidth = 1)
// plot(entry_price - (3 * matrix_price), title='Adjustment -3', color=white, linewidth = 1)
// plot(entry_price - (4 * matrix_price), title='Adjustment -4', color=white, linewidth = 1)


// //Alerts (study only)
// alertcondition(trend_reversal_up, title='Trend Reversal Up', message='Market Oversold, Lets Buy')
// alertcondition(trend_reversal_down, title='Trend Reversal Down', message='Market Overbought, Lets Sell')
// alertcondition(reset_long, title='Reset Long', message='Higher Bottom, Lets Buy')
// alertcondition(reset_short, title='Reset Short', message='Lower Top, Lets Sell')
// alertcondition(increase_long, title='Increase Long', message='Price Dropped, Lets Buy')
// alertcondition(decrease_long, title='Decrease Long', message='Price Spiked, Lets Sell')
// alertcondition(increase_short, title='Increase Short', message='Price Spiked, Lets Sell')
// alertcondition(decrease_short, title='Decrease Short', message='Price Dropped, Lets Buy')

// //Grouped Conditions
// condition_buy = trend_reversal_up or increase_long or decrease_short or reset_long
// condition_sell = trend_reversal_down or decrease_long or increase_short or reset_short
// adjustment_matrix = trend_reversal_up or increase_long or decrease_short or trend_reversal_down or decrease_long or increase_short or reset_long or reset_short

// //Grouped Alerts
// alertcondition(condition_buy, title='Condition Buy', message='You Need to Buy')
// alertcondition(condition_sell, title='Condition Sell', message='You Need to Sell!')
// alertcondition(adjustment_matrix, title='Adjustment Matrix', message='You Need to Adjust')



مزید