متحرک ٹریلنگ سٹاپ نقصان کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-29 10:42:27
ٹیگز:

img

جائزہ

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

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

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

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

فوائد

  1. مسلسل ٹریلنگ سٹاپ نقصان کے ذریعے منافع میں مقفل، بہت زیادہ retracement کے کمرے دینے سے بچنے.

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

  3. سٹاپ نقصان کی ایڈجسٹمنٹ کے لئے ایک مسلسل فیصلے کے طریقہ کار کا استعمال کریں جس میں سادہ آپریشن اور آسان نفاذ ہو۔

  4. پیرامیٹرز کو اسٹاپ نقصان کی افادیت کو بہتر بنانے کے لئے مارکیٹ اور اسٹاک کی خصوصیات کے مطابق بہتر بنایا جاسکتا ہے۔

  5. مارکیٹ کے رجحانات کی پیش گوئی کرنے کی ضرورت نہیں، صرف رجحان کی پیروی کریں.

خطرات

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

  2. اچانک واقعات کی وجہ سے قیمت کے فرق کی صورت میں ، یہ نقصان کو روکنے میں ناکام ہوسکتا ہے۔ اس کے مطابق دیگر حفاظتی اقدامات کیے جائیں گے۔

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

  4. موافقت پذیری مضبوط نہیں ہے۔ یہ کچھ مراحل میں اچھی طرح سے کام نہیں کرتا ہے ، جیسے رینج سے وابستہ نقل و حرکت۔

انسداد اقدامات:

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

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

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

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

  3. مشین لرننگ کے ذریعے پیرامیٹرز کو خود بخود بہتر بنائیں۔ ٹریننگ کے نمونے کے طور پر حالیہ مدت میں مختلف پیرامیٹر مجموعوں کی واپسی کا انتخاب کریں۔

  4. کھلی پوزیشن کے معیار کو رجحان، سپورٹ اور مزاحمت جیسے اشارے پر غور کرتے ہوئے شامل کریں تاکہ مختلف مارکیٹوں میں پوزیشن کھولنے سے بچ سکیں۔

نتیجہ

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


/*backtest
start: 2023-11-28 00:00:00
end: 2023-12-17 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/
// © Thumpyr
//@version=5

/////////////////////////////////////////////////////////////////////////////////////////////
// Comment out Strategy Line and remove // from Indicator line to turn into Indicator  //////
// Do same for alertConidction at bottom                                               //////
/////////////////////////////////////////////////////////////////////////////////////////////
strategy("PCT Trailing Stoploss-Strategy", shorttitle="PCT Trailing Stoploss- Strategy", overlay=true)
//indicator(title="PCT Trailing Stoploss- Indicator", shorttitle="PCT Trailing Stoploss - Indicator", timeframe="", timeframe_gaps=true, overlay=true)//

sellLow=input.float(.035, minval=0, title="Stop Loss Loss: 1% = .01", group="Sell Settings")
trailStopArm=input.float(.0065, minval=0, title="Trailing Stop Arm: 1%=.01", group="Sell Settings")
trailStopPct=input.float(.003, minval=0, title="Trailing Stop Trigger: 1%=.01 ", group="Sell Settings")

/////////////////////////////////////////////////
//               Indicators                    //
/////////////////////////////////////////////////
ema1Len = input.int(14, minval=1, title=" ema 1 Length", group="Trend Line Settings")
ema1Src = input(close, title="ema 1 Source", group="Trend Line Settings")
ema1 = ta.ema(ema1Src, ema1Len)
plot(ema1, title="EMA", color=color.blue)

ema2Len = input.int(22, minval=1, title=" ema 2 Length", group="Trend Line Settings")
ema2Src = input(close, title="ema 2 Source", group="Trend Line Settings")
ema2 = ta.ema(ema2Src, ema2Len)
plot(ema2, title="EMA", color=color.orange)

ema3Len = input.int(200, minval=1, title=" ema 3 Length", group="Trend Line Settings")
ema3Src = input(close, title="ema 2 Source", group="Trend Line Settings")
ema3 = ta.ema(ema3Src, ema3Len)
plot(ema3, title="EMA", color=color.gray)


/////////////////////////////
////   Buy Conditions    ////
/////////////////////////////

alertBuy = ta.crossover(ema1,ema2) and close>ema3

////////////////////////////////////////////////////////////////////
////   Filter redundant Buy Signals if Sell has not happened    ////
////////////////////////////////////////////////////////////////////
var lastsignal = 0
showAlertBuy = 0
if(alertBuy and lastsignal !=1)
    showAlertBuy  := 1
    lastsignal      := 1
buyAlert= showAlertBuy > 0


//////////////////////////////////////////////////////////////////
////          Track Conditions at buy Signal                  ////
//////////////////////////////////////////////////////////////////

alertBuyValue = ta.valuewhen(buyAlert, close,0)
alertSellValueLow = alertBuyValue - (alertBuyValue*sellLow)

////////////////////////////////////////////////////////////
/////            Trailing Stop                         /////
////////////////////////////////////////////////////////////
var TSLActive=0         //Check to see if TSL has been activated
var TSLTriggerValue=0.0 //Initial and climbing value of TSL
var TSLStop = 0.0       //Sell Trigger
var TSLRunning =0       //Continuously check each bar to raise TSL or not

//  Check if a Buy has been triggered and set initial value for TSL //
if buyAlert
    TSLTriggerValue := alertBuyValue+(alertBuyValue*trailStopArm)
    TSLActive := 0
    TSLRunning :=1
    TSLStop := TSLTriggerValue - (TSLTriggerValue*trailStopPct)
    

//  Check that Buy has triggered and if Close has reached initial TSL//  
//  Keeps from setting Sell Signal before TSL has been armed w/TSLActive//
beginTrail=TSLRunning==1 and TSLActive==0 and close>alertBuyValue+(alertBuyValue*trailStopArm) and ta.crossover(close,TSLTriggerValue)
if beginTrail
    TSLTriggerValue :=close
    TSLActive :=1
    TSLStop :=TSLTriggerValue - (TSLTriggerValue*trailStopPct)
    
//  Continuously check if TSL needs to increase and set new value //    
runTrail= TSLActive==1 and (ta.crossover(close,TSLTriggerValue) or close>=TSLTriggerValue)
if runTrail
    TSLTriggerValue :=close
    TSLStop :=TSLTriggerValue - (TSLTriggerValue*trailStopPct)
    
//  Verify that TSL is active and trigger when close cross below TSL Stop//
TSL=TSLActive==1 and (ta.crossunder(close,TSLStop) or (close[1]>TSLStop and close<TSLStop)) 

// Plot point of inital arming of TSL//
TSLTrigger=TSLActive==1 and TSLActive[1]==0
plotshape(TSLTrigger, title='TSL Armed', location=location.abovebar, color=color.new(color.blue, 0), size=size.small, style=shape.cross, text='TSL Armed')


////////////////////////////////////////////////////////////
// Plots used for troubleshooting and verification of TSL //
////////////////////////////////////////////////////////////
//plot(TSLActive,"Trailing Stop", color=#f48fb1)
//plot(TSLRunning,"Trailing Stop", color=#f48fb1)
//plot(TSLTriggerValue,"Trailing Stop Trigger", color.new(color=#ec407a, transp = TSLRunning==1 ? 0 : 100))
//plot(TSLStop,"Trailing Stop", color.new(color=#f48fb1, transp = TSLRunning==1 ? 0 : 100))//


////////////////////////////////////////////////////////////
/////             Sell Conditions                    ///////
////////////////////////////////////////////////////////////
Sell1 = TSL
Sell2 = ta.crossunder(close,alertSellValueLow)

alertSell= Sell1 or Sell2
////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////
////        Remove Redundant Signals                    ////
////////////////////////////////////////////////////////////
showAlertSell = 0
if(alertSell and lastsignal != -1)
    showAlertSell := 1
    lastsignal      := -1
sellAlert= showAlertSell > 0

if sellAlert
    TSLActive :=0
    TSLRunning :=0

/////////////////////////////////////////
//  Plot Buy and Sell Shapes on Chart  //
/////////////////////////////////////////
plotshape(buyAlert, title='Buy', location=location.belowbar, color=color.new(color.green, 0), size=size.small, style=shape.triangleup, text='Buy')
plotshape(sellAlert, title='Sell', location=location.abovebar, color=color.new(color.red, 0), size=size.small, style=shape.triangledown, text='Sell')

/////////////////////////////////////////////////////////////////////////////////////////////
//                        Remove // to setup for Indicator                                 //
/////////////////////////////////////////////////////////////////////////////////////////////
//Alerts
//alertcondition(title='Buy Alert', condition=buyAlert, message='Buy Conditions are Met')
//alertcondition(title='Sell Alert', condition=sellAlert, message='Sell Conditions are Met')
/////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////
////  Comment out this section if setup as Indicator    ////
////////////////////////////////////////////////////////////
longCondition = buyAlert
if (longCondition)
    strategy.entry("Buy", strategy.long)
    alert(message='Buy', freq=alert.freq_once_per_bar_close)
    
shortCondition = sellAlert
if (shortCondition)
    strategy.close_all(sellAlert,"Sell")
    alert(message='Sell', freq=alert.freq_once_per_bar_close)
/////////////////////////////////////////////////////////////




مزید