ایک ہی توسیعی ہموار چلتی اوسط کے ساتھ ٹریلنگ سٹاپ نقصان رجحان کی پیروی کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-08 11:37:44
ٹیگز:

img

جائزہ

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

حکمت عملی منطق

اسٹریٹیجی میں دو بنیادی اشارے شامل ہیں:

  1. سنگل ایکسپونینشل ہموار چلتی اوسط (سی ای ایس ایم اے): سی ای ایس ایم اے ای ایم اے کے خیال پر مبنی ہے اور منحنی خطوط کو ہموار بنانے اور تاخیر کو کم کرنے کے لئے پیرامیٹرز کو بہتر بناتا ہے۔ یہ قیمت کے رجحانات کا فیصلہ کرنے کے لئے سی ای ایس ایم اے کی سمت اور سطح کا استعمال کرتا ہے۔

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

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

حکمت عملی کے فوائد

  1. سی ای ایس ایم اے کے حساب کتاب کے طریقہ کار کو بہتر بنایا گیا ہے اور اس سے تاخیر کو مؤثر طریقے سے کم کیا جاسکتا ہے اور رجحان کی پیروی کرنے کی صلاحیت کو بہتر بنایا جاسکتا ہے۔
  2. ٹریلنگ سٹاپ نقصان کا طریقہ کار بہت زیادہ وسیع یا بہت تنگ سٹاپ نقصان سے بچنے کے لئے حقیقی وقت میں اتار چڑھاؤ کے مطابق سٹاپ نقصان کی حد کو ایڈجسٹ کرسکتا ہے۔
  3. داخلہ اور باہر نکلنے کے سگنل کو نشان زد کرنے کے لئے بصری معاونت کے ساتھ آتا ہے.
  4. مختلف مصنوعات اور پیرامیٹر اصلاحات کے لئے موزوں حسب ضرورت پیرامیٹرز.

خطرات اور اصلاح کی ہدایات

  1. سٹاپ نقصان رجحان الٹ کے دوران قبل از وقت متحرک کیا جا سکتا ہے. مناسب طریقے سے سٹاپ نقصان کی حد کو نرم کر سکتے ہیں.
  2. بہترین لمبائی تلاش کرنے کے لئے سیسما پیرامیٹرز کو بہتر بنایا جاسکتا ہے۔
  3. ATR کے دورانیے کے پیرامیٹر کو بھی ٹیسٹ کیا جا سکتا ہے.
  4. نشانات دکھانے کے اثرات کی جانچ کریں.

نتیجہ

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


/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-07 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © simwai
strategy('Chandelier Exit ZLSMA Strategy', shorttitle='CE_ZLSMA', overlay = true, initial_capital = 1000, default_qty_value = 10, default_qty_type = strategy.percent_of_equity, calc_on_every_tick = false, process_orders_on_close = true, commission_value = 0.075)

// -- Colors --
color maximumYellowRed = color.rgb(255, 203, 98) // yellow
color rajah = color.rgb(242, 166, 84) // orange
color magicMint = color.rgb(171, 237, 198)
color languidLavender = color.rgb(232, 215, 255)
color maximumBluePurple = color.rgb(181, 161, 226)
color skyBlue = color.rgb(144, 226, 244)
color lightGray = color.rgb(214, 214, 214)
color quickSilver = color.rgb(163, 163, 163)
color mediumAquamarine = color.rgb(104, 223, 153)
color carrotOrange = color.rgb(239, 146, 46)

// -- Inputs --
length = input(title='ATR Period', defval=1)
mult = input.float(title='ATR Multiplier', step=0.1, defval=2)
showLabels = input(title='Show Buy/Sell Labels ?', tooltip='Created by Chandelier Exit (CE)', defval=false)
isSignalLabelEnabled = input(title='Show Signal Labels ?', defval=true)
useClose = input(title='Use Close Price for Extrema ?', defval=true)
zcolorchange = input(title='Enable Rising/Decreasing Highlightning', defval=false)
zlsmaLength = input(title='ZLSMA Length', defval=50)
offset = input(title='Offset', defval=0)

// -- CE - Credits to @everget --
float haClose = float(1) / 4 * (open[1] + high[1] + low[1] + close[1])
atr = mult * ta.atr(length)[1]

longStop = (useClose ? ta.highest(haClose, length) : ta.highest(haClose, length)) - atr
longStopPrev = nz(longStop[1], longStop)
longStop := haClose > longStopPrev ? math.max(longStop, longStopPrev) : longStop

shortStop = (useClose ? ta.lowest(haClose, length) : ta.lowest(haClose, length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := haClose < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop

var int dir = 1
dir := haClose > shortStopPrev ? 1 : haClose < longStopPrev ? -1 : dir

buySignal = dir == 1 and dir[1] == -1
plotshape(buySignal and showLabels ? longStop : na, title='Buy Label', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=mediumAquamarine, textcolor=color.white)
sellSignal = dir == -1 and dir[1] == 1
plotshape(sellSignal and showLabels ? shortStop : na, title='Sell Label', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=carrotOrange, textcolor=color.white)

changeCond = dir != dir[1]

// -- ZLSMA - Credits to @netweaver2011 --
lsma = ta.linreg(haClose, zlsmaLength, offset)
lsma2 = ta.linreg(lsma, zlsmaLength, offset)
eq = lsma - lsma2
zlsma = lsma + eq

zColor = zcolorchange ? zlsma > zlsma[1] ? magicMint : rajah : languidLavender
plot(zlsma, title='ZLSMA', linewidth=2, color=zColor)

// -- Signals --
var string isTradeOpen = ''
var string signalCache = ''

bool enterLong = buySignal and ta.crossover(haClose, zlsma) 
bool exitLong = ta.crossunder(haClose, zlsma) 
bool enterShort = sellSignal and ta.crossunder(haClose, zlsma)
bool exitShort = ta.crossover(haClose, zlsma)

if (signalCache == 'long entry')
    signalCache := ''
    enterLong := true
else if (signalCache == 'short entry')
    signalCache := ''
    enterShort := true

if (isTradeOpen == '')
    if (exitShort and (not enterLong))
        exitShort := false
    if (exitLong and (not enterShort))
        exitLong := false   
    if (enterLong and exitShort)
        isTradeOpen := 'long'
        exitShort := false
    else if (enterShort and exitLong)
        isTradeOpen := 'short'
        exitLong := false
    else if (enterLong)
        isTradeOpen := 'long'
    else if (enterShort)
        isTradeOpen := 'short'
else if (isTradeOpen == 'long')
    if (exitShort)
        exitShort := false
    if (enterLong)
        enterLong := false
    if (enterShort and exitLong)
        enterShort := false
        signalCache := 'short entry'
    if (exitLong)
        isTradeOpen := ''
else if (isTradeOpen == 'short')
    if (exitLong)
        exitLong := false
    if (enterShort)
        enterShort := false
    if (enterLong and exitShort)
        enterLong := false
        signalCache := 'long entry'
    if (exitShort)
        isTradeOpen := ''

plotshape((isSignalLabelEnabled and enterLong) ? zlsma : na, title='LONG', text='L', style=shape.labelup, color=mediumAquamarine, textcolor=color.white, size=size.tiny, location=location.absolute)
plotshape((isSignalLabelEnabled and enterShort) ? zlsma : na, title='SHORT', text='S', style=shape.labeldown, color=carrotOrange, textcolor=color.white, size=size.tiny, location=location.absolute)
plotshape((isSignalLabelEnabled and exitLong) ? zlsma : na, title='LONG EXIT', style=shape.circle, color=magicMint, size=size.tiny, location=location.absolute)
plotshape((isSignalLabelEnabled and exitShort) ? zlsma : na, title='SHORT EXIT', style=shape.circle, color=rajah, size=size.tiny, location=location.absolute)

barcolor(color=isTradeOpen == 'long' ? mediumAquamarine : isTradeOpen == 'short' ? carrotOrange : na)

// -- Long Exits --
if (exitLong and strategy.position_size > 0)
    strategy.close('long', comment='EXIT_LONG')

// -- Short Exits --
if (exitShort and strategy.position_size < 0)
    strategy.close('short', comment='EXIT_SHORT')

// -- Long Entries --
if (enterLong)
    strategy.entry('long', strategy.long, comment='ENTER_LONG')

// -- Short Entries --
if (enterShort)
    strategy.entry('short', strategy.short, comment='ENTER_SHORT')

مزید