ٹریلنگ اسٹاپ کے ساتھ حکمت عملی کے بعد سنگل ایکسپونیشل موونگ ایوریج ٹرینڈ


تخلیق کی تاریخ: 2024-01-08 11:37:44 آخر میں ترمیم کریں: 2024-01-08 11:37:44
کاپی: 1 کلکس کی تعداد: 649
1
پر توجہ دیں
1617
پیروکار

ٹریلنگ اسٹاپ کے ساتھ حکمت عملی کے بعد سنگل ایکسپونیشل موونگ ایوریج ٹرینڈ

جائزہ

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

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

اس حکمت عملی میں دو اہم نکات شامل ہیں:

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

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

اس حکمت عملی کی انٹری کی بنیاد قیمتوں کے SESMA کو توڑنے پر ہے۔ جبکہ آؤٹ سگنل اسٹاپ نقصان کی لائن سے ٹرگر کیا جاتا ہے۔ آپ مقرر کرسکتے ہیں کہ آیا نشان دکھایا جائے گا۔

اسٹریٹجک فوائد

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

خطرات اور اصلاحات

  1. جب رجحان الٹ جاتا ہے تو ، اسٹاپ نقصان کا امکان ہوتا ہے جس کی وجہ سے قبل از وقت باہر نکلنا پڑتا ہے۔ اسٹاپ نقصان کی حد کو مناسب طریقے سے نرمی دی جاسکتی ہے۔
  2. SESMA پیرامیٹرز کو زیادہ سے زیادہ لمبائی تلاش کرنے کے لئے بہتر بنایا جا سکتا ہے.
  3. اے ٹی آر پیرامیٹرز بھی مختلف دورانیہ کی لمبائی کی جانچ کر سکتے ہیں.
  4. کیا ٹیسٹ میں نشانات ظاہر ہوئے ہیں؟

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*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')