बोलिंगर बैंड ब्रेकआउट रणनीति

लेखक:चाओझांग, दिनांक: 2023-11-07 15:08:36
टैगः

img

अवलोकन

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

मापदंडों को ट्विक करने और इस रणनीति का बैकटेस्ट करने के लिए स्वतंत्र महसूस करें। किसी भी टिप्पणी या विचारों की सराहना की जाती है।

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

रणनीति तर्क

यह रणनीति प्रविष्टियों और निकासों को निर्धारित करने के लिए बोलिंगर बैंड और बैंडविड्थ का उपयोग करती है।

बोलिंगर बैंड में ऊपरी बैंड, मध्य बैंड और निचला बैंड शामिल हैं। मध्य बैंड एक एन-पीरियड सरल चलती औसत है, डिफ़ॉल्ट n = 16। ऊपरी बैंड मध्य बैंड + k * मानक विचलन है, निचला बैंड मध्य बैंड है - k * मानक विचलन, डिफ़ॉल्ट k = 3। जब कीमत ऊपरी बैंड के करीब आती है, तो यह ओवरवैल्यूएशन या ओवरबॉट का संकेत देती है। जब कीमत निचले बैंड के करीब आती है, तो यह अंडरवैल्यूएशन या ओवरसोल्ड का संकेत देती है।

बैंडविड्थ सूचक मध्य बैंड के सापेक्ष मूल्य की अस्थिरता दर्शाता है। यह (ऊपरी बैंड - निचला बैंड) / मध्य बैंड * 1000 द्वारा गणना की जाती है। जब बैंडविड्थ 20 से कम होता है, तो यह कम अस्थिरता या समेकन को दर्शाता है। जब बैंडविड्थ 50 से अधिक होता है, तो यह वृद्धिशील अस्थिरता का प्रतिनिधित्व करता है।

यह रणनीति लंबे अवसरों की तलाश करती है जब बैंडविड्थ 20-50 के बीच होती है और कीमत निचले बैंड से नीचे टूट जाती है। लंबे समय तक जाने के बाद, लाभ लेने के लिए प्रवेश मूल्य का 108% सेट किया जाता है, या जब कीमत ऊपरी बैंड से ऊपर टूट जाती है तो स्टॉप लॉस एक्जिट होता है।

लाभ विश्लेषण

इस रणनीति के लाभों में निम्नलिखित शामिल हैंः

  1. बोलिंगर बैंड्स ट्रेंड की दिशा को मापते हैं, जिससे झूठे ब्रेकआउट के जोखिम कम होते हैं

  2. बैंडविड्थ सिग्नल सटीक रूप से रेंज-बाउंड एक्शन का पता लगाता है, बड़े उतार-चढ़ाव से बड़े नुकसान से बचता है

  3. बैकटेस्ट में एक वर्ष में लगभग 80% लाभप्रदता दिखाई गई, अत्यधिक उच्च जोखिम-लाभ अनुपात

  4. अधिकतम 5 प्रतिशत से कम निकासी जोखिम को प्रभावी ढंग से नियंत्रित करती है और पोर्टफोलियो की स्थिर वृद्धि को बनाए रखती है

  5. सरल और स्पष्ट तर्क, समझने और लागू करने में आसान, विभिन्न परिसंपत्तियों पर व्यापक रूप से लागू

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

इस रणनीति के जोखिमों में निम्नलिखित शामिल हैंः

  1. खराब बोलिंगर पैरामीटर सेटिंग्स अच्छे ट्रेडिंग अवसरों को याद कर सकती हैं

  2. लगातार बुल या बियर बाजारों के दौरान कम ट्रेडिंग आवृत्ति, लाभप्रदता सीमित

  3. अपर्याप्त बैकटेस्ट डेटा, वास्तविक प्रदर्शन बैकटेस्ट से भिन्न हो सकता है

  4. चरम चाल के दौरान स्टॉप लॉस लिया जा सकता है, जिससे बड़े नुकसान हो सकते हैं

  5. उच्च लेनदेन लागत वास्तविक लाभ को भी कम करती है

समाधान:

  1. बाजार के आधार पर मापदंडों को अनुकूलित करें और बोलिंगर अवधि को समायोजित करें

  2. असामान्य बाजार स्थितियों से निपटने के लिए अतिरिक्त संकेतक पेश करना

  3. स्थिरता सत्यापित करने के लिए विभिन्न बाजारों में पर्याप्त डेटा और बैकटेस्ट एकत्र करना

  4. चरम चाल से बड़े नुकसान को रोकने के लिए उचित रूप से स्टॉप लॉस को समायोजित करें

  5. लेन-देन की लागत कम करने के लिए कम कमीशन वाले ट्रेडिंग प्लेटफार्मों का चयन करें

अनुकूलन दिशाएँ

इस रणनीति में निम्नलिखित पहलुओं में सुधार किया जा सकता हैः

  1. झूठे ब्रेकआउट से बचने के लिए वॉल्यूम पुष्टिकरण जोड़ें

  2. प्रवृत्ति की दिशा की पहचान करने के लिए प्रवृत्ति संकेतकों के साथ संयोजन

  3. मशीन लर्निंग का उपयोग पैरामीटर को ऑटो-ट्यून करने और बाजार के अनुकूल करने के लिए करें

  4. असंबद्ध परिसंपत्तियों के व्यापार से बचने के लिए सहसंबंध फ़िल्टर जोड़ें

  5. अपट्रेंड के दौरान अधिक लाभ के लिए लाभ/रोक हानि का अनुकूलन करें

  6. जीत दर बढ़ाने के लिए अधिक स्थिति फ़िल्टर पेश करें

  7. कई चक्रों से लाभ उठाने के लिए बहु-समय फ्रेम संयोजनों का परीक्षण करें

  8. जोखिम बढ़ाने के लिए सूचकांकित पोर्टफोलियो बनाएं

  9. नई रणनीतियों को स्वचालित रूप से उत्पन्न करने और सत्यापित करने के लिए मशीन लर्निंग का उपयोग करें

निष्कर्ष

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


/*backtest
start: 2023-10-30 00:00:00
end: 2023-11-06 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Bollinger Bands BAT/USDT 30min", overlay=true )

/// Indicators
///Bollinger Bands
source = close
length = input(16, minval=1)
mult = input(3, step=0.1, minval=0.001, maxval=50)
basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

plot(basis, color=color.red)
p1 = plot(upper, color=color.blue)
p2 = plot(lower, color=color.blue)
fill(p1, p2)

//Bollinger bands width
bbw = (upper-lower)/basis*1000
//plot(bbw, color=color.blue)

upper_bbw_input = input(title="BBW Upper Threshold", step=1, minval=0, defval=50)
lower_bbw_input = input(title="BBW Lower Threshold", step=1, minval=0, defval=20)


// Backtesting Period
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(2020, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true

// Take Profit
tp_inp = input(8, title='Take Profit %', step=0.1)/100
take_level = strategy.position_avg_price * (1 + tp_inp)

//Entry Strategy
entry_long = crossover(source, lower) and (bbw < upper_bbw_input) and (bbw > lower_bbw_input)
exit_long = cross(high,upper) or close < lower

if testPeriod()

    strategy.entry(id="LongBB", long=true, comment="LongBB", when=entry_long)
    strategy.exit("Take Profit Long","LongBB",limit=take_level)
    strategy.close(id="LongBB", when=exit_long )



अधिक