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


تخلیق کی تاریخ: 2023-12-29 10:42:27 آخر میں ترمیم کریں: 2023-12-29 10:42:27
کاپی: 0 کلکس کی تعداد: 872
1
پر توجہ دیں
1617
پیروکار

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

جائزہ

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

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

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

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

اسٹریٹجک فوائد

  1. منافع کو روکنے کے لئے روکنے کے نقصانات کو ٹریک کرنے کے لۓ، زیادہ سے زیادہ واپسی کے مواقع کو روکنے سے بچنے کے لۓ.

  2. اپ اور ڈبل لائن سٹاپ نقصان کی ساخت کو اپنایا گیا ہے تاکہ اس بات کو یقینی بنایا جاسکے کہ اسٹاپ نقصان کی لائن بروقت پیروی کرسکتی ہے اور اس سے زیادہ نقصان کو روکا جاسکے۔

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

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

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

اسٹریٹجک رسک

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

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

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

  4. ان کی لچک بہت کم ہے اور وہ خاص مراحل میں کام نہیں کرتے، جیسے زلزلے کے دورانیے میں۔

ردعمل:

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

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

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

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

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

  4. پوزیشن کھولنے کے شرائط میں اضافہ کریں ، رجحانات ، معاونت اور مزاحمت جیسے اشارے کے ساتھ مل کر ، زلزلے کی صورتحال میں پوزیشن کھولنے سے گریز کریں۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*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)
/////////////////////////////////////////////////////////////