
اس حکمت عملی میں ایس ایم اے ، ای ایم اے ، اور کاما جیسی متعدد متحرک اوسط کا استعمال کرتے ہوئے ، قیمت کے رجحان کی سمت کی نشاندہی کی گئی ہے ، اور قیمتوں میں توڑ کی بنیاد پر اسٹاپ لائن کی ترتیب دی گئی ہے۔ ایک ٹریلنگ ٹرینڈ چلانے کی حکمت عملی ڈیزائن کریں۔ جب قیمت بڑھتی ہے تو ، trails the upper band بطور اسٹاپ ؛ جب قیمت گرتی ہے تو ، trails the نیچے کی حد بطور اسٹاپ۔ حکمت عملی کا فائدہ متعدد متحرک اوسط کا مجموعہ ہے ، جس سے قیمت کے اعداد و شمار کو ہموار کیا جاسکتا ہے ، رجحانات کی شناخت کی جاسکتی ہے۔ متحرک اسٹاپ ڈیزائن سے بچنے کے لئے بہت زیادہ حساس اسٹاپ۔ حکمت عملی کا خطرہ یہ ہے کہ اسٹاپ لائن کی ترتیب بہت زیادہ نرمی ہوسکتی ہے ، اور وقت پر اسٹاپ نہیں ہوسکتی ہے۔
اس حکمت عملی میں KAMA کو رجحان کی سمت کا تعین کرنے کے لئے بنیادی اشارے کے طور پر استعمال کیا جاتا ہے کیونکہ KAMA قیمت کی تبدیلیوں کے جواب میں زیادہ حساس ہے ، اور اس کے نتیجے میں تبدیلیوں کی ابتدائی شناخت کی جاسکتی ہے۔ اس کے علاوہ ، اس حکمت عملی میں SMA ، EMA اور دیگر متعدد قسم کی چلتی اوسط کا مجموعہ بھی شامل ہے ، جس سے قیمتوں پر فلٹر کیا جاسکتا ہے ، تاکہ اہم رجحان کی سمت کی نشاندہی کی جاسکے۔
حکمت عملی کی روک تھام کی لائن کی ترتیب قیمت پر مبنی ہوتی ہے اور اس کی حرکت پذیری اوسط ہوتی ہے۔ خاص طور پر ، اوپر کی طرف جانے والی روک تھام کی لائن کو منتقل کرنے والی اوسط کے لئے ایک تناسب کے طور پر اضافی طور پر شامل کیا جاتا ہے۔ نیچے کی طرف جانے والی روک تھام کی لائن کو منتقل کرنے والی اوسط کے لئے ایک تناسب کو کم کرنے کے طور پر کم کیا جاتا ہے۔ اس طرح قیمتوں میں ردوبدل ہونے پر فوری طور پر روک تھام کی جاسکتی ہے۔
داخل ہونے کی شرائط یہ ہیں کہ جب قیمت نیچے سے اوپر کی طرف سے اوپری لائن اسٹاپ نقصان کی لائن کو توڑتی ہے تو زیادہ بنائیں۔ جب قیمت اوپر سے نیچے کی طرف سے نیچے کی طرف سے اوپری لائن اسٹاپ نقصان کی لائن کو توڑتی ہے تو خالی کریں۔
اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ متعدد متحرک اوسط کے امتزاج کے ذریعہ ، رجحانات کے فیصلے کی درستگی کو بہتر بنایا جاسکتا ہے ، اور جھوٹے اشاروں کو کم کیا جاسکتا ہے۔ اس کے علاوہ ، حکمت عملی کی روک تھام کی لائن متحرک اوسط کی متحرک تبدیلیوں پر مبنی ہے ، جو حقیقی وقت کی قیمتوں کے مطابق ایڈجسٹ ہوسکتی ہے ، اور اچانک واقعات کے جواب میں ہے۔
اس کے علاوہ ، یہ حکمت عملی ایک ہی اشارے کی حکمت عملی کے مقابلے میں رجحانات کی پیروی اور توڑنے کی حکمت عملی کے فوائد کو یکجا کرتی ہے۔ رجحانات کے دوران ، زیادہ سے زیادہ منافع حاصل کیا جاسکتا ہے ، جبکہ ہنگامہ خیز حالات میں ، نقصان کو روکنے کے ذریعہ نقصان کو کم کیا جاسکتا ہے۔
اس حکمت عملی کا بنیادی خطرہ یہ ہے کہ اسٹاپ لائن کی ترتیب بہت زیادہ نرمی کا شکار ہوسکتی ہے اور وقت پر اسٹاپ نہیں ہوسکتی ہے۔ اس کی وجہ یہ ہے کہ اسٹاپ لائن کی واپسی کا تناسب فکسڈ سیٹ ہے ، اور اگر حالات میں شدید تبدیلی آتی ہے تو ، اسٹاپ لائن کو وقت پر اپ ڈیٹ کرنے میں ناکامی سے زیادہ نقصان ہوسکتا ہے۔
اس کے علاوہ ، حرکت پذیر اوسط خود بہت دیرپا ہے اور قیمت کی تبدیلیوں پر فوری رد عمل ظاہر نہیں کرسکتا ہے۔ اس سے مارکیٹ میں تیزی سے الٹ جانے پر نقصان کو روکنے کے قابل نہیں ہوسکتا ہے۔
اس حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:
مختلف پیرامیٹرز کی ترتیبات کے تحت اسٹاپ لائن تناسب کی جانچ کرنا ، بہتر پیرامیٹرز کا مجموعہ تلاش کرنا؛
اسٹاپ نقصان کی لائن کو متحرک تبدیلی کے طور پر ترتیب دینے کی کوشش کریں ، جس میں مارکیٹ میں اتار چڑھاؤ کی حد کے مطابق ایڈجسٹمنٹ کی جائے۔
دیگر پیمائش کے فیصلوں کو شامل کرنا ، مزید متغیرات کو روکنے کی بنیاد پر متعارف کرانا ، اور حکمت عملی کی موافقت کو بہتر بنانا؛
4۔ بہترین ہموار قیمتوں کے لئے موزوں سائیکل سیٹنگ تلاش کرنے کے لئے موزوں اوسط کی سائیکل پیرامیٹرز کو بہتر بنائیں۔
یہ حکمت عملی مجموعی طور پر کافی مستحکم ہے ، متعدد متحرک اوسط کے امتزاج کے ذریعہ رجحان کی سمت کا فیصلہ کرتی ہے ، اور رجحان کو چلانے کے لئے متحرک ٹریکنگ اسٹاپ میکانیزم تیار کرتی ہے۔ اس کی خوبی یہ ہے کہ غلط سگنل کو کم کیا جاسکتا ہے ، اور اسٹاپ نقصان کو کنٹرول کرکے خطرہ کو کم کیا جاسکتا ہے۔ نقصان یہ ہے کہ اسٹاپ لائن بہت وسیع ہوسکتی ہے ، اور فوری طور پر اسٹاپ نقصان کو روک نہیں سکتی ہے۔ اگلی اصلاحی حکمت عملی کو اسٹاپ لائن ڈیزائن پر کام کرنا چاہئے ، تاکہ مارکیٹ میں ہونے والی تبدیلیوں کے مطابق متحرک طور پر ایڈجسٹ کیا جاسکے۔
/*backtest
start: 2023-02-22 00:00:00
end: 2024-02-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('Atlantean Trend Signal BUY SELL Strategy', overlay=true)
ma_length = input.int(title='Moving Average Length', minval=1, defval=3)
percent = input.float(3.3, 'STOP LOSS Percent', step=0.1, minval=0)
src = input(title='Source', defval=close)
mav = input.string(title="Moving Average Type", defval="KAMA", options=["SMA", "EMA", "WMA", "DEMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF", "HULL", "TILL", "KAMA"])
T3a1 = 0.7
_type = false //input(false, title='Activate Moving Average Screening Mode')
_type1 = false //input(false, title='Activate Moving Average Color Change Screening Mode')
activateScreener = input.bool(false, title="Activate Screener?")
showsignallabels = input(title='Show Signal Labels?', defval=true)
Var_Func(src, ma_length) =>
valpha = 2 / (ma_length + 1)
vud1 = src > src[1] ? src - src[1] : 0
vdd1 = src < src[1] ? src[1] - src : 0
vUD = math.sum(vud1, 9)
vDD = math.sum(vdd1, 9)
vCMO = nz((vUD - vDD) / (vUD + vDD))
VAR = 0.0
VAR := nz(valpha * math.abs(vCMO) * src) + (1 - valpha * math.abs(vCMO)) * nz(VAR[1])
VAR
VAR = Var_Func(src, ma_length)
DEMA = 2 * ta.ema(src, ma_length) - ta.ema(ta.ema(src, ma_length), ma_length)
Wwma_Func(src, ma_length) =>
wwalpha = 1 / ma_length
WWMA = 0.0
WWMA := wwalpha * src + (1 - wwalpha) * nz(WWMA[1])
WWMA
WWMA = Wwma_Func(src, ma_length)
// KAMA Calculation
Kama_Func(src, ma_length) =>
xvnoise = math.abs(src - src[1])
nfastend = 0.666
nslowend = 0.0645
nsignal = math.abs(src - src[ma_length])
nnoise = math.sum(xvnoise, ma_length)
nefratio = nnoise != 0 ? nsignal / nnoise : 0
nsmooth = math.pow(nefratio * (nfastend - nslowend) + nslowend, 2)
nAMA = 0.0
nAMA := nz(nAMA[1]) + nsmooth * (src - nz(nAMA[1]))
nAMA
Zlema_Func(src, ma_length) =>
zxLag = ma_length / 2 == math.round(ma_length / 2) ? ma_length / 2 : (ma_length - 1) / 2
zxEMAData = src + src - src[zxLag]
ZLEMA = ta.ema(zxEMAData, ma_length)
ZLEMA
ZLEMA = Zlema_Func(src, ma_length)
Tsf_Func(src, ma_length) =>
lrc = ta.linreg(src, ma_length, 0)
lrc1 = ta.linreg(src, ma_length, 1)
lrs = lrc - lrc1
TSF = ta.linreg(src, ma_length, 0) + lrs
TSF
TSF = Tsf_Func(src, ma_length)
HMA = ta.wma(2 * ta.wma(src, ma_length / 2) - ta.wma(src, ma_length), math.round(math.sqrt(ma_length)))
T3e1 = ta.ema(src, ma_length)
T3e2 = ta.ema(T3e1, ma_length)
T3e3 = ta.ema(T3e2, ma_length)
T3e4 = ta.ema(T3e3, ma_length)
T3e5 = ta.ema(T3e4, ma_length)
T3e6 = ta.ema(T3e5, ma_length)
T3c1 = -T3a1 * T3a1 * T3a1
T3c2 = 3 * T3a1 * T3a1 + 3 * T3a1 * T3a1 * T3a1
T3c3 = -6 * T3a1 * T3a1 - 3 * T3a1 - 3 * T3a1 * T3a1 * T3a1
T3c4 = 1 + 3 * T3a1 + T3a1 * T3a1 * T3a1 + 3 * T3a1 * T3a1
T3 = T3c1 * T3e6 + T3c2 * T3e5 + T3c3 * T3e4 + T3c4 * T3e3
getMA(src, ma_length) =>
ma = 0.0
ma := switch mav
'SMA' => ta.sma(src, ma_length)
'EMA' => ta.ema(src, ma_length)
'WMA' => ta.wma(src, ma_length)
'DEMA' => DEMA
'TMA' => ta.sma(ta.sma(src, math.ceil(ma_length / 2)), math.floor(ma_length / 2) + 1)
'VAR' => VAR
'WWMA' => WWMA
'ZLEMA' => ZLEMA
'TSF' => TSF
'HULL' => HMA
'TILL' => T3
'KAMA' => Kama_Func(src, ma_length)
ma
ALL = getMA(src, ma_length)
exMov = ALL
fark = exMov * percent * 0.01
longStop = exMov - fark
longStopPrev = nz(longStop[1], longStop)
longStop := exMov > longStopPrev ? math.max(longStop, longStopPrev) : longStop
shortStop = exMov + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := exMov < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop
dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and exMov > shortStopPrev ? 1 : dir == 1 and exMov < longStopPrev ? -1 : dir
MOST = dir == 1 ? longStop : shortStop
cro = _type and _type1 ? ta.crossover(exMov, exMov[1]) : _type ? ta.crossover(close, exMov) : ta.crossover(exMov, MOST)
cru = _type and _type1 ? ta.crossunder(exMov, exMov[1]) : _type ? ta.crossunder(close, exMov) : ta.crossunder(exMov, MOST)
direction = 0
direction := cro ? 1 : cru ? -1 : direction[1]
col1 = exMov > exMov[1]
col3 = exMov < exMov[1]
colorM = col1 and _type and _type1 ? color.rgb(14, 241, 52) : col3 and _type and _type1 ? color.red : color.new(#00bcd4, 0)
if (cro)
strategy.entry('LONG', strategy.long)
if (cru)
strategy.close('LONG')
plot(_type ? na : MOST, color=color.new(color.maroon, 0), linewidth=3, title='MOST')
plot(exMov, color=colorM, linewidth=2, title='exMov')
plotshape(cro and showsignallabels, title='BUY', text='BUY', location=location.belowbar, style=shape.labelup, size=size.tiny, color=color.new(#00bcd4, 0), textcolor=color.new(color.white, 0))
plotshape(cru and showsignallabels, title='SELL', text='SELL', location=location.abovebar, style=shape.labeldown, size=size.tiny, color=color.new(#e91e63, 0), textcolor=color.new(color.white, 0))