ماہانہ واپسی بائپولر حکمت عملی


تخلیق کی تاریخ: 2023-11-06 16:06:55 آخر میں ترمیم کریں: 2023-11-06 16:06:55
کاپی: 0 کلکس کی تعداد: 391
1
پر توجہ دیں
1213
پیروکار

ماہانہ واپسی بائپولر حکمت عملی

جائزہ

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

حکمت عملی

  • استعمالpivothigh()اورpivotlow()فنکشن K لائن کے محور پوائنٹس کا حساب لگاتا ہے۔ محور پوائنٹس سے رجحان کی تبدیلی کا فیصلہ کیا جاسکتا ہے۔
  • جب قیمت اوپری محور پوائنٹ سے زیادہ ہو تو ، ایک سے زیادہ پوزیشن بنائیں۔ جب قیمت نیچے محور پوائنٹ سے نیچے ہو تو ، ایک مختصر پوزیشن بنائیں۔
  • ہر مہینے کے شروع میں ، پچھلے مہینے کی آمدنی کا حساب لگائیں ، اور اسے ایک صف میں محفوظ کریں۔
  • ہر سال کے آغاز میں ، پچھلے سال کی آمدنی کا حساب لگائیں ، اور اس کو صف میں محفوظ کریں۔
  • آمدنی کی شرح کی میزیں بنائیں تاکہ آپ ہر مہینے اور سال کی آمدنی کو دیکھ سکیں.

طاقت کا تجزیہ

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

خطرے کا تجزیہ

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

اصلاحی سمت

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

خلاصہ

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

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

//@version=4
strategy("Monthly Returns in PineScript Strategies", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 25, calc_on_every_tick = true, commission_type = strategy.commission.percent, commission_value = 0.1)

// Inputs 
leftBars  = input(2)
rightBars = input(1)
prec      = input(2, title = "Return Precision")

// Pivot Points 
swh = pivothigh(leftBars, rightBars)
swl = pivotlow(leftBars, rightBars)

hprice = 0.0
hprice := not na(swh) ? swh : hprice[1]

lprice = 0.0
lprice := not na(swl) ? swl : lprice[1]

le = false
le := not na(swh) ? true : (le[1] and high > hprice ? false : le[1])

se = false
se := not na(swl) ? true : (se[1] and low < lprice ? false : se[1])

if (le)
	strategy.entry("PivRevLE", strategy.long, comment="PivRevLE", stop=hprice + syminfo.mintick)

if (se)
	strategy.entry("PivRevSE", strategy.short, comment="PivRevSE", stop=lprice - syminfo.mintick)

plot(hprice, color = color.green, linewidth = 2)
plot(lprice, color = color.red,   linewidth = 2)

///////////////////
// MONTHLY TABLE //

new_month = month(time) != month(time[1])
new_year  = year(time)  != year(time[1])

eq = strategy.equity

bar_pnl = eq / eq[1] - 1

cur_month_pnl = 0.0
cur_year_pnl  = 0.0

// Current Monthly P&L
cur_month_pnl := new_month ? 0.0 : 
                 (1 + cur_month_pnl[1]) * (1 + bar_pnl) - 1 

// Current Yearly P&L
cur_year_pnl := new_year ? 0.0 : 
                 (1 + cur_year_pnl[1]) * (1 + bar_pnl) - 1  

// Arrays to store Yearly and Monthly P&Ls
var month_pnl  = array.new_float(0)
var month_time = array.new_int(0)

var year_pnl  = array.new_float(0)
var year_time = array.new_int(0)

if (not na(cur_month_pnl[1]) and (new_month or barstate.islast))
    array.push(month_pnl , cur_month_pnl[1])
    array.push(month_time, time[1])

if (not na(cur_year_pnl[1]) and (new_year or barstate.islast))
    array.push(year_pnl , cur_year_pnl[1])
    array.push(year_time, time[1])

// Monthly P&L Table    
var monthly_table = table(na)

if (barstate.islast)
    monthly_table := table.new(position.bottom_right, columns = 14, rows = array.size(year_pnl) + 1, border_width = 1)

    table.cell(monthly_table, 0,  0, "",     bgcolor = #cccccc)
    table.cell(monthly_table, 1,  0, "Jan",  bgcolor = #cccccc)
    table.cell(monthly_table, 2,  0, "Feb",  bgcolor = #cccccc)
    table.cell(monthly_table, 3,  0, "Mar",  bgcolor = #cccccc)
    table.cell(monthly_table, 4,  0, "Apr",  bgcolor = #cccccc)
    table.cell(monthly_table, 5,  0, "May",  bgcolor = #cccccc)
    table.cell(monthly_table, 6,  0, "Jun",  bgcolor = #cccccc)
    table.cell(monthly_table, 7,  0, "Jul",  bgcolor = #cccccc)
    table.cell(monthly_table, 8,  0, "Aug",  bgcolor = #cccccc)
    table.cell(monthly_table, 9,  0, "Sep",  bgcolor = #cccccc)
    table.cell(monthly_table, 10, 0, "Oct",  bgcolor = #cccccc)
    table.cell(monthly_table, 11, 0, "Nov",  bgcolor = #cccccc)
    table.cell(monthly_table, 12, 0, "Dec",  bgcolor = #cccccc)
    table.cell(monthly_table, 13, 0, "Year", bgcolor = #999999)


    for yi = 0 to array.size(year_pnl) - 1
        table.cell(monthly_table, 0,  yi + 1, tostring(year(array.get(year_time, yi))), bgcolor = #cccccc)
        
        y_color = array.get(year_pnl, yi) > 0 ? color.new(color.green, transp = 50) : color.new(color.red, transp = 50)
        table.cell(monthly_table, 13, yi + 1, tostring(round(array.get(year_pnl, yi) * 100, prec)), bgcolor = y_color)
        
    for mi = 0 to array.size(month_time) - 1
        m_row   = year(array.get(month_time, mi))  - year(array.get(year_time, 0)) + 1
        m_col   = month(array.get(month_time, mi)) 
        m_color = array.get(month_pnl, mi) > 0 ? color.new(color.green, transp = 70) : color.new(color.red, transp = 70)
        
        table.cell(monthly_table, m_col, m_row, tostring(round(array.get(month_pnl, mi) * 100, prec)), bgcolor = m_color)