زیرو لیگ اوورلیپنگ چلتی اوسط کے ساتھ چانڈلیئر ایگزٹ ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-22 10:03:05
ٹیگز:

img

جائزہ

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

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

  1. ZLSMA حصہ:

    • بالترتیب 130 پیریڈ کی LMA لائنوں کا حساب لگانے کے لئے لکیری رجسٹریشن کا طریقہ استعمال کریں۔
    • پھر دو LMA لائنوں کو اوورلیپ کریں تاکہ فرق کی قیمت eq کو تفویض کی جائے۔
    • آخر میں، اصل ایل ایم اے لائن کے علاوہ eq فرق کے ذریعے زیرو لیگ اوورلیپنگ چلتی اوسط ZLSMA کی تعمیر کریں.
  2. سی ای حصہ:

    • اے ٹی آر اشارے کا حساب لگائیں اور اسے ایک فیکٹر سے ضرب کریں (ڈیفالٹ 2) تاکہ حالیہ اعلی یا کم نقطہ سے متحرک فاصلہ طے کیا جاسکے۔
    • جب اختتامی قیمت آخری طویل یا مختصر سٹاپ نقصان لائن سے زیادہ ہو تو اسٹاپ نقصان لائن کو اس کے مطابق ایڈجسٹ کریں۔
    • سٹاپ نقصان لائن کے مقابلے میں بندش کی قیمت میں تبدیلی کی بنیاد پر طویل یا مختصر سمت کا تعین کریں۔
  3. انٹری سگنل:

    • ZLSMA رجحان کی سمت کا جائزہ لیتا ہے، جب CE اشارہ جاری کرتا ہے تو درج کریں.
  4. آؤٹ سٹاپ نقصان:

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

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

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

خطرے کا تجزیہ

  1. غلط پیرامیٹر کی ترتیبات نقصان کی شرح میں اضافہ یا سٹاپ نقصان کی حد میں توسیع کر سکتے ہیں.
  2. مارکیٹ میں تیزی سے تبدیلی کی صورت میں اسٹاپ نقصان کو توڑنے کا خطرہ موجود ہے۔

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

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

خلاصہ

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


/*backtest
start: 2024-01-14 00:00:00
end: 2024-01-21 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © GGkurg

//@version=5

strategy(title = "ZLSMA + Chandelier Exit", shorttitle="ZLSMA + CE", overlay=true)


var GRP1 = "take profit / stop loss"
TP = input(title='long TP%', defval=2.0,   inline = "1", group = GRP1) 
SL = input(title='long SL%', defval=2.0,    inline = "1", group = GRP1) 
TP2 = input(title='short TP', defval=2.0,    inline = "2", group = GRP1) 
SL2 = input(title='short SL', defval=2.0,    inline = "2", group = GRP1) 
//-------------------------------------------------calculations
takeProfitPrice = strategy.position_avg_price * (1+(TP/100))
stopLossPrice = strategy.position_avg_price * (1-(SL/100))
takeProfitPrice2 = strategy.position_avg_price * (1-(TP2/100))
stopLossPrice2 = strategy.position_avg_price * (1+(SL2/100))


//---------------------------------------ZLSMA - Zero Lag LSMA
var GRP2 = "ZLSMA settings"
length1 = input(title='Length', defval=130, inline = "1", group = GRP2) 
offset1 = input(title='Offset', defval=0, inline = "2", group = GRP2) 
src = input(close, title='Source', inline = "3", group = GRP2) 
lsma = ta.linreg(src, length1, offset1)
lsma2 = ta.linreg(lsma, length1, offset1)
eq = lsma - lsma2
zlsma = lsma + eq

plot(zlsma, color=color.new(color.yellow, 0), linewidth=3)


//---------------------------------------ZLSMA conditisions 
//---------long
longc1 = close > zlsma
longclose1 = close < zlsma
//---------short
shortc1 = close < zlsma
shortclose1 = close > zlsma


//---------------------------------------Chandelier Exit
var string calcGroup = 'Chandelier exit settings'
length = input.int(title='ATR Period', defval=1, group=calcGroup)
mult = input.float(title='ATR Multiplier', step=0.1, defval=2.0, group=calcGroup)
useClose = input.bool(title='Use Close Price for Extremums', defval=true, group=calcGroup)

var string visualGroup = 'Visuals'
showLabels = input.bool(title='Show Buy/Sell Labels', defval=true, group=visualGroup)
highlightState = input.bool(title='Highlight State', defval=true, group=visualGroup)

var string alertGroup = 'Alerts'
awaitBarConfirmation = input.bool(title="Await Bar Confirmation", defval=true, group=alertGroup)

atr = mult * ta.atr(length)

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

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

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

var color longColor = color.green
var color shortColor = color.red
var color longFillColor = color.new(color.green, 90)
var color shortFillColor = color.new(color.red, 90)
var color textColor = color.new(color.white, 0)

longStopPlot = plot(dir == 1 ? longStop : na, title='Long Stop', style=plot.style_linebr, linewidth=2, color=color.new(longColor, 0))
buySignal = dir == 1 and dir[1] == -1
plotshape(buySignal ? longStop : na, title='Long Stop Start', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(longColor, 0))
plotshape(buySignal and showLabels ? longStop : na, title='Buy Label', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(longColor, 0), textcolor=textColor)

shortStopPlot = plot(dir == 1 ? na : shortStop, title='Short Stop', style=plot.style_linebr, linewidth=2, color=color.new(shortColor, 0))
sellSignal = dir == -1 and dir[1] == 1
plotshape(sellSignal ? shortStop : na, title='Short Stop Start', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(shortColor, 0))
plotshape(sellSignal and showLabels ? shortStop : na, title='Sell Label', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(shortColor, 0), textcolor=textColor)

midPricePlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0, display=display.none, editable=false)

longStateFillColor = highlightState ? dir == 1 ? longFillColor : na : na
shortStateFillColor = highlightState ? dir == -1 ? shortFillColor : na : na
fill(midPricePlot, longStopPlot, title='Long State Filling', color=longStateFillColor)
fill(midPricePlot, shortStopPlot, title='Short State Filling', color=shortStateFillColor)

await = awaitBarConfirmation ? barstate.isconfirmed : true
alertcondition(dir != dir[1] and await, title='Alert: CE Direction Change', message='Chandelier Exit has changed direction!')
alertcondition(buySignal and await, title='Alert: CE Buy', message='Chandelier Exit Buy!')
alertcondition(sellSignal and await, title='Alert: CE Sell', message='Chandelier Exit Sell!')




//---------------------------------------Chandelier Exit conditisions 
//---------long
longc2 = buySignal
longclose2 = sellSignal
//---------short
shortc2 = sellSignal
shortclose2 = buySignal



//---------------------------------------Long entry and exit
if longc1 and longc2 
    strategy.entry("long", strategy.long)

if strategy.position_avg_price > 0
    strategy.exit("close long", "long", limit = takeProfitPrice, stop = stopLossPrice, alert_message = "close all orders")

if longclose1 and longclose2 and strategy.opentrades == 1
    strategy.close("long","ema long cross", alert_message = "close all orders")


//---------------------------------------Short entry and exit
if shortc1 and shortc2 
    strategy.entry("short", strategy.short)

if strategy.position_avg_price > 0
    strategy.exit("close short", "short", limit = takeProfitPrice2, stop = stopLossPrice2, alert_message = "close all orders")

if shortclose1 and shortclose2 and strategy.opentrades == 1
    strategy.close("close short","short", alert_message = "close all orders")




مزید