मासिक रिटर्न प्रदर्शन रणनीति


निर्माण तिथि: 2024-01-08 16:16:58 अंत में संशोधित करें: 2024-01-08 16:16:58
कॉपी: 2 क्लिक्स: 388
1
ध्यान केंद्रित करना
1141
समर्थक

मासिक रिटर्न प्रदर्शन रणनीति

अवलोकन

इस रणनीति का मुख्य कार्य वास्तविक समय में ट्रैक करना और मासिक आय के प्रदर्शन को प्रदर्शित करना है। यह एक तालिका में वास्तविक समय में मासिक विशिष्ट लाभ और हानि को अपडेट करता है।

सिद्धांत

इस रणनीति के माध्यम से मासिक आय के प्रदर्शन को ट्रैक करने के लिए निम्नलिखित चरणों का पालन किया जाता हैः

  1. परिभाषित करें कि क्या इस महीने कोई लेन-देन बराबरी पर है।
  2. एक चर को परिभाषित करें जो एक महीने के लिए विशिष्ट लाभ और हानि को दर्शाता है।
  3. वेरिएबल्स को परिभाषित करें
  4. जब इस महीने में कोई स्थिति होती है, तो इस महीने के लाभ और हानि को इस महीने के लिए संबंधित सरणी में दर्ज करें।
  5. तालिका में निर्दिष्ट स्थानों में महीने का शीर्षक दिखाएँ.
  6. मासिक आय-हानि के सरणी के माध्यम से, तालिका में संबंधित महीनों के लिए लाभ-हानि का मान दिखाएं।
  7. यह वर्ष की जानकारी भी दिखाता है।
  8. हर साल के घाटे को संक्षेप में प्रस्तुत करना।
  9. रंगों का उपयोग लाभ और हानि के लिए सकारात्मक-नकारात्मक को अलग करने के लिए किया जाता है

यह रणनीति के बुनियादी चरणों और काम करने के सिद्धांतों के बारे में है।

श्रेष्ठता विश्लेषण

इस तरह के मासिक लाभ-हानि के प्रदर्शन को ट्रैक करने की रणनीति के कुछ फायदे हैंः

  1. वास्तविक समय में अद्यतन, आप किसी भी समय नवीनतम मासिक लाभ और हानि देख सकते हैं।
  2. एक नज़र में, एक तालिका का उपयोग करें और एक महीने के लिए अपने लाभ और हानि को स्पष्ट रूप से प्रदर्शित करें।
  3. इस तरह की तस्वीरों को देखने के बाद, आपको पता चल जाएगा कि कौन-कौन सी तस्वीरें सही हैं।
  4. यह एक सहज तुलना है, रंगों का उपयोग करने से हर महीने के लाभ और हानि की तुलना करने में मदद मिलती है।
  5. राष्ट्रपति के खाते में, प्रत्येक वर्ष के लाभ और हानि का सारांश दिया गया है।
  6. अनुकूलन योग्य प्रदर्शन, जिसमें तालिकाओं के स्थान, आकार आदि को समायोजित किया जा सकता है।

जोखिम विश्लेषण

इस रणनीति के कुछ जोखिम भी हैं:

  1. गणना का तर्क जटिल है, और त्रुटियों के कारण डेटा गलत हो सकता है।
  2. तालिकाओं को बार-बार ताज़ा करने से प्रदर्शन प्रभावित हो सकता है।
  3. एरे डेटा की कम दक्षता।
  4. समय और महीने का रूपांतरण गलत हो सकता है।

जोखिम को निम्न तरीकों से कम किया जा सकता हैः

  1. कोड की सख्त समीक्षा, सुनिश्चित करें कि गणना तर्क सही है।
  2. फ़ॉर्म को रिफ्रेश करने की आवृत्ति को अनुकूलित करें और ओवर-रिफ्रेशिंग को रोकें
  3. डेटा को अधिक कुशल डेटा संरचनाओं के साथ संग्रहीत करें।
  4. समय और महीने परिवर्तित करने के लिए असामान्यताओं को जोड़ें

रणनीति अनुकूलन

इस रणनीति को निम्नलिखित पहलुओं से अनुकूलित किया जा सकता हैः

  1. अधिक कुशल डेटा संरचनाओं का उपयोग करें, जैसे कि शब्दकोश मासिक डेटा को संग्रहीत करता है।
  2. सालाना आय की गणना में वृद्धि
  3. और अन्य मापों को बढ़ाएं।
  4. आय वक्र के विकास को दर्शाने के लिए।
  5. कस्टम प्रारंभ और समाप्ति का समर्थन करें।
  6. डेटा को CSV फ़ाइलों में निर्यात करने का समर्थन करता है.

इन सुधारों से रणनीतियों की कार्यक्षमता बेहतर और अधिक शक्तिशाली हो सकती है और उपयोगकर्ता का अनुभव बेहतर हो सकता है।

संक्षेप

इस रणनीति का उपयोग करने के लिए सरणी और तालिकाओं का उपयोग करें, वास्तविक समय में ट्रैक करने और हर महीने की आय की स्थिति को प्रदर्शित करने के लिए अपने मुख्य कार्य को पूरा। यह सरल और कुशल है, और यह भी उपयोग करने के लिए सुविधाजनक है। यह भी कुछ फायदे हैं, लेकिन वहाँ भी कुछ जोखिम है कि से बचने के लिए कर रहे हैं। कुछ गणना तर्क और प्रदर्शन के अनुकूलन के माध्यम से, इस रणनीति को और अधिक सही और शक्तिशाली बना सकते हैं। कुल मिलाकर, यह एक बहुत ही व्यावहारिक मासिक आय प्रदर्शन ट्रैकिंग रणनीति है।

रणनीति स्रोत कोड
/*backtest
start: 2023-01-01 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © MAURYA_ALGO_TRADER

//@version=5
strategy("Monthly Performance", overlay=true)

period = input(20, "Length")

longCondition =   close > high[20]  //ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = close < low[20]  //ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)



// Copy below code to end of the desired strategy script
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//                                 monthly pnl performance  by Dr. Maurya @MAURYA_ALGO_TRADER                        //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
show_performance = input.bool(true, 'Show Monthly Monthly Performance ?', group='Monthly Performance')

dash_loc_mp = input("Bottom Right","Location"  ,options=["Top Right","Bottom Right","Top Left","Bottom Left", "Middle Right","Bottom Center"]  ,group='Monthly Performance', inline = "performance")

text_size_mp = input('Small',"Size"  ,options=["Tiny","Small","Normal","Large"]  ,group='Monthly Performance', inline = "performance")

var table_position_mp = dash_loc_mp == 'Top Left' ? position.top_left :
  dash_loc_mp == 'Bottom Left' ? position.bottom_left :
  dash_loc_mp == 'Middle Right' ? position.middle_right :
  dash_loc_mp == 'Bottom Center' ? position.bottom_center :
  dash_loc_mp == 'Top Right' ? position.top_right : position.bottom_right
  
var table_text_size_mp = text_size_mp == 'Tiny' ? size.tiny :
  text_size_mp == 'Small' ? size.small :
  text_size_mp == 'Normal' ? size.normal : size.large

/////////////////
text_c = color.white

/////////////////////////////////////////////

// var bool new_month = na
new_month = ta.change(month) //> 0 ? true : false
newest_month = new_month and strategy.closedtrades >= 1
strategy.initial_capital = 50000
// profit
only_profit = strategy.netprofit
initial_balance = strategy.initial_capital

// month number
var int month_number = na
month_number := (ta.valuewhen(newest_month, month(time), 0)) //and month(time) > 1 ? (ta.valuewhen(newest_month, month(time), 0) - 1) :  12 //1 to 12

//month_year
var int month_time = na
month_time := ta.valuewhen(newest_month, time, 0) - 2419200000 


var int m_counter = 0
if newest_month
    m_counter += 1



// current month values
var bool new_year = na
new_year := ta.change(year)
curr_m_pnl = only_profit - nz(ta.valuewhen(newest_month, only_profit, 0), 0)
curr_m_number = newest_month ? ta.valuewhen(newest_month, month(time), 0) : month(time)
curr_y_pnl = (only_profit - nz(ta.valuewhen(new_year, only_profit, 0),0)) 



var float [] net_profit_array = array.new_float()
var int [] month_array = array.new_int()
var int [] month_time_array = array.new_int()


if newest_month
    array.push(net_profit_array, only_profit)
    array.push(month_array, month_number)
    array.push(month_time_array, month_time)



var float [] y_pnl_array = array.new_float()
var int [] y_number_array = array.new_int()
var int [] y_time_array = array.new_int()

newest_year = ta.change(year) and strategy.closedtrades >= 1
get_yearly_pnl = nz(ta.valuewhen(newest_year, strategy.netprofit, 0) - nz(ta.valuewhen(newest_year, strategy.netprofit, 1), 0), 0)
get_m_year = ta.valuewhen(newest_year, year(time), 1)
get_y_time = ta.valuewhen(newest_year, time, 0)

if newest_year
    array.push(y_pnl_array, get_yearly_pnl)
    array.push(y_number_array, get_m_year)
    array.push(y_time_array, get_y_time)
var float monthly_profit = na
var int column_month_number = na
var int row_month_time = na

 


var testTable = table.new(position = table_position_mp, columns = 14, rows = 40, bgcolor = color.rgb(7, 226, 242, 38), border_color = color.white, border_width = 1)
if barstate.islastconfirmedhistory and show_performance
    table.cell(table_id = testTable, column = 0, row = 0, text = "YEAR", text_color = text_c, text_size=table_text_size_mp)
    table.cell(table_id = testTable, column = 1, row = 0, text = "JAN", text_color = text_c, text_size=table_text_size_mp)
    table.cell(table_id = testTable, column = 2, row = 0, text = "FEB", text_color = text_c, text_size=table_text_size_mp)
    table.cell(table_id = testTable, column = 3, row = 0, text = "MAR", text_color = text_c, text_size=table_text_size_mp)
    table.cell(table_id = testTable, column = 4, row = 0, text = "APR", text_color = text_c, text_size=table_text_size_mp)
    table.cell(table_id = testTable, column = 5, row = 0, text = "MAY", text_color = text_c, text_size=table_text_size_mp)
    table.cell(table_id = testTable, column = 6, row = 0, text = "JUN", text_color = text_c, text_size=table_text_size_mp)
    table.cell(table_id = testTable, column = 7, row = 0, text = "JUL", text_color = text_c, text_size=table_text_size_mp)
    table.cell(table_id = testTable, column = 8, row = 0, text = "AUG", text_color = text_c, text_size=table_text_size_mp)
    table.cell(table_id = testTable, column = 9, row = 0, text = "SEP", text_color = text_c, text_size=table_text_size_mp)
    table.cell(table_id = testTable, column = 10, row = 0, text = "OCT", text_color = text_c, text_size=table_text_size_mp)
    table.cell(table_id = testTable, column = 11, row = 0, text = "NOV", text_color = text_c, text_size=table_text_size_mp)
    table.cell(table_id = testTable, column = 12, row = 0, text = "DEC", text_color = text_c, text_size=table_text_size_mp)
    table.cell(table_id = testTable, column = 13, row = 0, text = "YEAR P/L", text_color = text_c, text_size=table_text_size_mp)

    for i = 0 to (array.size(y_number_array) == 0 ? na : array.size(y_number_array) - 1)
        row_y = year(array.get(y_time_array, i)) - year(array.get(y_time_array, 0)) + 1
        table.cell(table_id = testTable, column = 13, row = row_y, text = str.tostring(array.get(y_pnl_array , i), "##.##") + '\n' + '(' + str.tostring(array.get(y_pnl_array , i)*100/initial_balance, "##.##") + ' %)', bgcolor = array.get(y_pnl_array , i) > 0 ? color.green : array.get(y_pnl_array , i) < 0 ? color.red : color.gray, text_color = color.rgb(0, 0, 0), text_size=table_text_size_mp)
    curr_row_y = array.size(month_time_array) == 0 ? 1 : (year(array.get(month_time_array, array.size(month_time_array) - 1))) - (year(array.get(month_time_array, 0))) + 1
    table.cell(table_id = testTable, column = 13, row = curr_row_y, text = str.tostring(curr_y_pnl, "##.##") + '\n' + '(' + str.tostring(curr_y_pnl*100/initial_balance, "##.##") + ' %)', bgcolor = curr_y_pnl > 0 ? color.green : curr_y_pnl < 0 ? color.red : color.gray, text_color = color.rgb(0, 0, 0), text_size=table_text_size_mp)
    

    for i = 0 to (array.size(net_profit_array) == 0 ? na : array.size(net_profit_array) - 1)
        monthly_profit := i > 0 ? ( array.get(net_profit_array, i) - array.get(net_profit_array, i - 1) ) : array.get(net_profit_array, i) 
        column_month_number := month(array.get(month_time_array, i)) 
        row_month_time :=((year(array.get(month_time_array, i))) - year(array.get(month_time_array, 0)) ) + 1 
        table.cell(table_id = testTable, column = column_month_number, row = row_month_time, text = str.tostring(monthly_profit, "##.##") + '\n' + '(' + str.tostring(monthly_profit*100/initial_balance, "##.##") + ' %)', bgcolor = monthly_profit > 0 ? color.green : monthly_profit < 0 ? color.red : color.gray, text_color = text_c, text_size=table_text_size_mp)
        table.cell(table_id = testTable, column = 0, row =row_month_time, text = str.tostring(year(array.get(month_time_array, i)), "##.##"), text_color = text_c, text_size=table_text_size_mp)
       
    curr_row_m = array.size(month_time_array) == 0 ? 1 : (year(array.get(month_time_array, array.size(month_time_array) - 1))) - (year(array.get(month_time_array, 0))) + 1
    table.cell(table_id = testTable, column = curr_m_number, row = curr_row_m, text = str.tostring(curr_m_pnl, "##.##") + '\n' + '(' + str.tostring(curr_m_pnl*100/initial_balance, "##.##") + ' %)', bgcolor = curr_m_pnl > 0 ? color.green : curr_m_pnl < 0 ? color.red : color.gray, text_color = text_c, text_size=table_text_size_mp)
    table.cell(table_id = testTable, column = 0, row =curr_row_m, text = str.tostring(year(time), "##.##"), text_color = text_c, text_size=table_text_size_mp)

//============================================================================================================================================================================