بہترین ٹریلنگ ٹیک پرافٹ حکمت عملی


تخلیق کی تاریخ: 2023-10-07 10:28:54 آخر میں ترمیم کریں: 2023-10-07 10:28:54
کاپی: 1 کلکس کی تعداد: 742
1
پر توجہ دیں
1617
پیروکار

جائزہ

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

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

اس حکمت عملی کے کچھ اہم حصے یہ ہیں:

  1. حساب کتاب تیز میڈین لائن اور سست میڈین لائن۔ یہاں تیز میڈین لائن کا دورانیہ 20 ہے ، سست میڈین لائن کا دورانیہ 50 ہے۔

  2. داخلہ کی شرائط کا فیصلہ کریں۔ تیز اوسط لائن پر سست اوسط لائن پر زیادہ کام کریں۔ تیز اوسط لائن کے نیچے سست اوسط لائن پر خالی کام کریں۔

  3. رجحان کی سمت کا تعین کریں۔ بار کی تعداد کو ریکارڈ کریں جو زیادہ اور کم ہے ، اور فیصلہ کریں کہ کیا موجودہ ایک ہیڈ رجحان ہے یا ہوائی رجحان ہے۔

  4. داخلے کی قیمت ٹریڈنگ سگنل کے وقت کی قیمت داخلے کی قیمت کے طور پر ریکارڈ کی گئی

  5. جب آپ زیادہ کام کرتے ہیں تو ، آپ کو اونچائی مل جاتی ہے۔(1 + سٹاپ فیصد) سٹاپ کے طور پر؛ جب خالی، کم سے کم ہو جائے گا(1- روک تھام فی صد) روک تھام کے طور پر.

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

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

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

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

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

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

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

اسٹریٹجک رسک

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

اس کے علاوہ، ہلچل کے دوران، سٹاپ لائن کے بار بار چلنے سے نقصان بھی ہوسکتا ہے.

آخر میں ، اگر پیرامیٹرز کو غیر مناسب طریقے سے ترتیب دیا گیا ہے ، جیسے کہ اسٹیمپ کا تناسب بہت بڑا ہے تو ، اس سے خطرہ بڑھ جاتا ہے۔

اس کے بجائے ، آپ کو اپنے اسٹاپ نقصان کو کنٹرول کرنے کی ضرورت ہوگی۔ آپ کو اپنے اسٹاپ نقصان کو کنٹرول کرنے کی ضرورت ہوگی۔

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

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

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

  2. اسٹارٹ اپ فنکشن کو بہتر بنائیں۔ مختلف اسٹارٹ اپ اسٹاپ سائز کو آزمائیں اور زیادہ مناسب ترتیبات تلاش کریں۔

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

  4. اسٹاپ کو شامل کریں۔ مناسب اسٹاپ پوزیشن قائم کریں ، خطرے پر قابو پالیں۔

  5. فلٹرنگ کی شرائط کو بہتر بنائیں۔ آپ فلٹرنگ کی دیگر شرائط کو شامل کرنے کی جانچ کرسکتے ہیں ، جیسے تجارت کا حجم ، اے ٹی آر اسٹاپ نقصان ، وغیرہ۔

  6. اشارے کی اشیاء کو بہتر بنانا۔ اس کا تجربہ مختلف اشاروں جیسے اسٹاک ، غیر ملکی کرنسی ، کریپٹو کرنسی وغیرہ میں کیا جاسکتا ہے۔

خلاصہ کریں۔

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

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

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

SystemName = "BEST Trailing Profit Strategy"
// This string is to personalize the text that appears with your orders on the chart through strategy() calls and entry/exit markers, and in the alert default message.
// Although leaving it empty will not cause problems in study mode,
TradeId = "BEST"
// These values are used both in the strategy() header and in the script's relevant inputs as default values so they match.
// Unless these values match in the script's Inputs and the TV backtesting Properties, results between them cannot be compared.
InitCapital = 1000000
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)


// strategy(title=SystemName, shorttitle=SystemName, overlay=true, 
//  pyramiding=0, default_qty_value=100, precision=7, currency=currency.USD,
//  commission_value=0.2,commission_type=strategy.commission.percent, initial_capital=10000)

//
//  Author:   Daveatt
//  Revision: R0.1 Beta
//  Date:     8-Dec-2019
//

// inputs

src   = input(defval=close, type=input.source, title="Source")

slowLength   = input(20, "Fast Length",minval=2,step=1)
fastLength   = input(50, "Fast Length",minval=2,step=1)

// Calculate moving averages
fastSMA = sma(src, slowLength)
slowSMA = sma(src, fastLength)

// 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])

// get the entry price
entry_price = valuewhen(enterLong or enterShort, src, 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)



///////////////////////////////
//======[ Take Profit ]======//
///////////////////////////////

// Use TP?
useTP = input(true, "Use take profit")
// TP trailing
ProfitTrailPerc     = input(1.0, "Trailing Profit (%)",minval=0,step=0.5,type=input.float) * 0.01

use_TP_Trigger = input(true, "Use Take Profit Trigger")
// Will trigger the take profit trailing once reached
takeProfitTrigger   = input(3.0, "Take Profit Trigger (%)",minval=0,step=0.5,type=input.float) * 0.01


// ttp := ttp>tp ? tp : ttp

takeprofitPriceTrigger = 0.0
takeprofitPriceTrigger := if (use_TP_Trigger)
    if (buy_trend)
        entry_price * (1 + takeProfitTrigger) 
    else
        entry_price * (1 - takeProfitTrigger)
else
    -1

//plot(entry_price, title='entry_price', transp=100)

var TP_Trigger_Long_HIT = false
TP_Trigger_Long_HIT := useTP and use_TP_Trigger and buy_trend and high >= takeprofitPriceTrigger
 ? true : TP_Trigger_Long_HIT[1]


var TP_Trigger_Short_HIT = false
TP_Trigger_Short_HIT := useTP and use_TP_Trigger and sell_trend and low <= takeprofitPriceTrigger
 ? true : TP_Trigger_Short_HIT[1]


display_long_TP_trigger     = useTP and buy_trend  and TP_Trigger_Long_HIT == false 
 and takeprofitPriceTrigger != -1
display_short_TP_trigger    = useTP and sell_trend and TP_Trigger_Short_HIT == false 
 and takeprofitPriceTrigger != -1
display_TP_trigger          = display_long_TP_trigger or display_short_TP_trigger


//🔷🔷🔷
// @hugo: Will display the TP trigger as long as not hit
// once the TP trigger is hit, the TP trailing will activate
plot(display_TP_trigger ? takeprofitPriceTrigger : na, title='takeprofitPriceTrigger', transp=0, color=color.orange, 
 style=plot.style_cross, linewidth=3)

longTrailTP= 0.0, shortTrailTP = 0.0

// Trailing Profit
// Start trailing once trigger is reached
longTrailTP := if useTP and buy_trend 
    tpValue = high * (1 + ProfitTrailPerc)
    max(tpValue, longTrailTP[1])
else
    0

shortTrailTP := if useTP and sell_trend
    tpValue = low * (1 - ProfitTrailPerc)
    min(tpValue, shortTrailTP[1])
else
    999999

//plot(longTrailTP, title='debug longTrailTP', transp=100)
//plot(shortTrailTP, title='debug shortTrailTP', transp=100)

//////////////////////////////////////////////////////////////////////////////////////////
//*** TRAILING TAKE PROFIT HIT CONDITIONS TO BE USED IN ALERTS  ***//
//////////////////////////////////////////////////////////////////////////////////////////


//🔷🔷🔷
// @hugo: I use crossover/crossunder for the alerts to trigger the events only once
cond_long_trail_tp_hit      = useTP and buy_trend   and crossover(high, longTrailTP[1]) 
 and (TP_Trigger_Long_HIT or use_TP_Trigger == false)
cond_short_trail_tp_hit     = useTP and sell_trend  and crossunder(low, shortTrailTP[1]) 
 and (TP_Trigger_Short_HIT or use_TP_Trigger == false)
// 🔷🔷🔷


// Plot take profits values for confirmation
// Display the trailing TP until not hit
plot(series= useTP and buy_trend and high <= longTrailTP and 
 (TP_Trigger_Long_HIT or use_TP_Trigger == false) ? longTrailTP : na,
 color=color.aqua, style=plot.style_circles,
 linewidth=2, title="Long Trail TP")

plot(series= useTP and sell_trend and low >= shortTrailTP and 
 (TP_Trigger_Short_HIT or use_TP_Trigger == false) ? shortTrailTP : na,
 color=color.aqua, style=plot.style_circles,
 linewidth=2, title="Short Trail TP")


close_long  = cond_long_trail_tp_hit
close_short = cond_short_trail_tp_hit

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

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


///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/////////////////////////////////// ALERTS ////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////
//* Put Entry Alerts below *//
//////////////////////////////

// IN STUDY MODE ONLY

// ⚠️⚠️⚠️ For alerts on the signal itself ⚠️⚠️⚠️
//alertcondition(buy_event, "Open Long", "LONG")
//alertcondition(sell_event, "Open Short", "SHORT")

// For the closes you will want to trigger these alerts on condition with alert 
// option "Once Per Bar" for TP and SL

if change_trend
    TP_Trigger_Long_HIT := false
    TP_Trigger_Short_HIT := false