ڈائنامک پرائس چینل اسٹاپ لاس ٹریلنگ اسٹریٹجی


تخلیق کی تاریخ: 2024-02-01 10:52:33 آخر میں ترمیم کریں: 2024-02-01 10:52:33
کاپی: 0 کلکس کی تعداد: 599
1
پر توجہ دیں
1617
پیروکار

ڈائنامک پرائس چینل اسٹاپ لاس ٹریلنگ اسٹریٹجی

جائزہ

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

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

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

اس کے علاوہ ، یہ بھی کہا گیا ہے کہ:

کثیر پوزیشن کھولنے کا اشارہ: قیمت چینل کی حد سے زیادہ ہے اور جب وہ چینل کے اندر واپس آجائے تو کثیر پوزیشن کھلے زیادہ پوزیشن پائی پوزیشن سگنل: جب قیمت چینل کے وسط لائن سینٹر سے کم ہو (stop loss) یا اسٹاپ قیمت tpl (stop loss) سے زیادہ ہو

خالی گودام کھلنے کا سگنل: قیمت کم سے کم حد سے کم ہے اور گودام کے اندر جب خالی گودام کھلتا ہے تو واپس آتا ہے خالی پوزیشن خالی پوزیشن سگنل: جب قیمت چینل کے وسط لائن سینٹر سے زیادہ ہو (stop loss) یا اسٹاپ قیمت tps (stop loss) سے کم ہو (stop loss)

طاقت کا تجزیہ

اس حکمت عملی کے درج ذیل فوائد ہیں:

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

خطرے کا تجزیہ

اس حکمت عملی میں کچھ خطرات بھی ہیں:

  1. قیمت چینل پیرامیٹرز کی غلط ترتیب سے تجارت کی زیادہ تعدد یا تجارت کے مواقع ضائع ہوسکتے ہیں
  2. اسٹاپ نقصان کی قیمتوں میں حد سے زیادہ نرمی خطرے کے سوراخ کو بڑھا سکتی ہے
  3. ٹریکنگ اسٹاپس اعلی اتار چڑھاؤ کے اوقات میں پہلے سے متحرک ہوسکتے ہیں

ان خطرات کو پیرامیٹرز کو ایڈجسٹ کرنے اور دستی نگرانی کے ذریعہ کم اور کنٹرول کیا جاسکتا ہے۔

اصلاح کی سمت

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

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-01-31 00:00:00
end: 2024-01-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2020

//@version=4
strategy(title = "Noro's RiskDonchian Strategy", shorttitle = "RiskDonchian str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
tp = input(defval = 20.0, minval = 1, title = "Take-profit, %")
tptype = input(defval = "2. Fix", options = ["1. None", "2. Fix", "3. Trailing"], title = "Take-profit type")
sltype = input(defval = "2. Center", options = ["1. None", "2. Center"], title = "Take-profit type")
risklong  = input(5.0, minval = 0.0, maxval = 99.9, title = "Risk size for long, %")
riskshort = input(5.0, minval = 0.0, maxval = 99.9, title = "Risk size for short, %")
pclen = input(50, minval = 1, title = "Price Channel Length")
showll = input(true, defval = true, title = "Show lines")
showbg = input(false, defval = false, title = "Show Background")
showof = input(true, defval = true, title = "Show Offset")
showlabel = input(true, defval = true, title = "Show label")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Price Channel
h = highest(high, pclen)
l = lowest(low, pclen)
center = (h + l) / 2

//Take-profit
tpl = 0.0
tpl := tptype == "2. Fix" and strategy.position_size > 0 ? tpl[1] : h * (100 + tp) / 100

//Stop-loss
tps = 0.0
tps := tptype == "2. Fix" and strategy.position_size < 0 ? tps[1] : l * (100 - tp) / 100

//Lines
tplcol = showll and needlong and tptype != "1. None" ? color.lime : na
pclcol = showll and needlong ? color.blue : na
sllcol = showll and needlong and sltype != "1. None" ? color.red : na
tpscol = showll and needshort and tptype != "1. None" ? color.lime : na
pcscol = showll and needshort ? color.blue : na
slscol = showll and needshort and sltype != "1. None" ? color.red : na
offset = showof ? 1 : 0
plot(tpl, offset = offset, color = tplcol, title = "TP Long")
plot(h, offset = offset, color = pclcol, title = "Channel High")
plot(center, offset = offset, color = sllcol, title = "SL Long")
plot(center, offset = offset, color = slscol, title = "SL Short")
plot(l, offset = offset, color = pcscol, title = "Channel Low")
plot(tps, offset = offset, color = tpscol, title = "TP Short")

//Background
size = strategy.position_size
bgcol = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(bgcol, transp = 70)

//Lot size
risksizelong = -1 * risklong
risklonga = ((center / h) - 1) * 100
coeflong = abs(risksizelong / risklonga)
lotlong = (strategy.equity / close) * coeflong
risksizeshort = -1 * riskshort
riskshorta = ((center / l) - 1) * 100
coefshort = abs(risksizeshort / riskshorta)
lotshort = (strategy.equity / close) * coefshort

//Trading
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
mo = 0
mo := strategy.position_size != 0 ? 0 : high >= center[1] and low <= center[1] ? 1 : mo[1]

if h > 0
    longlimit = tptype == "1. None" ? na : tpl
    longstop = sltype == "1. None" ? na : center
    strategy.entry("Long", strategy.long, lotlong, stop = h, when = strategy.position_size <= 0 and needlong and truetime and mo)
    strategy.exit("TP Long", "Long", limit = longlimit, stop = longstop)
    shortlimit = tptype == "1. None" ? na : tps
    shortstop = sltype == "1. None" ? na : center
    strategy.entry("Short", strategy.short, lotshort, stop = l, when = strategy.position_size >= 0 and needshort and truetime and mo)
    strategy.exit("Exit Short", "Short", limit = shortlimit, stop = shortstop)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")
    
if showlabel

    //Drawdown
    max = 0.0
    max := max(strategy.equity, nz(max[1]))
    dd = (strategy.equity / max - 1) * 100
    min = 100.0
    min := min(dd, nz(min[1]))
    
    //Label
    min := round(min * 100) / 100
    labeltext = "Drawdown: " + tostring(min) + "%"
    var label la = na
    label.delete(la)
    tc = min > -100 ? color.white : color.red
    osx = timenow + round(change(time)*10)
    osy = highest(100)