
یہ حکمت عملی بنیادی طور پر ایک سے زیادہ ٹائم فریم (ایم ٹی ایف) کے ایم اے لائن کراسنگ کا استعمال کرتی ہے تاکہ رجحان کی سمت کا تعین کیا جاسکے ، اور مخصوص شرائط فلٹرنگ سگنل کے ساتھ مل کر ، جب رجحان کی سمت واضح ہو تو زیادہ خریدنے یا کم کرنے کا انتخاب کریں ، جو رجحان سے باخبر رہنے کی قسم کی حکمت عملی ہے۔
صارف کی اپنی مرضی کے مطابق ریٹرننگ ٹائم رینج درج کریں۔
ان پٹ یا ہیکن-اشی نقشہ جو یین اور نینو کی ترکیب کا استعمال کرتا ہے ، پہلے سے طے شدہ استعمال کریں۔
آہستہ ایم اے لائن ، فاسٹ ایم اے لائن ، اور اختیاری تیسری لائن کو ترتیب سے طے کریں ایم اے لائن جو ہلچل کے دوران استعمال ہوتی ہے۔
ہر MA لائن کے لئے اپنی مرضی کے مطابق MA قسم ، وقت کی مدت اور پیرامیٹرز وغیرہ۔
تیز رفتار ایم اے کے اوپر سست رفتار ایم اے کے ذریعے خریدنے کا اشارہ اور نیچے کے ذریعے فروخت کرنے کا اشارہ ہوتا ہے۔
تیسری ایم اے لائن کو ایک کثیر جہتی فلٹر کے طور پر استعمال کرنے کا اختیار ہے ، صرف اس وقت خریدنے کا اشارہ ہوتا ہے جب اختتامی قیمت تیسری ایم اے سے زیادہ ہو۔
اسٹریٹجی.انٹری ماڈیول کا استعمال کرتے ہوئے خود کار طریقے سے تجارت کریں۔
آپ اپنی مرضی کے مطابق یا مقررہ رقم کے ساتھ تجارت کر سکتے ہیں.
ایم ٹی ایف فن تعمیر کا استعمال کرتے ہوئے ، مختلف ایم اے لائنوں کو مختلف ادوار کے ساتھ استعمال کیا جاسکتا ہے ، جس سے متعدد ٹائم اسکیل پر رجحان کی خصوصیات کی نشاندہی کی جاسکتی ہے۔
اپنی مرضی کے مطابق ایم اے کی قسم ، آپ کو مستحکم بنانے کے لئے ہموار قسم کے ایم اے کا انتخاب کرنا ہوگا ، یا آپ کو تیز رفتار ایم اے کا انتخاب کرنا ہوگا۔
ہیکن-اشی کے ساتھ مل کر جعلی ٹوٹ پھوٹ کو فلٹر کیا جاسکتا ہے۔
اضافی طور پر ایک تیسری ایم اے لائن کو ملٹی ہیڈ ڈائریکٹر فلٹر کے طور پر شامل کیا جاسکتا ہے ، تاکہ ہلچل سے بچنے کے لئے۔
مختلف مارکیٹ کے حالات کے مطابق ایم اے سائیکل پیرامیٹرز کو لچکدار طریقے سے ایڈجسٹ کریں۔
اسٹریٹجی.انٹری ماڈیول کا استعمال کرتے ہوئے ، آپ کو دستی مداخلت کے بغیر خود کار طریقے سے آرڈر دینے کی ضرورت ہے۔
بہترین پیرامیٹرز کا مجموعہ تلاش کرنے کے لئے پیرامیٹرز کو بہتر بنانے کی حمایت کرتا ہے.
ایم اے کراسنگ حکمت عملیوں میں جعلی سگنلوں کو توڑنے کا خطرہ ہوتا ہے ، جس سے غیر ضروری تجارت ہوسکتی ہے۔ اس خطرے کو کم کرنے کے لئے ایم اے کے دورانیے کو مناسب طریقے سے ایڈجسٹ کیا جاسکتا ہے یا فلٹرنگ کے حالات میں اضافہ کیا جاسکتا ہے۔
زلزلے کے حالات میں ، ایم اے لائنیں اکثر کراس ہوتی ہیں ، جس سے نقصان کا خطرہ ہوتا ہے۔ اس خطرے کو کم کرنے کے لئے ایم اے کے وقفے کو مناسب طریقے سے وسیع کیا جاسکتا ہے یا ایم اے کے دورانیے میں توسیع کی جاسکتی ہے۔
فکسڈ ٹریڈنگ حجم خطرے پر قابو نہیں رکھ سکتا۔ اکاؤنٹ فنڈ کے فیصد کے طور پر ٹریڈنگ حجم کو ترتیب دینے پر غور کیا جاسکتا ہے۔
ٹریڈنگ فیس اور سلائڈ پوائنٹس بھی حکمت عملی کی منافع بخش کارکردگی کو متاثر کرتی ہیں۔ آپ پیرامیٹرز کو مناسب طریقے سے ایڈجسٹ کرسکتے ہیں تاکہ یہ یقینی بنایا جاسکے کہ جیت کی شرح کافی زیادہ ہے۔
مختلف قسم کے ایم اے کی جانچ کریں ، بہترین پیرامیٹرز کا مجموعہ تلاش کریں۔ ہموار ایم اے استحکام کو بہتر بناتا ہے ، تیز ایم اے چستی کو بہتر بناتا ہے۔
ایم اے کے پیرامیٹرز کو بہتر بنائیں ، مناسب لمبی مدت رجحانات کی شناخت کے لئے موزوں ہے ، اور مختصر مدت حساسیت کو بڑھا سکتی ہے۔ بہترین توازن کی تلاش کریں۔
پوزیشن کھولنے کے حالات کو بہتر بنانے کے لئے ، کثیر سر فلٹرنگ کو بڑھانے پر غور کیا جاسکتا ہے ، اور ہلکے بازار میں پوزیشن کھولنے سے گریز کیا جاسکتا ہے۔
MA سائیکل پیرامیٹرز کو کسی خاص قسم کے لئے بہتر بنایا جاسکتا ہے ، تاکہ اس قسم کے لئے سب سے زیادہ مناسب پیرامیٹرز تلاش کیے جاسکیں۔
حکمت عملی کی استحکام کو بہتر بنانے کے لئے فلٹرز کے طور پر دوسرے اشارے کے ساتھ مل کر غور کیا جاسکتا ہے ، جیسے کہ حجم توانائی اشارے وغیرہ۔
ریٹرننگ کے اعداد و شمار کے لئے پیرامیٹرز کے مجموعے کو بہتر بنائیں ، حکمت عملی کے اثر کو بہتر بنانے کے لئے بہترین پیرامیٹرز تلاش کریں۔
ملٹی ٹائم فریم ایم اے کراسنگ حکمت عملی مجموعی طور پر زیادہ عام رجحان کی پیروی کرنے والی حکمت عملی میں سے ایک ہے۔ اس کی خوبی یہ ہے کہ یہ آسان ہے ، پیرامیٹرز کو ایڈجسٹ کرنے میں لچکدار ہے ، اور مختلف مارکیٹ کے حالات کے مطابق ڈھال سکتا ہے۔ تاہم ، اس میں کچھ غلط سگنل کا خطرہ بھی موجود ہے۔ پیرامیٹرز کی اصلاح اور معاون فلٹرنگ شرائط کے اضافے کے ذریعہ اس میں بہتری لائی جاسکتی ہے ، جس میں بیک اپ میں بہترین پیرامیٹرز کا مجموعہ تلاش کیا جاسکتا ہے۔ یہ حکمت عملی واضح رجحان والے بازاروں کے لئے زیادہ موزوں ہے ، اور ہنگامہ خیز حالات میں اس کا محتاط استعمال کیا جانا چاہئے یا تجارت کو روکنا چاہئے۔ مجموعی طور پر ، ایک زیادہ روایتی رجحان کی پیروی کرنے والی حکمت عملی کی حیثیت سے ، ملٹی ٹائم فریم ایم اے کراسنگ حکمت عملی ابھی بھی خصوصی مطالعہ اور اطلاق کے قابل ہے۔
/*backtest
start: 2023-11-08 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(shorttitle="MZ MA Cross",title="MA MTF Cross Strategy", overlay=true, calc_on_order_fills=false, calc_on_every_tick=false, default_qty_type=strategy.fixed, default_qty_value=5,commission_value=0.1)
timeFrameticker = input('D',type=input.resolution, title="Chart Timeframe")
uha =input(true, title="Use Heikin Ashi Candles")
// Use only Heikinashi Candles for all calculations
haclose = uha ? security(heikinashi(syminfo.tickerid), timeFrameticker, close) : security(syminfo.tickerid, timeFrameticker, close)
haopen = uha ? security(heikinashi(syminfo.tickerid), timeFrameticker, open) : security(syminfo.tickerid, timeFrameticker, open)
hahigh = uha ? security(heikinashi(syminfo.tickerid), timeFrameticker, high) : security(syminfo.tickerid, timeFrameticker, high)
halow = uha ?security(heikinashi(syminfo.tickerid), timeFrameticker, low) : security(syminfo.tickerid, timeFrameticker, low)
//Backtest dates
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12)
fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31)
fromYear = input(defval = 2021, title = "From Year", type = input.integer, minval = 1970)
thruMonth = input(defval = 12, title = "Thru Month", type = input.integer, minval = 1, maxval = 12)
thruDay = input(defval = 30, title = "Thru Day", type = input.integer, minval = 1, maxval = 31)
thruYear = input(defval = 2021, title = "Thru Year", type = input.integer, minval = 1970)
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => true
src = security(heikinashi(syminfo.tickerid), timeFrameticker, close)
// INPUT MA TYPE
slowMAtype = input(title="Slow MA Type", type=input.string, defval="LRC", options=["SMA","EMA","DEMA","TEMA","LRC","WMA","MF","VAMA","TMA","HMA", "JMA", "Kijun v2", "EDSMA","McGinley"])
fastMAtype = input(title="Fast MA Type", type=input.string, defval="EDSMA", options=["SMA","EMA","DEMA","TEMA","LRC","WMA","MF","VAMA","TMA","HMA", "JMA", "Kijun v2", "EDSMA","McGinley"])
upMAcond =input(false, title="Use Uptrend Conditional 3rd MA for Confirmation")
upMAtype=input(title="Uptrend Conditional MA Type", type=input.string, defval="HMA", options=["SMA","EMA","DEMA","TEMA","LRC","WMA","MF","VAMA","TMA","HMA", "JMA", "Kijun v2", "EDSMA","McGinley"])
// INPUT RESOLUTION
slowMAresolution = input("D",type=input.resolution, title="Slow MA Resolution")
fastMAresolution = input("D",type=input.resolution, title="Fast MA Resolution")
upMAresolution = input("D",type=input.resolution, title="Uptrend Conditional MA Resolution")
haMAslow = uha ? security(heikinashi(syminfo.tickerid), slowMAresolution, close) : security(syminfo.tickerid, slowMAresolution, close)
haMAfast = uha ?security(heikinashi(syminfo.tickerid), fastMAresolution, close) : security(syminfo.tickerid, fastMAresolution, close)
haMAup = uha ?security(heikinashi(syminfo.tickerid), upMAresolution, close) : security(syminfo.tickerid, upMAresolution, close)
// INPUT LENGTHS
slowMAlength = input(50, minval=1, title="Slow MA Length")
fastMAlength = input(30, minval=1, title="Fast MA Length")
upMAlength = input(200, minval=1, title="Uptrend Conditional MA Length")
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
///// MA Function //////
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
// Pre-reqs
//
tema(src, len) =>
ema1 = ema(src, len)
ema2 = ema(ema1, len)
ema3 = ema(ema2, len)
(3 * ema1) - (3 * ema2) + ema3
kidiv = input(defval=1,maxval=4, title="Kijun MOD Divider")
jurik_phase = input(title="* Jurik (JMA) Only - Phase", type=input.integer, defval=3)
jurik_power = input(title="* Jurik (JMA) Only - Power", type=input.integer, defval=1)
volatility_lookback = input(10, title="* Volatility Adjusted (VAMA) Only - Volatility lookback length")
// MF
beta = input(0.8,minval=0,maxval=1,step=0.1, title="Modular Filter, General Filter Only - Beta")
feedback = input(false, title="Modular Filter Only - Feedback")
z = input(0.5,title="Modular Filter Only - Feedback Weighting",step=0.1, minval=0, maxval=1)
//EDSMA
ssfLength = input(title="EDSMA - Super Smoother Filter Length", type=input.integer, minval=1, defval=20)
ssfPoles = input(title="EDSMA - Super Smoother Filter Poles", type=input.integer, defval=2, options=[2, 3])
//----
// EDSMA
get2PoleSSF(src, length) =>
PI = 2 * asin(1)
arg = sqrt(2) * PI / length
a1 = exp(-arg)
b1 = 2 * a1 * cos(arg)
c2 = b1
c3 = -pow(a1, 2)
c1 = 1 - c2 - c3
ssf = 0.0
ssf := c1 * src + c2 * nz(ssf[1]) + c3 * nz(ssf[2])
get3PoleSSF(src, length) =>
PI = 2 * asin(1)
arg = PI / length
a1 = exp(-arg)
b1 = 2 * a1 * cos(1.738 * arg)
c1 = pow(a1, 2)
coef2 = b1 + c1
coef3 = -(c1 + b1 * c1)
coef4 = pow(c1, 2)
coef1 = 1 - coef2 - coef3 - coef4
ssf = 0.0
ssf := coef1 * src + coef2 * nz(ssf[1]) + coef3 * nz(ssf[2]) + coef4 * nz(ssf[3])
// MA Main function
ma(type, src, len) =>
float result = 0
if type=="TMA"
result := sma(sma(src, ceil(len / 2)), floor(len / 2) + 1)
if type=="MF"
ts=0.,b=0.,c=0.,os=0.
//----
alpha = 2/(len+1)
a = feedback ? z*src + (1-z)*nz(ts[1],src) : src
//----
b := a > alpha*a+(1-alpha)*nz(b[1],a) ? a : alpha*a+(1-alpha)*nz(b[1],a)
c := a < alpha*a+(1-alpha)*nz(c[1],a) ? a : alpha*a+(1-alpha)*nz(c[1],a)
os := a == b ? 1 : a == c ? 0 : os[1]
//----
upper = beta*b+(1-beta)*c
lower = beta*c+(1-beta)*b
ts := os*upper+(1-os)*lower
result := ts
if type=="LRC"
result := linreg(src, len, 0)
if type=="SMA" // Simple
result := sma(src, len)
if type=="EMA" // Exponential
result := ema(src, len)
if type=="DEMA" // Double Exponential
e = ema(src, len)
result := 2 * e - ema(e, len)
if type=="TEMA" // Triple Exponential
e = ema(src, len)
result := 3 * (e - ema(e, len)) + ema(ema(e, len), len)
if type=="WMA" // Weighted
result := wma(src, len)
if type=="VAMA" // Volatility Adjusted
/// Copyright © 2019 to present, Joris Duyck (JD)
mid=ema(src,len)
dev=src-mid
vol_up=highest(dev,volatility_lookback)
vol_down=lowest(dev,volatility_lookback)
result := mid+avg(vol_up,vol_down)
if type=="HMA" // Hull
result := wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len)))
if type=="JMA" // Jurik
/// Copyright © 2018 Alex Orekhov (everget)
/// Copyright © 2017 Jurik Research and Consulting.
phaseRatio = jurik_phase < -100 ? 0.5 : jurik_phase > 100 ? 2.5 : jurik_phase / 100 + 1.5
beta = 0.45 * (len - 1) / (0.45 * (len - 1) + 2)
alpha = pow(beta, jurik_power)
jma = 0.0
e0 = 0.0
e0 := (1 - alpha) * src + alpha * nz(e0[1])
e1 = 0.0
e1 := (src - e0) * (1 - beta) + beta * nz(e1[1])
e2 = 0.0
e2 := (e0 + phaseRatio * e1 - nz(jma[1])) * pow(1 - alpha, 2) + pow(alpha, 2) * nz(e2[1])
jma := e2 + nz(jma[1])
result := jma
if type=="Kijun v2"
kijun = avg(lowest(len), highest(len))//, (open + close)/2)
conversionLine = avg(lowest(len/kidiv), highest(len/kidiv))
delta = (kijun + conversionLine)/2
result :=delta
if type=="McGinley"
mg = 0.0
mg := na(mg[1]) ? ema(src, len) : mg[1] + (src - mg[1]) / (len * pow(src/mg[1], 4))
result :=mg
if type=="EDSMA"
zeros = src - nz(src[2])
avgZeros = (zeros + zeros[1]) / 2
// Ehlers Super Smoother Filter
ssf = ssfPoles == 2
? get2PoleSSF(avgZeros, ssfLength)
: get3PoleSSF(avgZeros, ssfLength)
// Rescale filter in terms of Standard Deviations
stdev = stdev(ssf, len)
scaledFilter = stdev != 0
? ssf / stdev
: 0
alpha = 5 * abs(scaledFilter) / len
edsma = 0.0
edsma := alpha * src + (1 - alpha) * nz(edsma[1])
result := edsma
result
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
// MA DEFINITION
slowMA = ma(slowMAtype, haMAslow , slowMAlength)
//fastMA = ma(fastMAtype, slowMA , fastMAlength)
fastMA = ma(fastMAtype, haMAfast , fastMAlength)
upMA = ma(upMAtype, haMAup , upMAlength)
closeMA = ma('SMA', src , 2)
// Strategy Conditions
L1 = crossover(fastMA,slowMA)
L2 = close > upMA
S1 = crossunder(fastMA,slowMA)
S2 = close < upMA
longcondition = upMAcond ? L1 and L2 : L1
shortcondition = upMAcond ? S1 or S2 : S1
// Plots
color_fill_uptrend = color.new(#4caf50, 80)
color_fill_downtrend = color.new(#c2185b, 80)
plot(slowMA, title='Slow MA', color=color.olive, linewidth=2)
plot(fastMA, title='Fast MA', color=color.teal, linewidth=2)
cls=plot(closeMA, title='Source Line', color=na, linewidth=1)
up = plot(upMA, title='Uptrend Conditional MA', color=color.purple, linewidth=2)
fill(up,cls, color = close > upMA ? color_fill_uptrend : color_fill_downtrend )
//plotshape(longcondition, style = shape.triangleup, color = color.green, location = location.belowbar, text = "Long", size = size.small)
//plotshape(shortcondition, style = shape.triangledown, color = color.red, location = location.abovebar, text = "Short", size = size.small)
strategy.entry(id="long", long = true, when = longcondition and window())
strategy.close("long", when = shortcondition and window())
//if (longcondition)
// strategy.entry("BUY", strategy.long, when = window())
//if (shortcondition)
// strategy.entry("SELL", strategy.short, when = window())