यह रणनीति ट्रेडिंग सिग्नल उत्पन्न करने के लिए बोलिंगर बैंड ब्रेकआउट का उपयोग करती है और दो सकारात्मक रूप से सहसंबंधित परिसंपत्तियों एमसीएल और वाईजी के बीच जोड़ी व्यापार को लागू करती है। जब एमसीएल मूल्य ऊपरी बैंड को छूता है तो यह एमसीएल और शॉर्ट वाईजी को लंबा करता है, और जब एमसीएल मूल्य निचले बैंड को छूता है तो यह मूल्य प्रवृत्ति के साथ व्यापार करने के लिए एमसीएल और शॉर्ट वाईजी को छोटा करता है।
सबसे पहले, रणनीति एक निश्चित अवधि के दौरान बंद कीमतों के आधार पर SMA लाइन और StdDev की गणना करती है। फिर यह बोलिंगर बैंड के ऊपरी और निचले बैंड बनाने के लिए SMA के ऊपर और नीचे एक ऑफसेट जोड़ती है। जब कीमत ऊपरी बैंड को छूती है तो एक खरीद संकेत उत्पन्न होता है, और जब कीमत निचले बैंड को छूती है तो एक बिक्री संकेत उत्पन्न होता है।
यह रणनीति बोलिंगर बैंड के ब्रेकआउट ट्रेडिंग लॉजिक का उपयोग करती है - जब कीमत ऊपरी बैंड से ऊपर टूटती है तो लंबी जाती है और जब कीमत निचले बैंड से नीचे टूटती है तो छोटी जाती है। बोलिंगर बैंड गतिशील रूप से बाजार की अस्थिरता के आधार पर बैंड की चौड़ाई को समायोजित करते हैं, जो रेंजिंग अवधि के दौरान बाजार शोर को फ़िल्टर करने में मदद करता है। निश्चित चैनल बैंड के विपरीत, बोलिंगर बैंड उच्च अस्थिरता के दौरान चौड़ा और कम अस्थिरता के दौरान संकीर्ण होता है। यह इसे उच्च अस्थिरता के दौरान कुछ शोर को फ़िल्टर करने और कम अस्थिरता के दौरान छोटे ब्रेकआउट को पकड़ने की अनुमति देता है।
यह दो सकारात्मक रूप से सहसंबंधित परिसंपत्तियों एमसीएल और वाईजी के बीच जोड़ी व्यापार को लागू करता है। जब एमसीएल ऊपरी बैंड से ऊपर टूट जाता है, तो यह दिखाता है कि एमसीएल एक अपट्रेंड में है। रणनीति लंबी एमसीएल और छोटी वाईजी जाती है - उनकी कीमतों में विचलन से लाभ उठाने के लिए मजबूत परिसंपत्ति खरीदना और कमजोर को बेचना।
मापदंडों को अनुकूलित करके, मजबूत सहसंबंध और तरलता वाली परिसंपत्तियों का चयन करके, उचित स्टॉप लॉस आदि स्थापित करके जोखिमों को कम किया जा सकता है।
कुल मिलाकर रणनीति सरल और सीधी है, बोलिंगर बैंड के साथ रुझानों को कैप्चर करना और जोड़ी व्यापार से अल्फा प्राप्त करना। लेकिन मापदंड ट्यूनिंग, स्टॉप लॉस और जोड़ी चयन में सुधार के लिए जगह है। मापदंडों, ट्रेडिंग वाहनों, प्रवृत्ति फिल्टर आदि के आगे परीक्षण से रणनीति प्रदर्शन में सुधार हो सकता है।
/*backtest start: 2022-11-07 00:00:00 end: 2023-11-13 00:00:00 period: 1d basePeriod: 1h 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/ // © shark792 //@version=5 // 1. Define strategy settings strategy(title="MCL-YG Pair Trading Strategy", overlay=true, pyramiding=0, initial_capital=10000, commission_type=strategy.commission.cash_per_order, commission_value=4, slippage=2) smaLength = input.int(title="SMA Length", defval=20) stdLength = input.int(title="StdDev Length", defval=20) ubOffset = input.float(title="Upper Band Offset", defval=1, step=0.5) lbOffset = input.float(title="Lower Band Offset", defval=1, step=0.5) usePosSize = input.bool(title="Use Position Sizing?", defval=true) riskPerc = input.float(title="Risk %", defval=0.5, step=0.25) // 2. Calculate strategy values smaValue = ta.sma(close, smaLength) stdDev = ta.stdev(close, stdLength) upperBand = smaValue + (stdDev * ubOffset) lowerBand = smaValue - (stdDev * lbOffset) riskEquity = (riskPerc / 100) * strategy.equity atrCurrency = (ta.atr(20) * syminfo.pointvalue) posSize = usePosSize ? math.floor(riskEquity / atrCurrency) : 1 // 3. Output strategy data plot(series=smaValue, title="SMA", color=color.teal) plot(series=upperBand, title="UB", color=color.green, linewidth=2) plot(series=lowerBand, title="LB", color=color.red, linewidth=2) // 4. Determine long trading conditions enterLong = ta.crossover(close, upperBand) exitLong = ta.crossunder(close, smaValue) // 5. Code short trading conditions enterShort = ta.crossunder(close, lowerBand) exitShort = ta.crossover(close, smaValue) // 6. Submit entry orders if enterLong strategy.entry(id="EL", direction=strategy.long, qty=posSize) if enterShort strategy.entry(id="ES", direction=strategy.short, qty=posSize) // 7. Submit exit orders strategy.close(id="EL", when=exitLong) strategy.close(id="ES", when=exitShort)