डबल मूविंग एवरेज बोलिंगर बैंड ट्रेंड फॉलोइंग रणनीति


निर्माण तिथि: 2023-12-11 15:10:02 अंत में संशोधित करें: 2023-12-11 15:10:02
कॉपी: 0 क्लिक्स: 689
1
ध्यान केंद्रित करना
1621
समर्थक

डबल मूविंग एवरेज बोलिंगर बैंड ट्रेंड फॉलोइंग रणनीति

अवलोकन

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

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

  1. 200 चक्र और 30 चक्र ईएमए की गणना करें, 200 ईएमए 30 ईएमए से अधिक के लिए लंबी लाइन की प्रवृत्ति के रूप में निर्णय लें, अन्यथा इसे लंबी लाइन की प्रवृत्ति के रूप में निर्णय लें।

  2. प्रवृत्ति की दिशा निर्धारित करने के बाद, ब्रिन बैंड के आधार रेखा, ऊपरी और निचले रेल की गणना करें। आधार रेखा एक विन्यास अवधि का एसएमए है (जैसे 8 चक्र), और बैंडविड्थ उसी अवधि के उच्चतम और निम्नतम कीमतों के सबसे खराब विन्यास गुणांक का उपयोग करता है (जैसे 1.3 और 1.1) ।

  3. लंबी रेखा के ऊपर, जब कीमत नीचे से नीचे की ओर टूटती है, तो इसे खरीदने के लिए माना जाता है; लंबी रेखा के नीचे, जब कीमत ऊपर से नीचे की ओर टूटती है, तो इसे बेचने के लिए माना जाता है।

  4. झूठी दरारों को फ़िल्टर करने के लिए, यह जांचें कि क्या दरार होने पर पहले K लाइन में परिवर्तन की दर कॉन्फ़िगर करने योग्य मूल्य से कम है (जैसे 3%), और यह जांचें कि क्या बुलिन बैंड के ऊपर और नीचे के बीच की दूरी कॉन्फ़िगर करने योग्य दूरी की आवश्यकता से अधिक है (जैसे 2.2%) ।

  5. स्थिति खोलने के बाद विन्यास योग्य स्टॉप लॉस (जैसे 3%) और स्टॉप लॉस (जैसे 10%) सेट करें, ताकि मुनाफे को लॉक किया जा सके।

रणनीतिक लाभ

  1. डबल ईएमए मुख्य प्रवृत्ति का आकलन करता है, मुख्य प्रवृत्ति अज्ञात होने पर अव्यवस्थित स्थिति खोलने से बचता है।

  2. अनुकूलन ब्रीनिंग बैंड ने प्रवृत्ति के आधार पर बैंडविड्थ पैरामीटर को स्वचालित रूप से समायोजित करने के लिए प्रवृत्ति को और अधिक लॉक करने के लिए स्थिति खोलने का बिंदु निर्धारित किया।

  3. परिवर्तनशीलता और न्यूनतम बैंडविड्थ जांच तंत्र प्रभावी रूप से छद्म तोड़फोड़ को फ़िल्टर करता है।

  4. स्टॉप लॉस स्टॉप की सेटिंग उचित है, और लॉकिंग प्रॉफिट का जोखिम नियंत्रण योग्य है।

रणनीतिक जोखिम

  1. डबल ईएमए के लिए, यह संभव है कि यह एक महत्वपूर्ण मोड़ की संभावना को याद कर रहा है, क्योंकि यह मोड़ के बिंदु को सटीक रूप से नहीं बता सकता है।

  2. ब्रिन बैंड पैरामीटर्स की गलत सेटिंग से झूठा सिग्नल हो सकता है.

  3. फिक्स्ड स्टॉप लॉस स्टॉप बाजार में उतार-चढ़ाव के लिए अनुकूल नहीं है।

अनुकूलन दिशा

  1. अन्य संकेतकों के साथ प्रवृत्ति का आकलन करने के लिए, मुख्य प्रवृत्ति परिवर्तन बिंदु निर्धारित करें।

  2. ब्रिन बैंड पैरामीटर्स को गतिशील रूप से समायोजित करने की विधि

  3. एक-स्टॉप स्टॉप लॉस सेट करें और किसी विशेष स्थिति के अनुसार स्टॉप लाइन को समायोजित करें।

संक्षेप

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

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

//@version=3
//////////////////////////////////////////////////////////////////////
// Component Code Start
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2039, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
// Component Code Stop

strategy("Custom Band Strategy", overlay=true)
source = close //종가 기준

//추세 조건 설정
emaLong = ema(source, input(200, minval=0))
emaShort = ema(source, input(30, minval=0))
trend = if emaShort>=emaLong
    1
else
    -1
    
plot(emaLong, color=red, transp=0)
plot(emaShort, color=blue, transp=0)


//BB 계산(default 14/3.2)
length = input(8, minval=1)

basis = sma(source, length)
plot(basis, color=green, transp=0)
max=highest(abs(source-basis), length)

factor1 = input(1.3, minval=0.5)
factor2 = input(1.1, minval=0.5)

upper = if trend==1
    basis + max*factor1
else
    basis + max*factor2
lower = if trend==-1
    basis - max*factor1
else
    basis - max*factor2

plot1 = plot(upper)
plot2 = plot(lower)
fill(plot1, plot2, transp=80, color=green)

//밴드 이탈 후 재진입 조건 설정
cross_over = (low<=lower and close>=lower) or crossover(close,lower)
cross_under = (high>=upper and close<=upper) or crossunder(close,upper)

//변동율 계산
maxCandle=highest(abs(open-close), length)
    
roc = abs(open-close)/open*100
changerate = input(3, minval=0.0)

//수익률 계산
value = abs(strategy.position_size)*strategy.position_avg_price
roe = strategy.openprofit/value * 100
expRoeL = (upper-lower)/lower*100
expRoeS = (upper-lower)/upper*100
exp = input(2.2, minval=0.0)

target = input(10, minval=0.0)
stop = input(-3, minval=-10.0)

strategy.close_all(when=roc>=changerate and testPeriod())
strategy.close_all(when=roe>=target and testPeriod())
strategy.close_all(when=roe<=stop and testPeriod())

plotchar(crossover(close,lower) and crossunder(close,upper),color=blue, transp=0, text="cross")
plotchar(roc>=changerate,color=red, transp=0, text="roc")
plotchar(roe>=target,color=blue, transp=0, text="target")
plotchar(roe<=stop,color=green, transp=0, text="stop")

minroe = input(2, minval=0.0)

strategy.close_all(when=cross_under and roe>minroe and testPeriod())
strategy.entry("BBandLE", strategy.long, stop=source, oca_name="BollingerBands",  comment="BBandLE", when=(cross_over) and trend==1 and roc<changerate and expRoeL>exp and source>emaLong and strategy.position_size==0 and testPeriod()) //trend==1 and 
//else
strategy.close_all(when=cross_over and roe>minroe and testPeriod())
strategy.entry("BBandSE", strategy.short, stop=source, oca_name="BollingerBands",  comment="BBandSE", when=(cross_under) and trend==-1 and roc<changerate and expRoeS>exp and source<emaLong and strategy.position_size==0 and testPeriod()) //trend==-1 and