MOST اور KAMA پر مبنی رجحان سواری کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-02-29 11:04:38
ٹیگز:

img

یہ حکمت عملی قیمتوں کی رجحان کی سمت کی نشاندہی کرنے کے لئے ایس ایم اے اور ای ایم اے جیسے متعدد حرکت پذیر اوسطوں کو جوڑتی ہے ، اور قیمت کی پیشرفت کی بنیاد پر اسٹاپ نقصان کی لائنیں طے کرتی ہے تاکہ رجحان کے بعد کی حکمت عملی تیار کی جاسکے۔ جب قیمتیں بڑھتی ہیں تو ، یہ اسٹاپ نقصان کے طور پر اوپری بینڈ کی پیروی کرتی ہے۔ جب قیمتیں گرتی ہیں تو ، یہ اسٹاپ نقصان کے طور پر نچلی حد کی پیروی کرتی ہے۔ اس حکمت عملی کا فائدہ یہ ہے کہ متعدد حرکت پذیر اوسطوں کا امتزاج قیمت کے اعداد و شمار کو ہموار کرسکتا ہے اور رجحانات کی نشاندہی کرسکتا ہے۔ متحرک اسٹاپ نقصان کے ڈیزائن سے زیادہ حساس اسٹاپ سے گریز ہوتا ہے۔ اس حکمت عملی کا خطرہ یہ ہے کہ اسٹاپ نقصان کی لائن کی ترتیب وقت میں نقصان کو روکنے کے لئے بہت لچکدار ہوسکتی ہے۔

حکمت عملی کا اصول

یہ حکمت عملی KAMA کو رجحان کی سمت کا فیصلہ کرنے کی بنیاد کے طور پر استعمال کرتی ہے ، کیونکہ KAMA قیمتوں میں ہونے والی تبدیلیوں کا زیادہ حساس طور پر جواب دیتا ہے اور پہلے سے ہی موڑ کی نشاندہی کرسکتا ہے۔ اسی وقت ، حکمت عملی میں قیمتوں کو فلٹر کرنے اور اہم رجحان کی سمتوں کی نشاندہی کرنے کے لئے دیگر متعدد حرکت پذیر اوسط کے مجموعے شامل ہیں۔

اسٹریٹجی کی اسٹاپ نقصان لائن کی ترتیب قیمت خود اور چلتی اوسط پر مبنی ہے۔ خاص طور پر ، اوپر کی ٹریلنگ اسٹاپ نقصان لائن چلتی اوسط ہے جس میں ایک بفر کے طور پر ایک تناسب شامل ہے۔ نیچے کی ٹریلنگ اسٹاپ نقصان لائن ایک بفر کے طور پر ایک تناسب کے علاوہ چلتی اوسط ہے۔ اس سے قیمتوں میں الٹ پڑنے پر فوری طور پر اسٹاپ نقصان کی اجازت ملتی ہے۔

انٹری کی شرائط لمبی ہوتی ہیں جب قیمتیں نیچے سے اوپر کی طرف سٹاپ نقصان لائن کو توڑتی ہیں؛ مختصر ہوتی ہیں جب قیمتیں اوپر سے نیچے کی طرف سٹاپ نقصان لائن کو توڑتی ہیں۔

فوائد کا تجزیہ

اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ متعدد حرکت پذیر اوسطوں کو جوڑ کر ، رجحان کے فیصلے کی درستگی کو بہتر بنایا جاسکتا ہے اور غلط سگنل کو کم کیا جاسکتا ہے۔ اسی وقت ، حکمت عملی کی اسٹاپ نقصان کی لائن متحرک طور پر حرکت پذیر اوسط کی بنیاد پر بدلتی ہے ، جو حقیقی وقت میں ایڈجسٹ ہوسکتی ہے اور اچانک واقعات کا جواب دے سکتی ہے۔

اس کے علاوہ ، سنگل اشارے کی حکمت عملیوں کے مقابلے میں ، اس حکمت عملی میں رجحان کی پیروی اور پیشرفت کی حکمت عملیوں کے فوائد کو جوڑ دیا گیا ہے۔ رجحان کی مارکیٹ میں ، یہ منافع کو زیادہ سے زیادہ کرسکتا ہے۔ جبکہ ایک وِپسا مارکیٹ میں ، یہ اسٹاپ نقصان کی ترتیبات کے ذریعے نقصانات کو کم کرسکتا ہے۔

خطرے کا تجزیہ

اس حکمت عملی کا بنیادی خطرہ یہ ہے کہ اسٹاپ نقصان لائن کی ترتیب وقت میں نقصان کو روکنے کے لئے بہت لچکدار ہوسکتی ہے۔ اس کی وجہ یہ ہے کہ اسٹاپ نقصان لائن کا ریٹریسیشن تناسب طے شدہ ہے ، اگر مارکیٹ میں پرتشدد تبدیلی واقع ہوتی ہے تو ، اسٹاپ نقصان لائن کو وقت میں اپ ڈیٹ نہیں کیا جاسکتا ہے ، جس سے زیادہ نقصانات ہوسکتے ہیں۔

اس کے علاوہ ، خود حرکت پذیر اوسط میں ہائی ہائسٹریسیس ہے اور وہ قیمتوں میں ہونے والی تبدیلیوں پر فوری رد عمل ظاہر نہیں کرسکتا ہے۔ اس سے مارکیٹ میں تیزی سے الٹ جانے پر وقت پر نقصان کو روکنے میں بھی ناکامی ہوسکتی ہے۔

اصلاح کی ہدایات

حکمت عملی کو مندرجہ ذیل پہلوؤں میں بہتر بنایا جاسکتا ہے:

  1. سٹاپ نقصان لائن تناسب کے لئے مختلف پیرامیٹر کی ترتیبات کا تجربہ کریں تاکہ پیرامیٹر کے بہتر مجموعے تلاش کیے جائیں۔

  2. اسٹاپ نقصان کی لائن کو مارکیٹ کے اتار چڑھاؤ کی ڈگری کے مطابق متحرک طور پر تبدیل کرنے کی کوشش کریں۔

  3. فیصلہ کرنے کے لئے دوسرے اشارے میں اضافہ کریں ، حکمت عملی کی موافقت کو بہتر بنانے کے لئے اسٹاپ نقصان کی بنیاد میں مزید متغیرات متعارف کروائیں؛

  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))


مزید