یہ حکمت عملی 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