وسائل لوڈ ہو رہے ہیں... لوڈنگ...

متحرک باکس فی صد ٹریکنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-11-23 10:32:39
ٹیگز:

img

جائزہ

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

اصول

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

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

فوائد کا تجزیہ

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

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

خطرے کا تجزیہ

کچھ خطرات بھی ہیں:

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

ان خطرات سے بچنے کے لیے پیرامیٹرز جیسے رینج سائز، انٹری فلٹرز وغیرہ کو ایڈجسٹ کیا جا سکتا ہے۔

اصلاح

مزید اصلاحات کی گنجائش ہے:

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

نتیجہ

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


/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HermanBrummer 4 April 2021

strategy ("The Box Percent Strat", shorttitle="The Box", overlay = true)

///     Designed for LONG only on Daily, 2D or 3D Charts
///     Uses fixed investment risk amount, meaning you're willing to lose that amount per trade
///     Limit buy to not overpay

RiskPerTrade            = input(10000, "Risk losing this much per trade", tooltip="This calculates how much you will lose based on difference between the entry price and stop loss price")
TradeAboveMAFilterPer   = input(50, "The System won't trade if price is below this MA")

UpBoxSize               = (input(10, "Box size in %") * 0.01)+1 // 1.1 == 10% up
DnBoxSize               = 1-(input(10, "Box size in %") * 0.01) // 0.9 == 10% dn


var FirstBar            = close > 0 ? close : na
var FirstTop            = FirstBar * UpBoxSize
var FirstBot            = FirstBar * DnBoxSize


var top                 = sma(FirstTop, 1)
var bot                 = sma(FirstBot, 1)

///     The Box Calcs
if  high[2] > top
    top                 := top * UpBoxSize
    bot                 := bot * UpBoxSize
if  low[1]  < bot
    top                 := top * DnBoxSize
    bot                 := bot * DnBoxSize

 
plot(bot,   "Bot",      #ff0000) // Green
plot(top,   "Top",      #00ff00) // Red

mid                     = ((top-bot)/2)+bot 
plot(mid,   "Mid", color.gray)

TradeAboveMAFilter      = sma(close, TradeAboveMAFilterPer)
plot(TradeAboveMAFilter, "Trade AboveMAF Filter", color.yellow, 3, style=plot.style_circles)

// col = high[1] < top and high >= top ? color.white : na
// bgcolor(col)


///     Shares
RiskRange                   = close * abs(DnBoxSize - 1) // 0.9 - 1 == 1.10 // 10% abs so you don't get a neg number NB NB
Shares                      = RiskPerTrade / RiskRange 
//plot(close-RiskRange, "RiskRange", color.fuchsia)

Enter   =   high >= top
             and close[1] > TradeAboveMAFilter
             and strategy.opentrades[0] == strategy.opentrades[1]
             and strategy.opentrades[1] == strategy.opentrades[2] 
             and strategy.opentrades[2] == strategy.opentrades[3]
             and strategy.opentrades[3] == strategy.opentrades[4] 
             and strategy.opentrades[4] == strategy.opentrades[5]
             and strategy.opentrades[5] == strategy.opentrades[6]
             // won't enter if new positon was taken in the last 6 bars
             // need better code for this.

///     Buy & Sell
//  (new highs)    and  (Close above moving average filter) and (No new trades were taken receently)
if  Enter //(high >= top)  and  (close[1] > TradeAboveMAFilter) and strategy.opentrades[0] == strategy.opentrades[1] 
    strategy.order("En", strategy.long, qty=Shares, limit=top)//, stop=top)
    
//barcolor(strategy.position_size != 0 ? #00ff00 : color.gray)


// ///     If ONE Position THEN this Stop Because: 
// if  strategy.position_size == 1
//     strategy.exit("Ex", "En", stop=bot)
///     If it has more than one trad OPEN
if  strategy.position_size > 0
    strategy.exit("Ex", "En", stop=bot[2] )   // puts stop on old bot

//plot(strategy.position_avg_price, "Avg Price", color.yellow)





مزید