بہترین Slippage Trailing Stop Strategy


تخلیق کی تاریخ: 2023-09-21 20:58:22 آخر میں ترمیم کریں: 2023-09-21 20:58:22
کاپی: 0 کلکس کی تعداد: 741
1
پر توجہ دیں
1617
پیروکار

جائزہ

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

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

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

اس کے علاوہ ، اس میں نقصانات کو روکنے کے طریقہ کار کا ڈیزائن بھی شامل ہے:

  1. اسٹاپ نقصان شروع کرنے کی لائن ترتیب دیں۔ جب قیمت اس لائن کو توڑتی ہے تو ٹریکنگ اسٹاپ کو چالو کرنا شروع ہوتا ہے۔

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

  3. جب قیمت منفی سمت میں پلٹتی ہے اور ٹریکنگ اسٹاپ لائن کو چھوتی ہے تو ، پوزیشن کو روکنا۔

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

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

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

اسٹریٹجک رسک

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

خطرے کو کم کرنے کے لئے مندرجہ ذیل اقدامات کیے جاسکتے ہیں:

  • اوسط لائن کے دورانیے کو بہتر بنانا اور انٹری کی درستگی کو بہتر بنانا
  • مختلف لانچ لائن پیرامیٹرز کی جانچ اور بہترین مقام تلاش کریں
  • تاریخی ریٹائرمنٹ کی بنیاد پر ٹیسٹ کے لئے بہترین سلائڈ تناسب
  • دوبارہ داخلے کے مواقع پر غور کریں اور کمیوں کو کم کریں
  • دوسرے شرائط کو شامل کریں تاکہ آپ کو واپس آنے سے بچنے کے لۓ.

اصلاح کی سمت

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

  1. ڈبل اوسط مدت پیرامیٹرز کو بہتر بنائیں

مختلف فاسٹ لائن اور سست لائن مجموعہ پیرامیٹرز کی جانچ

  1. شروع لائن کو بہتر بنائیں یا حذف کریں

براہ راست ٹریکنگ سٹاپ نقصان کو فعال کریں یا مختلف اقسام کے مطابق مختلف پیرامیٹرز کو ترتیب دیں

  1. مختلف سلائڈ پوائنٹ تناسب پیرامیٹرز کی جانچ

مختلف اقسام کے لئے زیادہ سے زیادہ سٹاپ لوپ تناسب تلاش کریں

  1. دوبارہ داخلہ کے نظام میں شمولیت

اسٹاپ نقصان سے باہر نکلنے کے بعد دوبارہ داخل ہونے کے لئے شرائط طے کریں

  1. اتار چڑھاو کے مطابق سٹاپ نقصان کی طاقت کو ایڈجسٹ کریں

جب مارکیٹ میں اتار چڑھاؤ بڑھ جاتا ہے تو مناسب حد تک اسٹاپ نقصان کی حد میں نرمی کی جاسکتی ہے۔

خلاصہ کریں۔

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

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

//@version=4
//@author=Daveatt

SystemName = "BEST Trailing Stop Strategy"
TradeId = "BEST"

InitCapital = 100000
InitPosition = 100
InitCommission = 0.075
InitPyramidMax = 1
CalcOnorderFills = true
CalcOnTick = true
DefaultQtyType = strategy.fixed
DefaultQtyValue = strategy.fixed
Precision = 2
Overlay=true


// strategy(title=SystemName, shorttitle=SystemName, overlay=Overlay, 
//  pyramiding=InitPyramidMax, initial_capital=InitCapital, default_qty_type=DefaultQtyType, default_qty_value=InitPosition, commission_type=strategy.commission.percent, 
//  commission_value=InitCommission, calc_on_order_fills=CalcOnorderFills, calc_on_every_tick=CalcOnTick, precision=2)


src = close
// Calculate moving averages
fastSMA = sma(close, 15)
slowSMA = sma(close, 45)

// Calculate trading conditions
enterLong  = crossover(fastSMA, slowSMA)
enterShort = crossunder(fastSMA, slowSMA)

// trend states
since_buy  = barssince(enterLong)
since_sell = barssince(enterShort)
buy_trend  = since_sell > since_buy
sell_trend = since_sell < since_buy 

change_trend = (buy_trend and sell_trend[1]) or (sell_trend and buy_trend[1])

//plot(buy_trend ? 1 : 0, title='buy_trend', transp=100)
//plot(sell_trend ? 1 : 0, title='sell_trend', transp=100)

// get the entry price
entry_price = valuewhen(enterLong or enterShort, close, 0)

// Plot moving averages
plot(series=fastSMA, color=color.teal)
plot(series=slowSMA, color=color.orange)

// Plot the entries
plotshape(enterLong, style=shape.circle, location=location.belowbar, color=color.green, size=size.small)
plotshape(enterShort, style=shape.circle, location=location.abovebar, color=color.red, size=size.small)



///////////////////////////////
//======[ Trailing STOP ]======//
///////////////////////////////

// use SL?
useSL = input(true, "Use stop Loss")
// Configure trail stop level with input
StopTrailPerc = input(title="Trail Loss (%)", type=input.float, minval=0.0, step=0.1, defval=3) * 0.01
// Will trigger the take profit trailing once reached
use_SL_Trigger = input(true, "Use stop Loss Trigger")
StopTrailTrigger   = input(2.0, "SL Trigger (%)",minval=0,step=0.5,type=input.float) * 0.01


StopLossPriceTrigger = 0.0
StopLossPriceTrigger := if (use_SL_Trigger)
    if buy_trend
        entry_price * (1 + StopTrailTrigger) 
    else
        entry_price * (1 - StopTrailTrigger)
else
    -1


var SL_Trigger_Long_HIT = false
SL_Trigger_Long_HIT := useSL and use_SL_Trigger and buy_trend and high >= StopLossPriceTrigger
 ? true : SL_Trigger_Long_HIT[1]


var SL_Trigger_Short_HIT = false
SL_Trigger_Short_HIT := useSL and use_SL_Trigger and sell_trend and low <= StopLossPriceTrigger
 ? true : SL_Trigger_Short_HIT[1]


display_long_SL_trigger     = useSL and buy_trend  and use_SL_Trigger 
 and SL_Trigger_Long_HIT == false and StopLossPriceTrigger != -1
display_short_SL_trigger    = useSL and sell_trend and use_SL_Trigger 
 and SL_Trigger_Short_HIT == false and StopLossPriceTrigger != -1
display_SL_trigger          = display_long_SL_trigger or display_short_SL_trigger

plot(display_SL_trigger ? StopLossPriceTrigger : na, title='SLPriceTrigger', transp=0, 
 color=color.maroon, style=plot.style_circles, linewidth=3)


// Determine trail stop loss prices
longStopPrice = 0.0, shortStopPrice = 0.0

longStopPrice := if useSL and buy_trend
    stopValue = low * (1 - StopTrailPerc)
    max(stopValue, longStopPrice[1])
else
    0

shortStopPrice := if useSL and sell_trend
    stopValue = high * (1 + StopTrailPerc)
    min(stopValue, shortStopPrice[1])
else
    999999

//////////////////////////////////////////////////////////////////////////////////////////
//*** STOP LOSS HIT CONDITIONS TO BE USED IN ALERTS  ***//
//////////////////////////////////////////////////////////////////////////////////////////

cond_long_stop_loss_hit  = useSL and buy_trend and crossunder(low, longStopPrice[1]) 
 and (SL_Trigger_Long_HIT or use_SL_Trigger == false)
cond_short_stop_loss_hit = useSL and sell_trend and crossover(high, shortStopPrice[1]) 
 and (SL_Trigger_Short_HIT or use_SL_Trigger == false)


// Plot stop loss values for confirmation
plot(series=useSL and buy_trend and low >= longStopPrice 
 and (SL_Trigger_Long_HIT or use_SL_Trigger == false)
 ? longStopPrice : na,
 color=color.fuchsia, style=plot.style_cross,
 linewidth=2, title="Long Trail Stop")

plot(series=useSL and sell_trend and high <= shortStopPrice 
 and (SL_Trigger_Short_HIT or use_SL_Trigger == false)
 ? shortStopPrice : na,
 color=color.fuchsia, style=plot.style_cross,
 linewidth=2, title="Short Trail Stop")

close_long  = cond_long_stop_loss_hit
close_short = cond_short_stop_loss_hit

// Submit entry orders
strategy.entry(TradeId + " L", long=true, when=enterLong)
strategy.close(TradeId + " L", when=close_long)

//if (enterShort)
strategy.entry(TradeId + " S", long=false, when=enterShort)
strategy.close(TradeId + " S", when=close_short)


if change_trend
    SL_Trigger_Long_HIT := false
    SL_Trigger_Short_HIT := false