جزوی منافع لینے کی حکمت عملی کے ساتھ مرحلہ وار ٹریلنگ اسٹاپ

مصنف:چاؤ ژانگ، تاریخ: 2023-11-28 16:05:24
ٹیگز:

img

جائزہ

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

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

اس حکمت عملی کے اہم اجزاء یہ ہیں:

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

خاص طور پر، یہ سب سے پہلے 100 پوائنٹس سٹاپ نقصان مقرر کرتا ہے اور 100/200/300 پوائنٹس پر منافع لیتا ہے.curProfitInPtsفنکشن موجودہ قیمت اور اندراج کی قیمت کی بنیاد پر موجودہ منافع کا حساب لگاتا ہے.calcStopLossPriceفنکشن نقطہ فاصلے کی بنیاد پر سٹاپ نقصان کی قیمت کا حساب لگاتا ہے.

کلیدی منطق کے اندر اندر ہےgetCurrentStageفنکشن جو چیک کرتی ہے کہ آیا کوئی پوزیشن ہے اور اگر منافع ہر منافع لینے کی سطح سے تجاوز کر گیا ہے ، اگر سچ ہے تو اسٹیج کو آگے بڑھاتا ہے۔ مثال کے طور پر مرحلہ 2 100 پوائنٹ منافع کے بعد اور مرحلہ 3 200 پوائنٹ منافع کے بعد پہنچ جاتا ہے۔

آخر میں ، اسٹاپ نقصان کو اس مرحلے کے مطابق تبدیل کیا جاتا ہے۔ مرحلہ 1 اصل اسٹاپ کا استعمال کرتا ہے ، مرحلہ 2 توڑتا ہے ، اور مرحلہ 3 پہلی منافع کی سطح کو ٹریک کرتا ہے۔

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

اس مرحلہ وار ٹریلنگ سٹاپ حکمت عملی کے فوائد:

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

خطرے کا تجزیہ

غور کرنے کے لیے کچھ خطرات ہیں:

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

اصلاح

اس حکمت عملی کو بہتر بنانے کے کچھ طریقے:

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

/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-27 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/
// © adolgov

// @description
// when tp1 is reached, sl is moved to break-even
// when tp2 is reached, sl is moved to tp1
// when tp3 is reached - exit

//@version=4
strategy("Stepped trailing strategy example", overlay=true)

// random entry condition
longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

// sl & tp in points
sl = input(100)
tp1 = input(100)
tp2 = input(200)
tp3 = input(300)

curProfitInPts() =>
    if strategy.position_size > 0
        (high - strategy.position_avg_price) / syminfo.mintick
    else if strategy.position_size < 0
        (strategy.position_avg_price - low) / syminfo.mintick
    else
        0
        
calcStopLossPrice(OffsetPts) =>
    if strategy.position_size > 0
        strategy.position_avg_price - OffsetPts * syminfo.mintick
    else if strategy.position_size < 0
        strategy.position_avg_price + OffsetPts * syminfo.mintick
    else
        0
        
calcProfitTrgtPrice(OffsetPts) =>
    calcStopLossPrice(-OffsetPts)

getCurrentStage() =>
    var stage = 0
    if strategy.position_size == 0 
        stage := 0
    if stage == 0 and strategy.position_size != 0
        stage := 1
    else if stage == 1 and curProfitInPts() >= tp1
        stage := 2
    else if stage == 2 and curProfitInPts() >= tp2
        stage := 3
    stage

stopLevel = -1.
profitLevel = calcProfitTrgtPrice(tp3)

// based on current stage set up exit
// note: we use same exit ids ("x") consciously, for MODIFY the exit's parameters
curStage = getCurrentStage()
if curStage == 1
    stopLevel := calcStopLossPrice(sl)
    strategy.exit("x", loss = sl, profit = tp3, comment = "sl or tp3")
else if curStage == 2
    stopLevel := calcStopLossPrice(0)
    strategy.exit("x", stop = stopLevel, profit = tp3, comment = "breakeven or tp3")
else if curStage == 3
    stopLevel := calcStopLossPrice(-tp1)
    strategy.exit("x", stop = stopLevel, profit = tp3, comment = "tp1 or tp3")
else
    strategy.cancel("x")
    
// this is debug plots for visulalize TP & SL levels
plot(stopLevel > 0 ? stopLevel : na, style = plot.style_linebr)
plot(profitLevel > 0 ? profitLevel : na, style = plot.style_linebr)

مزید