मासिक रिटर्न दोहरी ध्रुवीकरण रणनीति


निर्माण तिथि: 2023-11-06 16:06:55 अंत में संशोधित करें: 2023-11-06 16:06:55
कॉपी: 0 क्लिक्स: 390
1
ध्यान केंद्रित करना
1212
समर्थक

मासिक रिटर्न दोहरी ध्रुवीकरण रणनीति

संक्षिप्त विवरण

यह रणनीति प्रवृत्ति को बदलने के लिए 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)