یہ حکمت عملی 21 دن اور 55 دن کی حرکت پذیر اوسط کے کراس اوور پر مبنی تجارتی سگنل تیار کرتی ہے ، اور جھوٹے سگنل کو فلٹر کرنے کے لئے سپر ٹرینڈ اشارے کا استعمال کرتی ہے۔ یہ ایک رجحان کی پیروی کرنے والی حکمت عملی ہے۔
یہ کوڈ سب سے پہلے 21 دن کے ای ایم اے (ای ایم اے 1) اور 55 دن کے ای ایم اے (ای ایم اے 2) کی وضاحت کرتا ہے۔ جب ای ایم اے 1 ای ایم اے 2 سے اوپر عبور کرتا ہے تو خرید کا اشارہ پیدا ہوتا ہے۔ جب ای ایم اے 1 ای ایم اے 2 سے نیچے عبور کرتا ہے تو فروخت کا اشارہ پیدا ہوتا ہے۔
غلط سگنلز کو فلٹر کرنے کے لئے ، سپر ٹرینڈ اشارے کو شامل کیا جاتا ہے۔ سپر ٹرینڈ اے ٹی آر اور حالیہ اعلی کم قیمتوں کی بنیاد پر رجحان کی سمت کا حساب لگاتا ہے۔ کوڈ میں ، سپر ٹرینڈ لائن کے اوپر اپ ٹرینڈ ہے اور اس کے نیچے ڈاؤن ٹرینڈ ہے۔
لہذا خریدنے کا اشارہ صرف اس وقت پیدا ہوتا ہے جب ایک اپ ٹرینڈ کے دوران ای ایم اے 1 ای ایم اے 2 کے اوپر عبور کرتا ہے۔ فروخت کا اشارہ صرف اس وقت پیدا ہوتا ہے جب ای ایم اے 1 ڈاؤن ٹرینڈ کے دوران ای ایم اے 2 کے نیچے عبور کرتا ہے۔ سپر ٹرینڈ ٹرینڈ ٹرانزیشن کے دوران جھوٹے سگنل کو فلٹر کرتا ہے۔
اس کے علاوہ ، طویل مدتی رجحان کا تعین کرنے کے لئے 200 دن اور 233 دن کی حرکت پذیر اوسط شامل کی جاتی ہے۔ سگنل صرف اس وقت پیدا ہوتے ہیں جب طویل مدتی اور قلیل مدتی رجحانات سیدھے ہوجاتے ہیں۔
دوہری چلتی اوسطوں کے ساتھ مل کر سپر ٹرینڈ مؤثر طریقے سے رجحانات کی نشاندہی اور غلط سگنل فلٹر کر سکتے ہیں.
قابل ایڈجسٹ حرکت پذیر اوسط پیرامیٹرز مختلف مارکیٹ کے حالات کے مطابق حکمت عملی کو اپنانے کے قابل ہیں.
طویل مدتی حرکت پذیر اوسط متضاد رجحانات سے خطرات کو روکتے ہیں۔
الگورتھمک ٹریڈنگ کے لئے آسان واضح قوانین.
بصری خرید/فروخت کے سگنل تجارتی فیصلوں کو واضح بناتے ہیں۔
چلتی اوسطوں میں موڑ کے مقامات کے ارد گرد غلط سگنل پیدا ہوسکتے ہیں۔ ممکنہ موڑ کی نشاندہی کرنے کی ضرورت ہے۔
پیرامیٹرز کی نامناسب ترتیبات کے نتیجے میں رجحانات کو نظرانداز کیا جاسکتا ہے یا بہت زیادہ غلط سگنل۔ پیرامیٹرز کو مختلف منڈیوں کے لئے ایڈجسٹ کرنے کی ضرورت ہے۔
تجارت کی اعلی تعدد سے لین دین کے اخراجات میں اضافہ ہوتا ہے۔ اخراجات کی نگرانی کی ضرورت ہے۔
سپر ٹرینڈ پیرامیٹرز کو فلٹرنگ کی تاثیر اور تاخیر کو متوازن کرنے کے لئے بہتر بنانے کی ضرورت ہے۔
طویل مدتی اوسط سگنل پیدا کرنے میں تاخیر کا شکار ہوسکتے ہیں۔ ٹرینڈ کی تبدیلیوں کا وقت اہم ہے۔
زیادہ سے زیادہ پیرامیٹرز تلاش کرنے کے لئے مختلف چلتی اوسط مجموعے کی جانچ کریں.
فلٹرنگ اور تاخیر کو متوازن کرنے کے لئے سپر رجحان پیرامیٹرز کو بہتر بنائیں.
سگنل کی مزید توثیق کے لئے حجم جیسے دیگر اشارے شامل کریں.
ممکنہ موڑ کے مقامات کی نشاندہی کرنے کے لئے جذبات اور خبروں کا تجزیہ شامل کریں۔
پیرامیٹرز کو متحرک طور پر بہتر بنانے کے لیے مشین لرننگ کا استعمال کریں۔
یہ حکمت عملی رجحانات کی نشاندہی کرنے اور جھوٹے سگنلز کو فلٹر کرنے میں دوہری چلتی اوسط اور سپر ٹرینڈ کی طاقتوں کو یکجا کرتی ہے۔ پیرامیٹر کی اصلاح اور اضافی توثیق کے ذریعے اسے مستقل طور پر بہتر بنایا جاسکتا ہے۔ کچھ خطرات کے باوجود ، ان کا انتظام رسک کنٹرول تکنیکوں کے ذریعے کیا جاسکتا ہے۔ یہ حکمت عملی الگورتھمک ٹریڈنگ کے لئے موزوں ہے۔
/*backtest start: 2022-09-21 00:00:00 end: 2023-09-27 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"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/ // © bhavikmota //@version=4 strategy("EMA & Supertrend", overlay = true) //length = input(9, minval=1) //ema1 = ema(close, length) //ema2 = ema(ema1, length) //ema3 = ema(ema2, length) //shortest = ema(close, 20) //short = ema(close, 50) //longer = ema(close, 100) //longest = ema(close, 200) //for Ema1 len1 = input(21, minval=1) //src1 = input(close) ema1 = ema(close,len1) plot(ema1, color=color.red, linewidth=1) //for Ema2 len2 = input(55, minval=1) //src2 = input(close) ema2 = ema(close,len2) plot(ema2, color=color.green, linewidth=1) //for Ema3 len3 = input(200, minval=1) //src3 = input(close) ema3 = ema(close,len3) plot(ema3, color=color.blue, linewidth=1) //for Ema4 len4 = input(233, minval=1) //src4 = input(close) ema4 = ema(close,len4) plot(ema4, color=color.black, linewidth=1) Periods = input(title="ATR Period", type=input.integer, defval=10) src = input(hl2, title="Source") Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0) changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true) showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true) highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true) atr2 = sma(tr, Periods) atr= changeATR ? atr(Periods) : atr2 up=src-(Multiplier*atr) up1 = nz(up[1],up) up := close[1] > up1 ? max(up,up1) : up dn=src+(Multiplier*atr) dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green) buySignal = trend == 1 and trend[1] == -1 plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0) plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0) dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red) sellSignal = trend == -1 and trend[1] == 1 plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0) plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0) mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0) longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor) fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor) alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!") alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!") changeCond = trend != trend[1] alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!") //Trading logic Enterlong = crossover(ema1,ema2) or (close>ema1 and close>ema2 and ema1>ema2) and close>ema4// positive ema crossover Exitlong = crossunder(close,ema2) // candle closes below supertrend Entershort = crossunder(ema1,ema2) or (close<ema1 and close<ema2 and ema2<ema1) and close<ema4// negative ema crossover Exitshort = crossover(close,ema2) // candle closes above supertrend //Execution Logic - Placing Order start = timestamp(2008,1,1,0,0) if time>= start strategy.entry("long", strategy.long, when=Enterlong) strategy.close("long",when=Exitlong) //strategy.entry("short",strategy.short,100,when=Entershort) //strategy.close("short",when=Exitshort)