
এই কৌশলটি বুভিনকো সূচকগুলির উপর ভিত্তি করে তৈরি করা হয়েছে যা স্বয়ংক্রিয়ভাবে বাজার প্রবণতা সনাক্ত করে এবং একটি খালি অবস্থান তৈরি করে। এটি বুভিনকো সূচক, চলমান গড় এবং অনুভূমিক সমর্থন লাইনগুলির মতো প্রযুক্তিগত সূচকগুলিকে সংহত করে যা স্বয়ংক্রিয়ভাবে ব্রেকিং সংকেতগুলি সনাক্ত করে এবং একটি অবস্থান তৈরি করে।
এই কৌশলটির কেন্দ্রীয় সূচক হল বুভিনকো সূচক, যা বিভিন্ন ট্রেডিং দিবসের সমাপ্তির মূল্যের হিসাব করে বাজারের প্রবণতা এবং গুরুত্বপূর্ণ সমর্থন/প্রতিরোধের স্তর নির্ধারণ করে। যখন সূচকটি একটি নির্দিষ্ট সমতল লাইন অতিক্রম করে তখন এটি বেশি হয়, যখন এটি অতিক্রম করে তখন এটি শূন্য হয়।
উপরন্তু, এই কৌশলটি 21 তম, 55 তম ইত্যাদির মতো একাধিক চলমান গড়ের সমন্বয়ে একটি ইএমএ সুরক্ষা ব্যান্ডকে সংহত করে। এই সমান্তরালের ক্রম সম্পর্ক অনুসারে সিদ্ধান্ত নেওয়া হয় যে এটি বর্তমানে মাল্টি-হেড বাজার, খালি হেড বাজার বা সমন্বয় বাজার এবং যথাযথভাবে খালি বা একাধিক অপারেশন সীমাবদ্ধ করে।
বুভিনকো সূচকের মাধ্যমে ট্রেডিং সিগন্যাল সনাক্ত করা হয় এবং মুভিং এভারেজ বাজার পর্যায়ের বিচার করে, উভয়ই ব্যবহার করা হয়, যা অপ্রয়োজনীয় অবস্থান স্থাপনের এড়াতে পারে।
এই কৌশলটির সবচেয়ে বড় সুবিধা হল যে এটি বাজারটির বহুমুখী প্রবণতা স্বয়ংক্রিয়ভাবে সনাক্ত করতে পারে। বুয়েনকো সূচকটি দুটি সময়সীমার দামের পার্থক্যের জন্য অত্যন্ত সংবেদনশীল, যা দ্রুত সমর্থনকারী প্রতিরোধের মূল অবস্থান নির্ধারণ করতে পারে। একই সাথে, চলমান গড়ের শ্রেণিবিন্যাসটি কার্যকরভাবে বর্তমান পরিস্থিতি নির্ধারণ করতে পারে।
এই ধারণার সাথে দ্রুত সূচক এবং প্রবণতা সূচক একত্রিত করা হয়েছে, যা কৌশলটিকে দ্রুত ক্রয়-বিক্রয় পয়েন্টগুলি সনাক্ত করতে দেয় এবং অপ্রয়োজনীয় ক্রয়-বিক্রয় প্রতিরোধ করে। এটি কৌশলটির সবচেয়ে বড় সুবিধা।
এই কৌশলটির ঝুঁকি মূলত দুটি দিক থেকে আসে, প্রথমত, বুভিনকো সূচকটি নিজেই দামের পরিবর্তনের জন্য অত্যন্ত সংবেদনশীল, যা অনেক অপ্রয়োজনীয় ট্রেডিং সংকেত তৈরি করতে পারে; দ্বিতীয়ত, চলমান গড়গুলি ক্রস-অর্ধে বিভ্রান্তিকরভাবে সাজানো হয়, যার ফলে অবস্থানগুলি বিভ্রান্তিকর হয়।
প্রথম ঝুঁকিটির জন্য, বুভিনকো সূচকের প্যারামিটারগুলি যথাযথভাবে সামঞ্জস্য করা যেতে পারে, সূচক গণনা চক্র বাড়ানো এবং অপ্রয়োজনীয় লেনদেন হ্রাস করা যেতে পারে; দ্বিতীয় ঝুঁকিটির জন্য, আরও চলমান গড় যুক্ত করা যেতে পারে, যা প্রবণতা আরও সঠিকভাবে বিচার করতে পারে।
এই কৌশলটির প্রধান অপ্টিমাইজেশান দিক হল প্যারামিটার সমন্বয় এবং ফিল্টার শর্তাবলী বৃদ্ধি করা।
বুভিনকো সূচকগুলির জন্য, আপনি বিভিন্ন পিরিয়ড প্যারামিটার চেষ্টা করতে পারেন এবং সর্বোত্তম প্যারামিটার সমন্বয় খুঁজে পেতে পারেন; চলমান গড়ের জন্য, আপনি আরও গড় যোগ করতে পারেন, যা আরও সম্পূর্ণ প্রবণতা বিচার সিস্টেম গঠন করে। এছাড়াও, অস্থিরতার সূচক, লেনদেনের পরিমাণ সূচক ইত্যাদি ফিল্টার শর্তগুলি যুক্ত করা যেতে পারে, যা মিথ্যা সংকেত হ্রাস করে।
প্যারামিটার এবং শর্তগুলির সমন্বিত সমন্বয় দ্বারা, কৌশলটির স্থিতিশীলতা এবং লাভজনকতা আরও বাড়ানো যেতে পারে।
এই স্বনির্ধারিত বুভিনকোডো কৌশলটি সফলভাবে দ্রুত সূচক এবং প্রবণতা সূচককে একত্রিত করে, যা স্বয়ংক্রিয়ভাবে বাজারের মূল পয়েন্টগুলি সনাক্ত করতে এবং সঠিক অবস্থান স্থাপন করতে পারে। এর সুবিধাটি হ’ল দ্রুত অবস্থান নির্ধারণ এবং অনুপযুক্ত অবস্থান স্থাপনের প্রতিরোধ করার ক্ষমতা। পরবর্তী পদক্ষেপটি প্যারামিটার এবং শর্তগুলির মাধ্যমে অপ্টিমাইজ করা যেতে পারে, কৌশলটির স্থিতিশীলতা এবং লাভজনকতার স্তরকে আরও বাড়িয়ে তুলতে পারে।
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 1m
basePeriod: 1m
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/
// © boftei
//@version=5
strategy("Boftei's Strategy", overlay=false, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, margin_long = 100, margin_short = 100, slippage=0, commission_type=strategy.commission.percent, commission_value = 0, initial_capital = 40, precision = 6)
strat_dir_input = input.string("all", "strategy direction", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
//////////////////////////////////////////////////////////////////////
//DATA
testStartYear = input(2005, "Backtest Start Year")
testStartMonth = input(7, "Backtest Start Month")
testStartDay = input(16, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
//////////////////////////////////////////////////////////////////////
sell = input.float(0.0065, "sell level")
buy = input.float(0, "buy level")
long1 = input.float(-0.493, "long retry - too low")
long2 = input.float(2, "long close up")
long3 = input.float(-1.5, "long close down")
short1 = input.float(1.26, "short retry - too high")
short2 = input.float(-5, "dead - close the short")
///< botvenko script
nn = input(60, "Histogram Period")
float x = 0
float z = 0
float k = 0
y = math.log(close[0]) - math.log(close[nn])
if y>0
x := y
else
k := y
//---------------------------------------------
plot(y > 0 ? x: 0, color = color.green, linewidth = 4)
plot(y <= 0 ? k: 0, color = color.maroon, linewidth = 4)
plot(y, color = color.yellow, linewidth = 1)
co = ta.crossover(y, buy)
cu = ta.crossunder(y, sell)
retry_long = ta.crossunder(y, long1)
deadline_long_up = ta.crossover(y, long2)
deadline_long_down = ta.crossunder(y, long3)
retry_short = ta.crossover(y, short1)
deadline_short = ta.crossunder(y, short2)
hline(buy, title='buy', color=color.green, linestyle=hline.style_dotted, linewidth=2)
hline(0, title='zero', color=color.white, linestyle=hline.style_dotted, linewidth=1)
hline(sell, title='sell', color=color.red, linestyle=hline.style_dotted, linewidth=2)
hline(long1, title='long retry', color=color.blue, linestyle=hline.style_dotted, linewidth=2)
hline(long2, title='overbought', color=color.teal, linestyle=hline.style_dotted, linewidth=2)
hline(long3, title='oversold', color=color.maroon, linestyle=hline.style_dotted, linewidth=2)
hline(short1, title='short retry', color=color.purple, linestyle=hline.style_dotted, linewidth=2)
hline(short2, title='too low to short - an asset may die', color=color.navy, linestyle=hline.style_dotted, linewidth=2)
////////////////////////////////////////////////////////////EMAprotectionBLOCK
ema_21 = ta.ema(close, 21)
ema_55 = ta.ema(close, 55)
ema_89 = ta.ema(close, 89)
ema_144 = ta.ema(close, 144)
//ema_233 = ta.ema(close, 233)
// ema_377 = ta.ema(close, 377)
long_st = ema_21>ema_55 and ema_55>ema_89 and ema_89>ema_144 //and ema_144>ema_233 and ema_233>ema_377
short_st = ema_21<ema_55 and ema_55<ema_89 and ema_89<ema_144 //and ema_144<ema_233 and ema_233<ema_377
g_v = long_st == true?3:0
r_v = short_st == true?-2:0
y_v = long_st != true and short_st != true?2:0
plot(math.log(ema_21), color = color.new(#ffaf5e, 50))
plot(math.log(ema_55), color = color.new(#b9ff5e, 50))
plot(math.log(ema_89), color = color.new(#5eff81, 50))
plot(math.log(ema_144), color = color.new(#5effe4, 50))
//plot(math.log(ema_233), color = color.new(#5e9fff, 50))
//plot(math.log(ema_377), color = color.new(#af5eff, 50))
plot(long_st == true?3:0, color = color.new(color.green, 65), linewidth = 5)
plot(short_st == true?-2:0, color = color.new(color.red, 65), linewidth = 5)
plot(long_st != true and short_st != true?2:0, color = color.new(color.yellow, 65), linewidth = 5)
////////////////////////////////////////////////////////////EMAprotectionBLOCK
if (co and testPeriod() and (g_v == 3 or y_v == 2))
strategy.close("OH BRO", comment = "EXIT-SHORT")
strategy.close("OH DUDE", comment = "EXIT-SHORT")
strategy.entry("OH DAMN", strategy.long, comment="ENTER-LONG 'co'")
if (retry_long and testPeriod() and (g_v == 3 or y_v == 2))
strategy.close("OH DAMN", comment = "EXIT-LONG")
strategy.entry("OH BRUH", strategy.long, comment="ENTER-LONG 'retry_long'")
if (cu and testPeriod() and (r_v == -2 or y_v == 2))
strategy.close("OH DAMN", comment = "EXIT-LONG")
strategy.close("OH BRUH", comment = "EXIT-LONG")
strategy.entry("OH BRO", strategy.short, comment="ENTER-SHORT 'cu'")
if (retry_short and testPeriod() and (r_v == -2 or y_v == 2))
strategy.close("OH BRO", comment = "EXIT-SHORT")
strategy.entry("OH DUDE", strategy.short, comment="ENTER-SHORT 'retry_short'")
if (deadline_long_up and testPeriod() or r_v == -2 and testPeriod())
strategy.close("OH DAMN", comment = "EXIT-LONG 'deadline_long_up'")
if (deadline_long_down and testPeriod())
strategy.close("OH DAMN", comment = "EXIT-LONG 'deadline_long_down'")
if (deadline_short and testPeriod() or g_v == 3 and testPeriod())
strategy.close("OH BRO", comment = "EXIT-SHORT 'deadline_short'")
// (you can use strategy.close_all(comment = "close all entries") here)