رجحان کی تبدیلی کے رفتار کے اشارے کراس اوور ٹریکنگ کی حکمت عملی

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

img

جائزہ

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

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

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

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

فوائد کا تجزیہ

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

خطرے کا تجزیہ

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

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

اصلاح کی ہدایات

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

  1. قیمتوں کے الٹ جانے کے فیصلوں کی درستگی کو بہتر بنانے کے لئے ایم اے سی ڈی اور آر ایس آئی پیرامیٹرز کے امتزاج کو بہتر بنائیں۔

  2. مزید اشارے فلٹرنگ، جیسے KD، BOLL وغیرہ کو بڑھانا تاکہ ایک دوسرے کو شامل کرنے والے اشارے کا اثر پیدا کیا جاسکے۔

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

  4. ریئل ٹائم میں ریئل ٹرینڈ کے مطابق ریئل ٹائم میں منافع کی پوزیشن تبدیل کریں.

خلاصہ

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


/*backtest
start: 2023-11-28 00:00:00
end: 2023-12-28 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/
// © AHMEDABDELAZIZZIZO

//@version=5
strategy("Ta Strategy", overlay=true )

// inputs
inversestrategy = input.bool(false, title = "Inverse Strategy",tooltip = "This option makes you reverse the strategy so that long signals become where to short  ")
direction = input.string(defval = "Both" , options = ["Both" , "Short" , "Long"] )

leftbars= input(6,title = " Left Bars" , group = "Support and resistance")
rightbars = input(6, title = " Right Bars", group = "Support and resistance")

macdfast = input(12, title = "MACD Fast", group = "MACD")
macdslow = input(26, title = "MACD Slow",group = "MACD")
macdsignal = input(7, "MACD Signal",group = "MACD")

sellqty = input(50, title = "QTY to sell at TP 1")

len = input(14, title="ADX Length" , group = "ADX")


// sup and res
res = fixnan(ta.pivothigh(high,leftbars,rightbars))
sup = fixnan(ta.pivotlow(low , leftbars,rightbars))

// macd
macd =ta.ema(close,macdfast) - ta.ema(close,macdslow)
signal=ta.ema(macd,macdsignal)


//adx
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = ta.rma(ta.tr,len)
plusDI = 100 * ta.rma(plusDM, len) / truerange
minusDI = 100 * ta.rma(minusDM, len) / truerange
dx = 100 * ta.rma(math.abs(plusDI - minusDI) / (plusDI + minusDI), len)
adx = ta.sma(dx, len)

// start deal condition
longcondition =  ta.crossover(macd,signal) and close > res and ta.rsi(close,14) > 50 and plusDI > minusDI and adx > 20 
shortcondition = ta.crossunder(macd,signal) and close < sup and ta.rsi(close,14) < 50 and plusDI < minusDI and adx > 20 

//tp
longtp1   = input.float(6, "Long TP 1", minval = 0.0, step = 0.25, group = "Exit LONG Orders") /100
longtp2   = input.float(12, "Long TP 2", minval = 0.0, step = 0.25, group = "Exit LONG Orders") /100
longsl1 = input.float(3.0, "Long SL",  minval = 0.0, step = 0.25, group = "Exit LONG Orders") /100
longtakeprofit1 = (strategy.position_avg_price * (1 + longtp1)) 
longstoploss1 = (strategy.position_avg_price * (1 - longsl1)) 
longtakeprofit2 = (strategy.position_avg_price * (1 + longtp2)) 

//sl
shorttp1   = input.float(6.0, "Short TP 1 ", minval = 0.0, step = 0.25, group = "Exit SHORT Orders")/100
shorttp2   = input.float(12.0, "Short TP 2", minval = 0.0, step = 0.25, group = "Exit SHORT Orders")/100
shortsl1 = input.float(3.0, "Short SL",  minval = 0.0, step = 0.25, group = "Exit SHORT Orders")/100
shorttakeprofit1 = (strategy.position_avg_price * (1- shorttp1))
shortstoploss1 = (strategy.position_avg_price * (1 + shortsl1))
shorttakeprofit2 = (strategy.position_avg_price * (1- shorttp2))

//placeorders
if inversestrategy == false
    if direction == "Both"
        if longcondition and strategy.opentrades == 0
            strategy.entry("long" , strategy.long )
        strategy.exit("exit long 1","long",qty_percent = sellqty ,limit = longtakeprofit1,stop = longstoploss1)
        strategy.exit("exit long 2","long",qty_percent = 100 ,limit = longtakeprofit2,stop = longstoploss1)
        if high >= longtakeprofit1
            strategy.cancel("exit long 2")
            strategy.exit("exit long 3","long",qty_percent = 100 ,limit = longtakeprofit2,stop = strategy.position_avg_price)
        if shortcondition and strategy.opentrades == 0
            strategy.entry("short",strategy.short)
        strategy.exit("exit short 1","short",qty_percent = sellqty ,limit = shorttakeprofit1,stop = shortstoploss1)
        strategy.exit("exit short 2","short",qty_percent = 100 ,limit = shorttakeprofit2,stop = shortstoploss1)
        if low <= shorttakeprofit1
            strategy.cancel("exit short 2")
        strategy.exit("exit short 3","short",qty_percent = 100 ,limit = shorttakeprofit2,stop = strategy.position_avg_price)
    else if direction == "Long"
        if longcondition and strategy.opentrades == 0
            strategy.entry("long" , strategy.long )
        strategy.exit("exit long 1","long",qty_percent = sellqty ,limit = longtakeprofit1,stop = longstoploss1)
        strategy.exit("exit long 2","long",qty_percent = 100 ,limit = longtakeprofit2,stop = longstoploss1)
        if high >= longtakeprofit1
            strategy.cancel("exit long 2")
            strategy.exit("exit long 3","long",qty_percent = 100 ,limit = longtakeprofit2,stop = strategy.position_avg_price)
    else if direction == "Short"
        if shortcondition and strategy.opentrades == 0
            strategy.entry("short",strategy.short)
        strategy.exit("exit short 1","short",qty_percent = sellqty ,limit = shorttakeprofit1,stop = shortstoploss1)
        strategy.exit("exit short 2","short",qty_percent = 100 ,limit = shorttakeprofit2,stop = shortstoploss1)
        if low <= shorttakeprofit1
            strategy.cancel("exit short 2")
        strategy.exit("exit short 3","short",qty_percent = 100 ,limit = shorttakeprofit2,stop = strategy.position_avg_price)
else
    if direction == "Both"
        if shortcondition and strategy.opentrades == 0
            strategy.entry("long" , strategy.long )
        strategy.exit("exit long 1","long",qty_percent = sellqty ,limit = longtakeprofit1,stop = longstoploss1)
        strategy.exit("exit long 2","long",qty_percent = 100 ,limit = longtakeprofit2,stop = longstoploss1)
        if high >= longtakeprofit1
            strategy.cancel("exit long 2")
            strategy.exit("exit long 3","long",qty_percent = 100 ,limit = longtakeprofit2,stop = strategy.position_avg_price)
        if longcondition and strategy.opentrades == 0
            strategy.entry("short",strategy.short)
        strategy.exit("exit short 1","short",qty_percent = sellqty ,limit = shorttakeprofit1,stop = shortstoploss1)
        strategy.exit("exit short 2","short",qty_percent = 100 ,limit = shorttakeprofit2,stop = shortstoploss1)
        if low <= shorttakeprofit1
            strategy.cancel("exit short 2")
        strategy.exit("exit short 3","short",qty_percent = 100 ,limit = shorttakeprofit2,stop = strategy.position_avg_price)
    else if direction == "Long"
        if shortcondition and strategy.opentrades == 0
            strategy.entry("long" , strategy.long )
        strategy.exit("exit long 1","long",qty_percent = sellqty ,limit = longtakeprofit1,stop = longstoploss1)
        strategy.exit("exit long 2","long",qty_percent = 100 ,limit = longtakeprofit2,stop = longstoploss1)
        if high >= longtakeprofit1
            strategy.cancel("exit long 2")
            strategy.exit("exit long 3","long",qty_percent = 100 ,limit = longtakeprofit2,stop = strategy.position_avg_price)
    else if direction == "Short"
        if longcondition and strategy.opentrades == 0
            strategy.entry("short",strategy.short)
        strategy.exit("exit short 1","short",qty_percent = sellqty ,limit = shorttakeprofit1,stop = shortstoploss1)
        strategy.exit("exit short 2","short",qty_percent = 100 ,limit = shorttakeprofit2,stop = shortstoploss1)
        if low <= shorttakeprofit1
            strategy.cancel("exit short 2")
        strategy.exit("exit short 3","short",qty_percent = 100 ,limit = shorttakeprofit2,stop = strategy.position_avg_price)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
lsl1 = plot(strategy.position_size <= 0 ? na : longstoploss1, color=color.rgb(124, 11, 11), style=plot.style_linebr, linewidth=1)
ltp1 = plot(strategy.position_size <= 0 ? na : longtakeprofit1, color=color.rgb(15, 116, 18), style=plot.style_linebr, linewidth=1)
ltp2 = plot(strategy.position_size <= 0 ? na : longtakeprofit2, color=color.rgb(15, 116, 18), style=plot.style_linebr, linewidth=1)
avg = plot(strategy.position_avg_price, color=color.rgb(255, 153, 0, 47), style=plot.style_linebr, linewidth=1)
fill(ltp1,avg , color =strategy.position_size <= 0 ? na : color.rgb(82, 255, 97, 90))
fill(ltp2,ltp1 , color =strategy.position_size <= 0 ? na : color.rgb(82, 255, 97, 90))
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ssl1 = plot(strategy.position_size >= 0 ? na : shortstoploss1, color=color.red, style=plot.style_linebr, linewidth=1)
stp1 = plot(strategy.position_size >= 0 ? na : shorttakeprofit2, color=color.green, style=plot.style_linebr, linewidth=1)
stp2 = plot(strategy.position_size >= 0 ? na : shorttakeprofit1, color=color.green, style=plot.style_linebr, linewidth=1)
fill(stp1,avg , color =strategy.position_size >= 0 ? na : color.rgb(30, 92, 35, 90))
fill(stp2,stp1 , color =strategy.position_size >= 0 ? na : color.rgb(30, 92, 35, 90))
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
resplot = plot(res, color=ta.change(res) ? na : #bf141446,  linewidth=3, offset=-(rightbars+1), title="res")
supplot = plot(sup, color=ta.change(sup) ? na : #118f113a,  linewidth=3, offset=-(rightbars+1), title="sup")

مزید