قدم بہ قدم منافع کمانے کی حکمت عملی


تخلیق کی تاریخ: 2023-11-28 16:05:24 آخر میں ترمیم کریں: 2023-11-28 16:05:24
کاپی: 0 کلکس کی تعداد: 778
1
پر توجہ دیں
1619
پیروکار

قدم بہ قدم منافع کمانے کی حکمت عملی

جائزہ

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

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

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

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

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

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

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

طاقت کا تجزیہ

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

  1. اس کے علاوہ ، یہ ایک بہت بڑا منافع بخش مقام کے ساتھ منافع کے کچھ حصوں کو لاک کرنے کی اجازت دیتا ہے۔
  2. قیمتوں کو ٹریک کرنے کے لئے سلائڈ اسٹاپ کا استعمال کرتے ہوئے ، آپ کو PRODID یا نقصان کی واپسی کے امکانات کو کم کرنا چاہئے۔
  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)