
এই কৌশলটি সূচক এবং চার্টগুলির মাধ্যমে একটি নির্দিষ্ট কৌশল এবং ট্রেডিং সিকিউরিটিগুলির ক্রয় এবং হোল্ডিংয়ের উপার্জনকে স্বজ্ঞাতভাবে তুলনা করে।
এই কৌশলটির কেন্দ্রীয় যুক্তি হল চারটি মূল উপাদানকে চিত্রিত করা যা একটি প্রদত্ত কৌশল এবং একটি ক্রয়-মালিকানা কৌশলগুলির মধ্যে পার্থক্যের তুলনা করেঃ
উপরের চারটি উপাদানকে তুলনা করে, কৌশল এবং সহজ ক্রয়-মালিকানা মধ্যে সুবিধাগুলি এবং অসুবিধাগুলি পরিষ্কারভাবে এবং স্বজ্ঞাতভাবে বোঝা যায়।
সহজ ক্রয়-ধারণা-লাভের তুলনায় এই কৌশলটির নিম্নলিখিত সুবিধাগুলি রয়েছেঃ
আরও ব্যাপক এবং বিস্তারিত তুলনামূলক সূচক। প্রতিটি কে লাইনের তুলনা, সামগ্রিক পরিসংখ্যানের তুলনা ইত্যাদি সহ, আমরা আরও স্পষ্টভাবে জানতে পারি যে কৌশলটি কোথায় জিতেছে বা কিনে রাখা হয়েছে।
স্বজ্ঞাত তুলনামূলক চার্ট। কৌশলটির নিট লাভ, ক্রয়-ধারণের নিট লাভ এবং উভয়ের পার্থক্যের চার্ট আঁকতে, এটি আমাদের কৌশলটির কার্যকারিতা আরও দ্রুত বিচার করতে দেয়।
কাস্টমাইজযোগ্য তুলনা সময়কাল আমরা একটি নির্দিষ্ট সময়কালের মধ্যে ক্রয় এবং হোল্ডিংয়ের তুলনায় শুধুমাত্র কৌশলটির উপর নজর রাখতে পারি, যাতে কৌশলটির পারফরম্যান্স আরও ভালভাবে বিশ্লেষণ করা যায়
সহজ এবং ব্যবহারযোগ্য এই নীতিটি সম্পূর্ণ তুলনা যুক্তি অন্তর্নির্মিত, আমরা শুধু আমাদের নিজস্ব নীতি কোড প্রতিস্থাপন টেমপ্লেট মধ্যে সংশ্লিষ্ট অবস্থান আছে কোন তুলনা যুক্তি নিজেকে লিখতে প্রয়োজন
এই কৌশলটি মূলত ট্রেডিং প্ল্যাটফর্মের সাথে যুক্ত ক্রয়-মালিকানা উপার্জন সূচকগুলির উপর নির্ভর করে। যদি এই অন্তর্নির্মিত সূচকটি বিচ্যুত হয় তবে এটি চূড়ান্ত তুলনা ফলাফলকে প্রভাবিত করবে। তদতিরিক্ত, কৌশলটিতে পরিসংখ্যান সূচকগুলির গণনা পদ্ধতিতে ত্রুটি থাকতে পারে যা কৌশল এবং ক্রয়-মালিকানা তুলনাগুলির মধ্যে শতভাগ নির্ভুলতার সাথে প্রতিফলিত করতে পারে না।
আপনি আরও বেঞ্চমার্কগুলির সাথে তুলনা করতে পারেন এবং আরও পরিসংখ্যানগত পদ্ধতি প্রবর্তন করে কৌশলটির কার্যকারিতা আরও যাচাই করতে পারেন। যদি ট্রেডিং প্ল্যাটফর্মটি আপগ্রেড করার পরে ক্রয়-মালিকানাধীন উপার্জন সূচকগুলির মধ্যে একটি বড় বিচ্যুতি ঘটে তবে কৌশলটির তুলনামূলক যুক্তিটি সামঞ্জস্য করতে হবে।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ
তিন পক্ষের বা একাধিক পক্ষের তুলনা করার জন্য আরও বেঞ্চমার্ক যুক্ত করুন। উদাহরণস্বরূপ, আপনি পিয়ার সূচক বা শিল্পের মানদণ্ডের তুলনা যুক্ত করতে পারেন।
আরও পরিসংখ্যান যোগ করা হয়েছে যেমন, বার্ষিক, ত্রৈমাসিক, সর্বোচ্চ প্রত্যাহারের সময়ের পার্থক্য ইত্যাদি। এটি আমাদেরকে কৌশলগুলিকে আরও মাত্রায় বুঝতে দেয়।
প্যারামিটারাইজড কনফিগারেশন যোগ করা হয়েছে। ব্যবহারকারীকে তুলনা করার সময়সীমার বাইরে আরও কিছু কাস্টমাইজ করতে দেয়, যেমন তুলনা বেঞ্চমার্ক, পরিসংখ্যান সূচক ইত্যাদি।
অপ্টিমাইজড চার্ট প্রদর্শন। বর্তমানে সহজ লাইন চার্ট প্রদর্শন করা কঠিন হতে পারে যে কৌশলটি ক্রয় এবং অধিগ্রহণের সাথে নির্দিষ্ট সময়ে তুলনা করা যায়। পিলার চার্ট আঁকতে বা পাঠযোগ্যতা বাড়ানোর জন্য চিহ্ন যুক্ত করার কথা বিবেচনা করা যেতে পারে।
এই কৌশলটি একাধিক বিস্তারিত তুলনামূলক সূচক এবং স্বজ্ঞাত চার্ট প্রদর্শনের নকশা দিয়ে তৈরি করা হয়েছে যাতে আমরা কাস্টমাইজড কৌশল এবং সহজ কেনা-মালিকানা কৌশলগুলির মধ্যে পার্থক্যটি খুব পরিষ্কারভাবে এবং সম্পূর্ণভাবে বুঝতে পারি, যা আমাদের কৌশলটির কার্যকারিতা আরও উন্নত করতে সহায়তা করে। এর কাস্টমাইজযোগ্য তুলনামূলক সময়কালও আমাদের বিভিন্ন পর্যায়ে কৌশলটির সুবিধাগুলি এবং অসুবিধাগুলি বিশ্লেষণ করার জন্য নমনীয়তা দেয়।
যদি আমরা বেঞ্চমার্ক, পরিসংখ্যান এবং গ্রাফিকাল উপস্থাপনাগুলিকে সমৃদ্ধ করতে থাকি, তবে এই কৌশলটি একটি অত্যন্ত শক্তিশালী কৌশল বিশ্লেষণ সরঞ্জাম হতে পারে। এটি আমাদের একটি টেমপ্লেট এবং কাঠামো সরবরাহ করে যা কৌশল বিশ্লেষণ এবং উন্নতির কাজকে আরও দক্ষ করে তোলে।
/*backtest
start: 2023-12-28 00:00:00
end: 2024-01-04 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("VS Buy Hold", precision=2)
bnh_info_panel = input(true, title='Enable Info Panel')
bnh_indicator_panel = input(true, title='Enable Indicator Panel')
//COMPARISON DATE RANGE//
bnh_FromYear = input(1970, title="From Year", minval=1970)
bnh_FromMonth = input(1, title="From Month", minval=1, maxval=12)
bnh_FromDay = input(1, title="From Day", minval=1, maxval=31)
bnh_ToYear = input(2050, title="To Year", minval=2010)
bnh_ToMonth = input(12, title="To Month", minval=1, maxval=12)
bnh_ToDay = input(31, title="To Day", minval=1, maxval=31)
bnh_start = timestamp(bnh_FromYear, bnh_FromMonth, bnh_FromDay, 00, 00)
bnh_finish = timestamp(bnh_ToYear, bnh_ToMonth, bnh_ToDay, 23, 59)
bnh_timeCond = time >= bnh_start and time <= bnh_finish ? true: false
//Note: If you are going to use the COMPARISON DATE RANGE above, apply bnh_timeCond
// to your strategy parameters.
/////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////STRATEGY SCRIPT START//////////////////////////////////
//=========================PLACEHOLDER MA CROSS STRATEGY=========================//
fastLength = 50
slowLength = 200
price = close
mafast = sma(price, fastLength)
maslow = sma(price, slowLength)
strategy.initial_capital = 50000
positionSize = strategy.initial_capital / close
if (crossover(mafast, maslow) and bnh_timeCond) // <= bnh_timeCond added as a condition
strategy.entry("MA2CrossLE", strategy.long, positionSize, comment="MA2CrossLE")
if (crossunder(mafast, maslow) and bnh_timeCond) // <= bnh_timeCond added as a condition
strategy.entry("MA2CrossSE", strategy.short, positionSize, comment="MA2CrossSE")
//////////////////////////////STRATEGY SCRIPT END////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
//STRATEGY EQUITY
strategy_pnl = strategy.netprofit + strategy.openprofit
bnh_strategy_pnl_pcnt = (strategy_pnl / strategy.initial_capital) * 100
//BUY AND HOLD EQUITY
float bnh_start_bar = na
bnh_start_bar := na(bnh_start_bar[1]) and bnh_timeCond? close : bnh_start_bar[1]
bnl_buy_hold_equity = ((close - bnh_start_bar)/bnh_start_bar) * 100
//STRATEGY VS BUY AND HOLD STATS
bnh_vs_diff = bnh_strategy_pnl_pcnt - bnl_buy_hold_equity
bnh_bar_counter = 0
bnh_bar_counter := bnh_vs_diff > 0 ? nz(bnh_bar_counter[1]) + 1 : bnh_bar_counter[1]
bnh_bar_counter2 = 0
bnh_bar_counter2 := bnh_vs_diff <= 0 ? nz(bnh_bar_counter2[1]) + 1 : bnh_bar_counter2[1]
bnh_pcnt_above = (bnh_bar_counter/(bnh_bar_counter + bnh_bar_counter2))*100
bnh_pcnt_below = (bnh_bar_counter2/(bnh_bar_counter + bnh_bar_counter2))*100
bnh_average_diff = cum(bnh_vs_diff) / (bnh_bar_counter + bnh_bar_counter2)
//PLOTS AND LABELS
bnh_diff_color = bnh_vs_diff > 0 ? color.green : color.red
plot(bnh_vs_diff, style=plot.style_columns, color=bnh_diff_color, transp=60, title='SvB')
plot(bnh_strategy_pnl_pcnt, color=color.yellow, linewidth=2, title="SR")
plot(bnl_buy_hold_equity, color=color.blue, title="BHR")
// draw_IndicatorLabel(_text, _x, _y, label_color, font_color)=>
// string_text = _text
// var label la_indicator = na
// label.delete(la_indicator)
// la_indicator := label.new(
// x=_x, y=_y,
// text=string_text, xloc=xloc.bar_index, yloc=yloc.price,
// color=label_color, style=label.style_labeldown, textcolor=font_color, size=size.small)
// draw_InfoPanel(_text, _x, _y, font_size)=>
// var label la_panel = na
// label.delete(la_panel)
// la_panel := label.new(
// x=_x, y=_y,
// text=_text, xloc=xloc.bar_time, yloc=yloc.price,
// color=color.new(#383838, 5), style=label.style_labelup, textcolor=color.white, size=font_size)
// if bnh_indicator_panel
// draw_IndicatorLabel("Difference", bar_index, bnh_vs_diff, color.new(color.gray, 40), color.white)
// draw_IndicatorLabel("Strategy P/L", bar_index, bnh_strategy_pnl_pcnt, color.new(color.yellow, 50), color.white)
// draw_IndicatorLabel("Buy & Hold P/L", bar_index, bnl_buy_hold_equity, color.new(color.blue, 50), color.white)
// info_panel_x = time_close + round(change(time) * 200)
// info_panel_y = max(max(bnl_buy_hold_equity, bnh_strategy_pnl_pcnt), bnh_vs_diff) + abs(bnh_vs_diff * 0.25)
// title = "STRATEGY vs BUY & HOLD STATS"
// row0 = "-----------------------------------------------------"
// row1 = 'Bars Above Buy & Hold: ' + tostring(bnh_pcnt_above, '#.##') + '%'
// row2 = 'Bars Below Buy & Hold: ' + tostring(bnh_pcnt_below, '#.##') + '%'
// row3 = 'All Time Ave. Difference: ' + tostring(bnh_average_diff, '#.##') + '%'
// panel_text = '\n' + title + '\n' + row0 + '\n' + row1 + '\n\n' + row2 + '\n\n' + row3 + '\n'
// if bnh_info_panel
// draw_InfoPanel(panel_text, info_panel_x, info_panel_y, size.normal)