الگ تھلگ بینڈ آسکیلیشن ٹریکنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-02-04 10:28:24
ٹیگز:

img

جائزہ

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

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

اس حکمت عملی میں طویل اور مختصر سٹاپ نقصان کی لائنوں کا حساب لگانے کے لئے N مدت کے ATR کو ایک ضارب سے ضرب دیا جاتا ہے۔ حساب کتاب کے مخصوص فارمولے مندرجہ ذیل ہیں:

Long Stop = Highest Price - ATR * Coefficient 
Short Stop = Lowest Price + ATR * Coefficient

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

اسٹاپ نقصان کی سطح کے طور پر اے ٹی آر بینڈ کا استعمال کرتے ہوئے ، یہ طریقہ اسٹاپ نقصان کے خطرے کو یقینی بناتے ہوئے قیمت کے رجحان کو مکمل طور پر پکڑ سکتا ہے۔ جب قیمت میں اہم پیشرفت ہوتی ہے تو یہ سگنل تیار کرتا ہے ، جو غلط خرابیوں کو مؤثر طریقے سے فلٹر کرسکتا ہے۔

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

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

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

  2. سگنلز پیدا کرنے کے لیے ایک جدید طریقہ اپنانے سے کچھ شور کو فلٹر کیا جا سکتا ہے اور چوٹیوں اور نچلیوں کا پیچھا کرنے سے بچا جا سکتا ہے۔

  3. قیمتوں میں اتار چڑھاؤ کو ٹریک کرنے کے لئے اسٹاپ نقصان کی لائنوں کی ریئل ٹائم ایڈجسٹمنٹ اسٹاپ نقصان کو بہت زیادہ لچکدار ہونے سے روکتی ہے اور زیادہ منافع میں تالے لگاتی ہے۔

خطرے کا تجزیہ

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

  1. غلط اے ٹی آر سائیکل اور گتانک بہت وسیع یا تنگ سٹاپ نقصان کا باعث بن سکتے ہیں۔

  2. اختتامی سگنل کا طریقہ ابتدائی رجحان کے مواقع سے محروم ہوسکتا ہے.

  3. رجحان کے اختتام کے دوران سٹاپ نقصان کی ٹریکنگ میں کچھ تاخیر ہوسکتی ہے، مکمل طور پر باہر نکلنے کے قابل نہیں.

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

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

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

  1. خطرات کو مزید کنٹرول کرنے کے لیے دوسری سطح کا سٹاپ نقصان ترتیب دیں۔

  2. رجحان کا تعین کرنے اور سگنل کے معیار کو بہتر بنانے کے لئے دیگر اشارے کو یکجا کریں.

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

  4. اے ٹی آر سائیکل اور ضابطہ کار پیرامیٹرز کو بہتر بنائیں تاکہ اسٹاپ نقصان کو اصل قیمت کے اتار چڑھاؤ کے قریب بنایا جاسکے۔

خلاصہ

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


/*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")

مزید