متحرک اے ٹی آر سٹاپ نقصان سینٹر لائن کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-10-16 16:20:06
ٹیگز:

img

جائزہ

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

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

حکمت عملی لمبائی 25 اور شفٹ 5 کے ساتھ لکیری رجعت کا استعمال کرتے ہوئے مرکز لائن xLG کا حساب لگاتی ہے۔ پھر یہ چینل رینج کے طور پر مرکز لائن سے اوپر اور نیچے 6٪ لیتا ہے ، جس میں xLG1r اوپری لائن اور xLG1s نچلی لائن ہے۔

جب قیمت xLG1r سے اوپر ہوتی ہے تو ، یہ طویل ہوجاتی ہے۔ جب قیمت xLG1s سے نیچے ہوتی ہے تو ، یہ مختصر ہوجاتی ہے۔ یہ آخری لمبا اور مختصر وقت ریکارڈ کرتا ہے۔ جب آخری لمبا وقت آخری مختصر وقت سے بڑا ہوتا ہے تو ایک لمبا سگنل تیار ہوتا ہے۔ جب آخری مختصر وقت آخری لمبا وقت سے بڑا ہوتا ہے تو ایک مختصر سگنل تیار ہوتا ہے۔

متحرک اے ٹی آر اسٹاپ نقصان 1 کی اے ٹی آر مدت اور 2 کا ضرب استعمال کرتا ہے۔ لمبی تجارت کے ل the ، اسٹاپ نقصان اختتامی قیمت مائنس اے ٹی آر ویلیو ٹائمز ضرب ہے۔ مختصر تجارت کے ل the ، اسٹاپ نقصان اختتامی قیمت پلس اے ٹی آر ویلیو ٹائمز ضرب ہے۔

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

  • طویل مدتی رجحانات کو ٹریک کرنے کے لئے لکیری رجسٹریشن چینل کا استعمال کرتا ہے
  • اے ٹی آر پر مبنی سٹاپ نقصان متحرک طور پر ایڈجسٹ کرتا ہے تاکہ اسٹاپ بہت وسیع یا بہت تنگ نہ ہو
  • قیمتوں میں خرابی کے اشارے غلط اشاروں سے بچنے میں مدد کرتے ہیں

خطرات اور بہتری

  • رجعت چینل پیرامیٹرز کی اصلاح کی ضرورت ہے، موجودہ رینج بہت تنگ ہو سکتا ہے
  • ATR ضارب بھی زیادہ سے زیادہ پیرامیٹر تلاش کرنے کے لئے ٹیسٹنگ کی ضرورت ہے
  • غلط بریک آؤٹ سے بچنے کے لئے بریک آؤٹ پر تصدیق شامل کرنے پر غور کریں

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

  • بہتر پیرامیٹرز تلاش کرنے کے لئے مختلف رجسٹریشن مدت کی لمبائی کی جانچ کریں
  • مختلف اے ٹی آر ادوار اور سٹاپ نقصان کے ضارب آزمائیں
  • بریک آؤٹ سگنلز پر اضافی تصدیق شامل کریں، جیسے حجم بریک آؤٹ

نتیجہ

یہ حکمت عملی ایک انکولی ٹرینڈ ٹریکنگ سسٹم بنانے کے لئے رجحان کی پیروی ، متحرک اسٹاپس اور بریک آؤٹ سگنل جیسی متعدد تکنیکوں کو یکجا کرتی ہے۔ پیرامیٹر کی اصلاح اور سگنل فلٹرنگ میں مزید بہتری سے استحکام اور منافع میں بہتری آسکتی ہے۔ یہ کوانٹ ٹریڈرز کے لئے ایک قیمتی نقطہ نظر فراہم کرتا ہے۔


/*backtest
start: 2023-01-01 00:00:00
end: 2023-06-24 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// Thanks to HPotter for the original code for Center of Gravity Backtest
strategy("Center of Gravity BF 🚀", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.15)

/////////////// Time Frame ///////////////
testStartYear = input(2017, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() => true

///////////// Center of Gravity /////////////
Length = input(25, minval=1)
m = input(5, minval=0)
Percent = input(6, minval=0, title="COG %")

xLG = linreg(close, Length, m)
xLG1r = xLG + ((close * Percent) / 100)
xLG1s = xLG - ((close * Percent) / 100)

pos = 0.0
pos := iff(close > xLG1r, 1, iff(close < xLG1s, -1, nz(pos[1], 0))) 
possig = iff(pos == 1, 1, iff(pos == -1, -1, pos))

/////////////// Srategy ///////////////
long = possig == 1 
short = possig == -1 

last_long = 0.0
last_short = 0.0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])

long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

last_open_long_signal = 0.0
last_open_short_signal = 0.0
last_open_long_signal := long_signal ? open : nz(last_open_long_signal[1])
last_open_short_signal := short_signal ? open : nz(last_open_short_signal[1])

last_long_signal = 0.0
last_short_signal = 0.0
last_long_signal := long_signal ? time : nz(last_long_signal[1])
last_short_signal := short_signal ? time : nz(last_short_signal[1])

in_long_signal = last_long_signal > last_short_signal
in_short_signal = last_short_signal > last_long_signal

last_high = 0.0
last_low = 0.0
last_high := not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low := not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])

since_longEntry = barssince(last_open_long_signal != last_open_long_signal[1]) 
since_shortEntry = barssince(last_open_short_signal != last_open_short_signal[1]) 

/////////////// Dynamic ATR Stop Losses ///////////////
atrLkb = input(1, minval=1, title='ATR Stop Period')
atrMult = input(2, step=0.25, title='ATR Stop Multiplier') 
atr1 = atr(atrLkb)

longStop = 0.0
longStop :=  short_signal ? na : long_signal ? close - (atr1 * atrMult) : longStop[1]
shortStop = 0.0
shortStop := long_signal ? na : short_signal ? close + (atr1 * atrMult) : shortStop[1]

/////////////// Execution ///////////////
if testPeriod()
    strategy.entry("Long",  strategy.long, when=long)
    strategy.entry("Short", strategy.short, when=short)
    strategy.exit("Long SL", "Long", stop=longStop, when=since_longEntry > 0)
    strategy.exit("Short SL", "Short", stop=shortStop, when=since_shortEntry > 0)

/////////////// Plotting ///////////////
plot(xLG1r, color=color.lime, title="LG1r")
plot(xLG1s, color=color.red, title="LG1s")
plot(strategy.position_size <= 0 ? na : longStop, title="Long Stop Loss", color=color.yellow, style=plot.style_circles, linewidth=1)
plot(strategy.position_size >= 0 ? na : shortStop, title="Short Stop Loss", color=color.orange, style=plot.style_circles, linewidth=1)
bgcolor(strategy.position_size > 0 ? color.lime : strategy.position_size < 0 ? color.red : color.white, transp=90)
bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=60)

مزید