
اس حکمت عملی کا بنیادی خیال یہ ہے کہ اے ٹی آر اشارے پر مبنی لمبی اور مختصر لائنوں کی روک تھام کی جگہ کا حساب لگایا جائے ، اور جب قیمت ان رکاوٹوں کو توڑ دیتی ہے تو تجارتی سگنل پیدا کیا جائے۔ اس میں رجحانات کی نگرانی اور جھٹکے کو پکڑنے کی صلاحیت بھی ہے۔
یہ حکمت عملی اے ٹی آر اشارے کے این دورانیہ اے ٹی آر کو ایک فیکٹر کے ذریعہ لمبی لمبی دونوں طرف کی روک تھام کی لائنوں کا حساب لگانے کے لئے استعمال کرتی ہے۔ حساب کتاب کا فارمولا مندرجہ ذیل ہے:
长线止损 = 最高价 - ATR * 系数
短线止损 = 最低价 + ATR * 系数
جب قیمت بڑھتی ہے تو لمبی لائن کی روک تھام کی لائن کو توڑنے کے لئے زیادہ کریں ، اور جب قیمت کم ہوتی ہے تو مختصر لائن کی روک تھام کی لائن کو توڑنے کے لئے خالی کریں۔ جب زیادہ سے زیادہ لیکویڈیٹی کی جائے تو قیمت کے اتار چڑھاؤ کو حقیقی وقت میں ٹریک کیا جائے گا تاکہ اسٹاپ لائن کو منتقل کیا جاسکے۔
یہ طریقہ ، جس میں اے ٹی آر بینڈ کو اسٹاپ نقصان کی حیثیت سے ترتیب دیا گیا ہے ، اس قیمت کے رجحان کو اچھی طرح سے پکڑ سکتا ہے ، اس بات کی ضمانت دیتے ہوئے کہ اسٹاپ نقصان کا خطرہ ہے۔ جب قیمت میں بڑے پیمانے پر توڑ پڑتا ہے تو سگنل پیدا ہوتا ہے ، جس سے جعلی توڑ کو مؤثر طریقے سے ختم کیا جاسکتا ہے۔
اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ آپ خود بخود اسٹاپ نقصان کی پوزیشن کو ایڈجسٹ کرسکتے ہیں ، قیمت کے رجحان کو پکڑنے کے ساتھ ساتھ خطرے کو کنٹرول کرسکتے ہیں۔ اس کے فوائد یہ ہیں:
اے ٹی آر اشارے کی بنیاد پر فلوٹنگ اسٹاپ سیٹ کریں ، مارکیٹ میں اتار چڑھاؤ کے مطابق اسٹاپ نقصان کی حد کو ایڈجسٹ کریں ، تاکہ انفرادی نقصان کو مؤثر طریقے سے کنٹرول کیا جاسکے۔
اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اس کے علاوہ، اور اس کے علاوہ.
قیمتوں میں اتار چڑھاو کو ٹریک کرنے کے لئے اسٹاپ لائن کو ریئل ٹائم میں ایڈجسٹ کریں ، اسٹاپ کو زیادہ نرمی سے بچائیں ، اور زیادہ منافع کو لاک کریں۔
اس حکمت عملی میں کچھ خطرات بھی ہیں ، جو بنیادی طور پر اسٹاپ نقصان کی ترتیب اور سگنل پیدا کرنے کے طریقوں پر مرکوز ہیں۔ مخصوص خطرات یہ ہیں:
اے ٹی آر کی غلط سائیکلنگ اور فیکٹرنگ سے اسٹاپ نقصان بہت وسیع یا بہت تنگ ہوسکتا ہے۔
ٹرانسمیشن سگنل کو توڑنے سے رجحانات کے ابتدائی مواقع سے محروم ہوسکتا ہے.
ٹرینڈ کے اختتام پر اسٹاپ نقصان کا سراغ لگانا تاخیر کا شکار ہوسکتا ہے ، اور اس سے باہر نکلنا ناممکن ہے۔
اس کا علاج بنیادی طور پر پیرامیٹرز کو ایڈجسٹ کرنا ہے تاکہ اسٹاپ نقصان کو زیادہ معقول بنایا جاسکے ، یا رجحانات اور سگنل کے بارے میں فیصلہ کرنے کے لئے دوسرے اشارے کو معاون بنایا جاسکے۔
اس حکمت عملی کو مزید بہتر بنانے کے لیے درج ذیل نکات پر غور کیا جا سکتا ہے:
خطرے کو مزید کنٹرول کرنے کے لئے ایک دوسرے کی سطح کو روکنے کے لئے.
دیگر اشارے کے ساتھ رجحانات کا اندازہ لگانے کے لئے سگنل کے معیار کو بہتر بنائیں۔
موبائل اسٹاپنگ حکمت عملی شامل کریں تاکہ رجحان مزید جاری رہنے پر منافع میں اضافہ کرسکیں۔
اے ٹی آر کی مدت اور فیکٹر پیرامیٹرز کو بہتر بنائیں تاکہ اسٹاپ نقصان کو حقیقی قیمت کے اتار چڑھاؤ کے قریب لایا جاسکے۔
یہ حکمت عملی مجموعی طور پر بہت عملی ہے ، خود کار طریقے سے روکنے کی پوزیشن کو ایڈجسٹ کرنے اور خطرے کو مؤثر طریقے سے کنٹرول کرنے کے لئے ، جبکہ رجحانات کی پیروی کے ذریعہ اچھے منافع حاصل کیے جاسکتے ہیں۔ ہم حکمت عملی کو بہتر بنانے اور بہتر بنانے کے لئے دوسرے تجزیاتی طریقوں کے ساتھ مل کر اس کی اصل بنیاد پر مزید استحکام اور ذہانت پیدا کرسکتے ہیں۔
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
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/
// © melihtuna
//@version=4
strategy("Chandelier Exit - Strategy",shorttitle="CE-STG" , overlay=true, default_qty_type=strategy.cash, default_qty_value=10000, initial_capital=10000, currency=currency.USD, commission_value=0.03, commission_type=strategy.commission.percent)
length = input(title="ATR Period", type=input.integer, defval=22)
mult = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
showLabels = input(title="Show Buy/Sell Labels ?", type=input.bool, defval=false)
useClose = input(title="Use Close Price for Extremums ?", type=input.bool, defval=true)
highlightState = input(title="Highlight State ?", type=input.bool, defval=true)
atr = mult * atr(length)
longStop = (useClose ? highest(close, length) : highest(length)) - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop = (useClose ? lowest(close, length) : lowest(length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? 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
longStopPlot = plot(dir == 1 ? longStop : na, title="Long Stop", style=plot.style_linebr, linewidth=2, color=longColor)
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=longColor, transp=0)
plotshape(buySignal and showLabels ? longStop : na, title="Buy Label", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=longColor, textcolor=color.white, transp=0)
shortStopPlot = plot(dir == 1 ? na : shortStop, title="Short Stop", style=plot.style_linebr, linewidth=2, color=shortColor)
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=shortColor, transp=0)
plotshape(sellSignal and showLabels ? shortStop : na, title="Sell Label", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=shortColor, textcolor=color.white, transp=0)
midPricePlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0, display=display.none, editable=false)
longFillColor = highlightState ? (dir == 1 ? longColor : na) : na
shortFillColor = highlightState ? (dir == -1 ? shortColor : na) : na
fill(midPricePlot, longStopPlot, title="Long State Filling", color=longFillColor)
fill(midPricePlot, shortStopPlot, title="Short State Filling", color=shortFillColor)
long_short = input(true, "Long-Short",type=input.bool, group="Strategy Settings")
start = input(timestamp("2019-01-01"), "Date", type=input.time, group="Strategy Settings")
finish = input(timestamp("2025-01-01"), "Date", type=input.time, group="Strategy Settings")
window() => true
slRatio=input(5, "Manuel Stop Loss Ratio", type=input.float, minval=0, group="Strategy Settings")
tpRatio=input(20, "Take Profit Ratio", type=input.float, minval=0, group="Strategy Settings")
tsStartRatio=input(10, "Trailing Stop Start Ratio", type=input.float, minval=0, group="Strategy Settings")
tsRatio=input(5, "Trailing Stop Ratio", type=input.float, minval=1, group="Strategy Settings")
lastBuyPrice = strategy.position_avg_price
diffHiPriceRatio = (high-lastBuyPrice)/lastBuyPrice*100
diffLoPriceRatio = (close-lastBuyPrice)/lastBuyPrice*100
posHiRatio=0.0
posHiRatio:= strategy.position_size > 0 ? diffHiPriceRatio > posHiRatio[1] ? diffHiPriceRatio : posHiRatio[1] : 0
s_diffHiPriceRatio = (low-lastBuyPrice)/lastBuyPrice*100
s_diffLoPriceRatio = (close-lastBuyPrice)/lastBuyPrice*100
s_posHiRatio=0.0
s_posHiRatio:= strategy.position_size < 0 ? s_diffLoPriceRatio < s_posHiRatio[1] ? s_diffLoPriceRatio : s_posHiRatio[1] : 0
strategy.entry("LONG", strategy.long, when = window() and buySignal)
strategy.close("LONG", when = window() and sellSignal)
strategy.close("LONG", when = diffLoPriceRatio<(slRatio*(-1)), comment="STOP-LONG")
strategy.close("LONG", when = diffHiPriceRatio>tpRatio, comment="TAKE-PROFIT-LONG")
strategy.close("LONG", when = ((posHiRatio[1]>tsStartRatio) and (posHiRatio[1]-diffHiPriceRatio)>tsRatio), comment="TRAILING-STOP-LONG")
if long_short
strategy.entry("SHORT", strategy.short, when = window() and sellSignal)
strategy.close("SHORT", when = window() and buySignal)
strategy.close("SHORT", when = s_diffLoPriceRatio>(slRatio), comment="STOP-SHORT")
strategy.close("SHORT", when = s_diffHiPriceRatio<(tpRatio*(-1)), comment="TAKE-PROFIT-SHORT")
strategy.close("SHORT", when = ((s_posHiRatio[1]*(-1)>tsStartRatio) and ((s_posHiRatio[1]-s_diffLoPriceRatio))*(-1)>tsRatio), comment="TRAILING-STOP-SHORT")