یہ حکمت عملی تجرباتی موڈ ڈیمپریشن (EMD) کے طریقہ کار پر مبنی ہے ، جس میں قیمتوں کی ترتیب کو توڑنا ، مختلف طول موج کی خصوصیات کو نکالنا ، اور تجارت کے سگنل کی پیداوار کے لئے اوسط قیمت کے ساتھ مل کر۔ یہ حکمت عملی بنیادی طور پر درمیانی اور لمبی لائن کی پوزیشنوں کے لئے موزوں ہے۔
اس حکمت عملی میں قیمتوں کے سلسلے میں خصوصیت نکالنے کے لئے تجرباتی ماڈل ٹوٹ پھوٹ کے طریقہ کار کا استعمال کیا گیا ہے ، اور اس خصوصیت کی بنیاد پر ٹریڈنگ سگنل تیار کیا گیا ہے۔ اس حکمت عملی کا فائدہ یہ ہے کہ قیمتوں میں وقتا فوقتا کی خصوصیت کو مؤثر طریقے سے پہچاننے اور بڑے پیمانے پر اتار چڑھاو کے دوران تجارتی ہدایات جاری کرنے کے قابل ہو۔ تاہم ، اس میں کچھ خطرہ بھی ہے ، جس کو زیادہ پیچیدہ مارکیٹ کے ماحول کے مطابق ڈھالنے کے لئے مزید اصلاح کی ضرورت ہے۔
/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 12/04/2017
// The related article is copyrighted material from Stocks & Commodities Mar 2010
// You can use in the xPrice any series: Open, High, Low, Close, HL2, HLC3, OHLC4 and ect...
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Empirical Mode Decomposition")
Length = input(20, minval=1)
Delta = input(0.5)
Fraction = input(0.1)
reverse = input(false, title="Trade reverse")
xPrice = hl2
beta = cos(3.1415 * (360 / Length) / 180)
gamma = 1 / cos(3.1415 * (720 * Delta / Length) / 180)
alpha = gamma - sqrt(gamma * gamma - 1)
xBandpassFilter = 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(xBandpassFilter[1]) - alpha * nz(xBandpassFilter[2])
xMean = sma(xBandpassFilter, 2 * Length)
xPeak = iff (xBandpassFilter[1] > xBandpassFilter and xBandpassFilter[1] > xBandpassFilter[2], xBandpassFilter[1], nz(xPeak[1]))
xValley = iff (xBandpassFilter[1] < xBandpassFilter and xBandpassFilter[1] < xBandpassFilter[2], xBandpassFilter[1], nz(xValley[1]))
xAvrPeak = sma(xPeak, 50)
xAvrValley = sma(xValley, 50)
nAvrPeak = Fraction * xAvrPeak
nAvrValley = Fraction * xAvrValley
pos = iff(xMean > nAvrPeak and xMean > nAvrValley, 1,
iff(xMean < nAvrPeak and xMean < nAvrValley, -1, nz(pos[1], 0)))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos))
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xMean, color=red, title="Mean")
plot(nAvrPeak, color=blue, title="Peak")
plot(nAvrValley, color=blue, title="Valley")