यह रणनीति विभिन्न समय सीमाओं पर दो घातीय चलती औसत (ईएमए) की गणना करके सामान्य बाजार प्रवृत्ति दिशा निर्धारित करती है, और प्रवृत्ति व्यापार को लागू करने के लिए अनुकूलनशील बोलिंगर बैंड का उपयोग करके प्रवृत्ति दिशा के साथ ओवरबॉट और ओवरसोल्ड अवसरों की पहचान करती है।
200-पीरियड ईएमए और 30-पीरियड ईएमए की गणना की जाती है। यदि 200 ईएमए 30 ईएमए से अधिक है, तो दीर्घकालिक प्रवृत्ति ऊपर के रूप में निर्धारित की जाती है। अन्यथा, यह नीचे के रूप में निर्धारित की जाती है।
ट्रेंड की दिशा निर्धारित होने के बाद, बोलिंगर बैंड की आधार रेखा, ऊपरी बैंड और निचले बैंड की गणना की जाती है। आधार रेखा एक विन्यास योग्य समय सीमा (जैसे 8 अवधि) पर एसएमए को अपनाती है। बैंड चौड़ाई आधार रेखा के समान अवधि में उच्चतम और निम्नतम कीमतों के आयाम का एक विन्यास योग्य गुणक (जैसे 1.3 और 1.1) है।
जब दीर्घकालिक प्रवृत्ति ऊपर की ओर है, तो निचला बैंड ब्रेकआउट लंबी प्रविष्टि का संकेत देता है; जब दीर्घकालिक प्रवृत्ति नीचे की ओर है, तो ऊपरी बैंड ब्रेकआउट छोटी प्रविष्टि का संकेत देता है।
झूठे ब्रेकआउट को फ़िल्टर करने के लिए, ब्रेकआउट से पहले अंतिम कैंडल पर बदलाव की दर को एक कॉन्फ़िगर करने योग्य सीमा से नीचे की जाँच की जाती है (जैसे 3%), और बैंड चौड़ाई को एक कॉन्फ़िगर करने योग्य स्तर (जैसे बंद मूल्य का 2.2%) से अधिक की जाँच की जाती है।
पदों को खोलने के बाद, विन्यास योग्य स्टॉप लॉस (जैसे -3%) और लाभ लेने (जैसे 10%) को लाभ में लॉक करने के लिए सेट किया जाता है।
दोहरे ईएमए प्रमुख प्रवृत्ति को परिभाषित करते हैं और प्रमुख प्रवृत्ति अस्पष्ट होने पर अव्यवस्थित स्थिति खोलने से बचते हैं।
अनुकूलनशील बोलिंगर बैंड्स प्रवृत्ति के साथ प्रवेश बिंदु निर्धारित करते हैं। ऑटो चौड़ाई समायोजन प्रवृत्ति को और अधिक लॉक करता है।
परिवर्तन की दर और न्यूनतम चौड़ाई की आवश्यकताएं प्रभावी रूप से झूठे ब्रेकआउट को फ़िल्टर करती हैं।
स्टॉप लॉस और टेक प्रॉफिट सेटिंग्स जोखिम को नियंत्रण में रखते हुए लाभ को उचित रूप से लॉक करती हैं।
दोहरी ईएमए प्रवृत्ति उलट बिंदुओं का सटीक पता लगाने में विफल रहती है, प्रवृत्ति मोड़ बिंदुओं पर अवसर खो देती है।
गलत बीबी पैरामीटर सेटिंग्स गलत संकेत का कारण बन सकती हैं।
निश्चित स्टॉप लॉस और ले लाभ बाजार में उतार-चढ़ाव के अनुकूल नहीं हो सकते।
प्रमुख और द्वितीयक रुझान उलटने का निर्धारण करने के लिए अन्य संकेतकों को शामिल करें।
बीबी मापदंडों के गतिशील समायोजन को अपनाएं।
विशिष्ट मानदंडों के आधार पर स्टॉप लॉस और ले लाभ के लिए सशर्त आदेश सेट करें।
यह रणनीति दोहरे ईएमए का उपयोग करके प्रमुख प्रवृत्ति का न्याय करके और बोलिंगर बैंड के साथ अवसरों की पहचान करके प्रवृत्ति व्यापार को लागू करती है। इसकी ताकत प्रवृत्ति लाभों को लॉक करने के लिए प्रवेश, स्टॉप लॉस और लाभ लेने की शर्तों को उचित रूप से स्थापित करने में निहित है। कुछ जोखिम भी हैं, जैसे प्रवृत्ति मोड़ बिंदुओं और अनुचित बीबी पैरामीटर सेटिंग्स को पकड़ने में विफलता। इन पहलुओं में आगे अनुकूलन रणनीति को प्रवृत्ति लाभ को बेहतर ढंग से जब्त करने के लिए सशक्त बनाएगा।
/*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