अनुकूली बुलविंकल संकेतक लंबी-छोटी रणनीति


निर्माण तिथि: 2024-01-04 16:09:30 अंत में संशोधित करें: 2024-01-04 16:09:30
कॉपी: 0 क्लिक्स: 651
1
ध्यान केंद्रित करना
1621
समर्थक

अनुकूली बुलविंकल संकेतक लंबी-छोटी रणनीति

ओवरव्यू

यह रणनीति ब्वेंको सूचकांक पर आधारित है, जो बाजार के रुझानों को स्वचालित रूप से पहचानता है और खुले पदों की स्थापना करता है। यह ब्वेंको सूचकांक, चलती औसत और क्षैतिज समर्थन रेखा जैसे तकनीकी संकेतकों को एकीकृत करता है, जो स्वचालित रूप से ब्रेकआउट संकेतों की पहचान कर सकते हैं और पदों की स्थापना कर सकते हैं।

रणनीति सिद्धांत

इस रणनीति का केंद्रीय संकेतक ब्वेंको संकेतक है, जो विभिन्न ट्रेडिंग दिनों के समापन मूल्य के घातीय अंतर की गणना करके बाजार की प्रवृत्ति और महत्वपूर्ण समर्थन / प्रतिरोध स्तरों का आकलन करता है। जब संकेतक एक निश्चित क्षैतिज रेखा को पार करता है, तो यह अधिक होता है, और जब यह नीचे होता है, तो यह शून्य होता है।

इसके अलावा, यह रणनीति 21 वें, 55 वें और कई अन्य चलती औसत के साथ एक एईएमए सुरक्षात्मक बेल्ट को एकीकृत करती है। इन समरूपता के क्रमबद्ध संबंधों के आधार पर, यह निर्णय लिया जाता है कि वर्तमान में मल्टीहेड मार्केट, खाली हेड मार्केट या समेकित बाजार है, और तदनुसार, शून्य या बहु-ऑपरेशन को प्रतिबंधित करता है।

ब्वेंको सूचकांक के माध्यम से ट्रेडिंग सिग्नल की पहचान करें, और चलती औसत बाजार के चरणों का आकलन करें, दोनों का संयोजन अनुचित स्थिति निर्माण से बचा जा सकता है।

एडवांटेज विश्लेषण

इस रणनीति का सबसे बड़ा लाभ यह है कि यह स्वचालित रूप से बाजार के बहु-अंतर प्रवृत्तियों की पहचान कर सकता है। ब्वेंको सूचकांक दो समय अवधि के मूल्य अंतर के लिए बहुत संवेदनशील है, जो महत्वपूर्ण समर्थन प्रतिरोध को जल्दी से निर्धारित कर सकता है; साथ ही, चलती औसत की क्रमबद्धता वर्तमान स्थिति को अधिक या कम देखने के लिए प्रभावी ढंग से निर्धारित कर सकती है।

इस तरह के विचार, जो तेजी से संकेतकों और रुझान संकेतकों को जोड़ते हैं, रणनीति को खरीदने और बेचने के बिंदुओं को जल्दी से निर्धारित करने की अनुमति देते हैं, जबकि अनुचित खरीद को रोकते हैं। यह रणनीति का सबसे बड़ा लाभ है।

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

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

पहले बिंदु के जोखिम के लिए, ब्वेंको सूचकांक के मापदंडों को उचित रूप से समायोजित किया जा सकता है, सूचकांक की गणना चक्र को बढ़ाया जा सकता है, अनावश्यक ट्रेडों को कम किया जा सकता है; दूसरे बिंदु के जोखिम के लिए, अधिक चलती औसत जोड़ा जा सकता है, जिससे प्रवृत्ति का अधिक सटीक निर्धारण किया जा सके।

अनुकूलन दिशाएँ (Optimization Directions)

इस रणनीति का मुख्य अनुकूलन पैरामीटर को समायोजित करने और फ़िल्टरिंग शर्तों को बढ़ाने के लिए है।

ब्वेंको सूचकांक के लिए, आप विभिन्न आवधिक मापदंडों का प्रयास कर सकते हैं, और सबसे अच्छा पैरामीटर संयोजन पा सकते हैं; चलती औसत के लिए, आप अधिक औसत जोड़ना जारी रख सकते हैं, और अधिक पूर्ण प्रवृत्ति निर्णय प्रणाली बना सकते हैं। इसके अलावा, आप अस्थिरता दर सूचकांक, व्यापार मात्रा सूचकांक और अन्य फ़िल्टर शर्तों को जोड़ सकते हैं, झूठे संकेतों को कम करने के लिए।

पैरामीटर और शर्तों के समग्र समायोजन से रणनीति की स्थिरता और लाभप्रदता को और बढ़ाया जा सकता है।

सारांश

यह अनुकूलन बुविनकोडो रणनीति सफलतापूर्वक तेजी से संकेतक और प्रवृत्ति संकेतक को जोड़ती है, जो स्वचालित रूप से बाजार के महत्वपूर्ण बिंदुओं की पहचान कर सकती है और सही स्थिति बना सकती है। इसका लाभ यह है कि यह तेजी से स्थिति निर्धारित करने और अनुचित स्थिति बनाने से बचने की क्षमता है। अगले चरण में पैरामीटर और शर्तों के माध्यम से अनुकूलन किया जा सकता है, जिससे रणनीति की स्थिरता और लाभप्रदता को और बढ़ाया जा सकता है।

रणनीति स्रोत कोड
/*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)