10EMA ڈبل کراس ٹرینڈ ٹریکنگ حکمت عملی

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

img

جائزہ

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

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

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

گولڈن کراس یا ڈیتھ کراس کے بعد 1-5 بار کے اندر لمبی یا مختصر پوزیشنیں کھولیں۔ اس کے علاوہ ، حکمت عملی میں ایک معاون فیصلے کے طور پر گھنٹہ وار چارٹ پر 10EMA بھی متعارف کرایا گیا ہے۔ صرف اس وقت لمبی پوزیشنیں کھولی جاتی ہیں جب گولڈن کراس کے بعد گھنٹہ وار چارٹ پر 10EMA اوپر کے رجحان میں ہوتا ہے ، اور مختصر پوزیشنیں صرف اس وقت کھولی جاتی ہیں جب موت کے کراس کے بعد گھنٹہ وار چارٹ پر 10EMA نیچے کے رجحان میں ہوتا ہے ، اس طرح کچھ غلط سگنل کو فلٹر کرنا۔

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

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

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

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

خطرے کا تجزیہ

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

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

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

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

خلاصہ

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


/*backtest
start: 2022-12-22 00:00:00
end: 2023-12-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("10ema Strat 9", overlay=true, format=format.price)
//#region // inputs for candles
//time
t1 = time(timeframe.period,"0930-1500") //last hour of market is not ideal for trading
// candle status
bullish = close > open and barstate.isconfirmed
bearish = open > close and barstate.isconfirmed
bullcandle = ta.valuewhen(bullish, close, 0)
bearcandle = ta.valuewhen(bearish, close, 0)
ema1 = input.int(10, minval=1, title="short ema")
ema2 = input.int(50, minval=1, title="long ema")
ema3 = input.int(200, minval=1, title="hourly 10 ema")
//@variable Input for source
src = input(close, title="Source")
offsetema = input.int(title="Offset", defval=0, minval=-500, maxval=500)
sema = ta.ema(src, ema1)//@variable Input for smaller ema1
lema = ta.ema(src, ema2)//@variable Input for longer ema2
hema = ta.ema(src, ema3)// @variable Input for hourly ema3
bullcrosscount = ta.barssince(ta.crossover(sema,lema)) //@variable Input 10/50 cross higher
bearcrosscount = ta.barssince(ta.crossunder(sema,lema)) //@variable Input 10/50 cross lower
ideallong = bullcrosscount <= 5 //number of candles after the cross
idealshort = bearcrosscount <= 5 //number of candles after the cross

emabull = (sema > lema) and bearish and close > sema and close > hema and ideallong and t1 and barstate.isconfirmed
xemabull = ta.barssince(emabull)
dbullema = emabull and emabull[1] and xemabull <=1
bullentry = if dbullema
    ta.valuewhen(emabull[1], high + 0.05, 0)
else 
    ta.valuewhen(emabull, high + 0.05, 0)
bullentryh = dbullema ? bullentry[1] : bullentry
bullentrylow = ta.valuewhen(emabull, low - 0.05, 0)
bullstop = (bullentryh - bullentrylow) <= 1.00 ? bullentryh - 1.00 : (bullentryh - bullentrylow) <= 10.40 ? bullentrylow : na
bulltarget = (bullentryh - bullstop) * 1.62 + bullentryh

// bear setup
emabear = (sema < lema) and bullish and close < sema and close < hema and idealshort and t1 and barstate.isconfirmed
xemabear = ta.barssince(emabear)
dbearema = emabear and emabear [1] and xemabear <=1
bearentry = if dbearema
    ta.valuewhen(emabear[1], low - 0.05, 0)
else
    ta.valuewhen(emabear, low - 0.05, 0)
bearentryh = dbearema ? bearentry[1] : bearentry
bearentryhigh = ta.valuewhen(emabear, high + 0.05, 0)
bearstop = (bearentryhigh - bearentryh) <= 1.00 ? bearentryh + 1.00 : (bearentryh - bearentryhigh) <= 10.40 ? bearentryhigh : na
beartarget = bearentryh - (bearstop-bearentryh) * 1.62

bullclose = (xemabull <=7) and bullish and bullcrosscount >=1 and barstate.isconfirmed //number of candles for a close above
bearclose = (xemabear <=7) and bearish and bearcrosscount >=1 and barstate.isconfirmed //number of candles for a close below
buyzone = ta.barssince(bullclose)
shortzone =  ta.barssince(bearclose)
idealbuy = close >= bullentryh and bullclose and (buyzone<=7)
idealsell = close <= bearentryh and bearclose and (shortzone<=7)

// // bull setup on chart
// if sema > lema and xemabull < 50
//     var line line_bullentry = line.new(bar_index, na, bar_index + 1, na, color=color.rgb(0, 200, 0), style=line.style_solid, width=1)
//     if emabull
//         line.set_xy1(line_bullentry, x=bar_index, y=bullentryh)
//         line.set_xy2(line_bullentry, x=bar_index, y=bullentryh)
//         alert("EMA-bullish", alert.freq_once_per_bar_close)
//     line.set_x2(line_bullentry, x=bar_index)
//     var line line_bullstop = line.new(bar_index, na, bar_index + 1, na, color=color.rgb(250, 0, 0), style=line.style_solid, width=1)
//     if emabull
//         line.set_xy1(line_bullstop, x=bar_index, y=bullstop)
//         line.set_xy2(line_bullstop, x=bar_index, y=bullstop)
//     line.set_x2(line_bullstop, x=bar_index)    
//     var line line_bulltarget = line.new(bar_index, na, bar_index + 1, na, color=color.rgb(200, 100, 200), style=line.style_solid, width=1)
//     if emabull
//         line.set_xy1(line_bulltarget, x=bar_index, y=bulltarget)
//         line.set_xy2(line_bulltarget, x=bar_index, y=bulltarget)
//     line.set_x2(line_bulltarget, x=bar_index)

// //bear setup on chart
// if sema < lema and xemabear < 50
//     var line line_bearentry = line.new(bar_index, na, bar_index, na, color=color.rgb(0, 200, 0), style=line.style_solid, width=1)
//     if emabear
//         line.set_xy1(line_bearentry, x=bar_index, y=bearentryh)
//         line.set_xy2(line_bearentry, x=bar_index, y=bearentryh)
//         alert("EMA-bearish", alert.freq_once_per_bar_close)
//     line.set_x2(line_bearentry, x=bar_index)
//     var line line_bearstop = line.new(bar_index, na, bar_index, na, color=color.rgb(250, 0, 0), style=line.style_solid, width=1)
//     if emabear
//         line.set_xy1(line_bearstop, x=bar_index, y=bearstop)
//         line.set_xy2(line_bearstop, x=bar_index, y=bearstop)
//     line.set_x2(line_bearstop, x=bar_index)
//     var line line_beartarget = line.new(bar_index, na, bar_index, na, color=color.rgb(200, 100, 200), style=line.style_solid, width=1)
//     if emabear
//         line.set_xy1(line_beartarget, x=bar_index, y=beartarget)
//         line.set_xy2(line_beartarget, x=bar_index, y=beartarget)
//     line.set_x2(line_beartarget, x=bar_index)

//#endregion
//execution 
if idealbuy
    strategy.close("sell", comment=na)	
    strategy.entry("buy", strategy.long, limit=bullentryh, stop=bullstop, comment="buy")
strategy.exit("exit","buy", trail_points = low, trail_offset = 5, qty_percent=100, limit=bulltarget, stop=bullstop)

if idealsell
	strategy.close("buy",comment=na)
    strategy.entry("sell", strategy.short, limit=bearentryh, stop=bearstop, comment="sell")
strategy.exit("exit","sell", trail_points = low, trail_offset = 5, qty_percent=100, limit=beartarget, stop=bearstop)
// strategy.close_all(time == close_day) 
//#region // graphical analysis
//Plots
plotshape(emabull, location=location.belowbar, title='emabull')
plotshape(idealbuy, style=shape.circle, color=color.green, title="bull close")
plotshape(emabear, title='emabear')
plotshape(idealsell, location=location.belowbar, style=shape.circle, color=color.red, title="bear close")

// //Dashboard
// var label id = na
// label.delete(id)   // Delete last label
// i_offsetLabel = input(15, "Data Dashboard Offset") 
// offset = i_offsetLabel * (time - time[1])
// dynamicText = "= Bull Setup ="
// id := label.new(x=time + offset, y=open, xloc=xloc.bar_time, text=dynamicText, color=color.rgb(255, 255, 255), size=size.normal)
// label.set_textcolor(id, color.rgb(0, 0, 0))
// label.set_text(id=id, text=dynamicText)
// label.set_textalign(id, text.align_left)
// label.set_text(id=id, text=dynamicText)
// f_round( _val, _decimals) => 
//     _p = math.pow(10, _decimals)
//     math.round(math.abs(_val) * _p) / _p * math.sign(_val)
// dynamicText := dynamicText + "\n" + str.tostring(f_round(bulltarget,2)) + "  :Target"
// label.set_text(id=id, text=dynamicText)
// dynamicText := dynamicText + "\n" + str.tostring(f_round(bullentryh,2)) + "  :Entry"
// label.set_text(id=id, text=dynamicText)
// dynamicText := dynamicText + "\n" + str.tostring(f_round(bullstop,2)) + "  :Stop"
// label.set_text(id=id, text=dynamicText)
// dynamicText := dynamicText + "\n"
// label.set_text(id=id, text=dynamicText)
// dynamicText := dynamicText + "\n" + "= Bear Setup ="
// label.set_text(id=id, text=dynamicText)
// dynamicText := dynamicText + "\n" + str.tostring(f_round(bearstop,2)) + "  :Stop"
// label.set_text(id=id, text=dynamicText)
// dynamicText := dynamicText + "\n" + str.tostring(f_round(bearentryh,2)) + "  :Entry"
// label.set_text(id=id, text=dynamicText)
// dynamicText := dynamicText + "\n" + str.tostring(f_round(beartarget,2)) + "  :Target"
// label.set_text(id=id, text=dynamicText)
// //#endregion

مزید