یہ حکمت عملی خرید و فروخت کے سگنل پیدا کرنے کے لئے 21 ویں اور 55 ویں دن کی متحرک اوسط لائنوں کے کراس پر مبنی ہے ، جبکہ سپر ٹرینڈ اشارے کے ساتھ مل کر جعلی سگنلوں کو فلٹر کرنے کے لئے ایک رجحان سے باخبر رہنے کی حکمت عملی ہے۔
کوڈ نے پہلے 21 ویں لائن ((EMA1) اور 55 ویں لائن ((EMA2) کی متحرک اوسط لائن کی وضاحت کی۔ جب ای ایم اے 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)