इस रणनीति का मुख्य विचार दो लाभ लक्ष्य निर्धारित करना है और स्टॉप लॉस को स्टॉप लॉस शिकार से बचने के लिए पहले लक्ष्य तक पहुंचने के बाद प्रवेश मूल्य पर स्थानांतरित करना है।
यह रणनीति बोलिंगर बैंड और स्टोकेस्टिक संकेतकों के आधार पर ट्रेडों में प्रवेश करती है। जब कीमत बोलिंगर ऊपरी बैंड से अधिक हो जाती है तो यह कम हो जाती है और जब स्टोकेस्टिक ओवरसोल्ड दिखाता है तो लंबी हो जाती है।
विशेष रूप से, प्रविष्टि तर्क हैः
लॉन्ग तब दर्ज करें जब क्लोज बोलिंगर के निचले बैंड से नीचे हो और स्टोकेस्टिक के डी से नीचे हो।
शॉर्ट में प्रवेश करें जब बंद बोलिंगर के ऊपरी बैंड से ऊपर हो और स्टोकैस्टिक के डी से ऊपर हो।
रणनीति में दो लाभ लक्ष्य निर्धारित किए गए हैं, टीपी1 200 अंक और टीपी2 500 अंक पर निर्धारित है।
जब मूल्य में बदलाव होता है और टीपी1 ट्रिगर होता है, तो रणनीति स्टॉप लॉस को प्रवेश मूल्य पर ले जाएगी। यह पहले चरण से लाभ को लॉक करता है और स्टॉप लॉस शिकार को रोकता है।
यह रणनीति टीपी2 या स्टॉप लॉस ट्रिगर होने पर सभी पदों को बंद कर देती है।
इस दो-चरण स्टॉप लॉस दृष्टिकोण का सबसे बड़ा लाभ यह है कि यह स्टॉप लॉस शिकार को रोकते हुए मुनाफे में लॉक करने की अनुमति देता है। स्टॉप लॉस को प्रवेश मूल्य पर स्थानांतरित करके, यह स्टॉप लॉस शिकार की संभावना को कम करता है और मुनाफे की रक्षा करता है।
एक अन्य लाभ यह है कि अस्थिरता सीमा को मापने के लिए बोलिंगर बैंड और ओवरबॉट/ओवरसोल्ड के लिए स्टोकास्टिक का संयोजन अधिक सटीक प्रविष्टियों के लिए बनाता है।
मुख्य जोखिम बोलिंगर बैंड और स्टोकास्टिक संकेतकों के संभावित झूठे संकेतों से उत्पन्न होते हैं। गलत बोलिंगर रेंज से अनुपलब्ध प्रविष्टियां या खराब संकेत हो सकते हैं। स्टोकास्टिक झूठे ब्रेकआउट भी गलत प्रविष्टियों का कारण बनते हैं।
प्रवेश मूल्य पर जाने के बाद फिर से स्टॉप लॉस का शिकार होने का जोखिम भी है। वी-आकार के रिवर्स दूसरी बार स्टॉप लॉस को ट्रिगर कर सकते हैं।
इन जोखिमों को दोनों संकेतकों के लिए मापदंडों का अनुकूलन करके और स्टॉप लॉस के बीच की दूरी बढ़ाकर कम किया जा सकता है।
इस रणनीति के लिए आगे के अनुकूलनः
इष्टतम बोलिंगर और स्टोकैस्टिक मापदंडों को खोजने के लिए विभिन्न मापदंड संयोजनों का परीक्षण करें।
आदर्श विन्यास खोजने के लिए विभिन्न लाभ/हानि लक्ष्य का परीक्षण करें।
उच्च सटीकता के लिए बहु-निर्देशक प्रणाली बनाने के लिए चलती औसत जैसे अन्य संकेतक जोड़ें।
वैकल्पिक स्टॉप लॉस पोजिशनिंग लॉजिक का शोध करें, जैसे कि प्रवेश मूल्य के बजाय प्रवेश से निश्चित दूरी।
स्टॉप लॉस आंदोलन की घटनाओं को 3 या अधिक चरणों तक बढ़ाएं।
यह रणनीति प्रविष्टियों के लिए बोलिंगर बैंड और स्टोकास्टिक का उपयोग करती है, दो लाभ लक्ष्य निर्धारित करती है, और दो-चरण स्टॉप लॉस बनाने के लिए पहले लक्ष्य तक पहुंचने के बाद स्टॉप लॉस को प्रविष्टि में ले जाती है। यह प्रभावी रूप से मुनाफे में लॉक करता है और स्टॉप लॉस शिकार को रोकता है। रणनीति के स्पष्ट फायदे हैं लेकिन पैरामीटर अनुकूलन, बहु-सूचक प्रणालियों और स्टॉप लॉस लॉजिक समायोजन के माध्यम से सुधार के लिए भी जगह है।
/*backtest start: 2022-10-18 00:00:00 end: 2023-10-24 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/ // © fpsd4ve //@version=5 // Add Bollinger Bands indicator (close, 20, 2) manually to visualise trading conditions strategy("2xTP, SL to entry", overlay=false, pyramiding=0, calc_on_every_tick=false, default_qty_type=strategy.percent_of_equity, default_qty_value=25, initial_capital=1000, commission_type=strategy.commission.percent, commission_value=0.01 ) // PARAMETERS // Assumes quote currency is FIAT as with BTC/USDT pair tp1=input.float(200, title="Take Profit 1") tp2=input.float(500, title="Take Profit 2") sl=input.float(200, title="Stop Loss") stOBOS = input.bool(true, title="Use Stochastic overbought/oversold threshold") // Colors colorRed = #FF2052 colorGreen = #66FF00 // FUNCTIONS // Stochastic f_stochastic() => stoch = ta.stoch(close, high, low, 14) stoch_K = ta.sma(stoch, 3) stoch_D = ta.sma(stoch_K, 3) stRD = ta.crossunder(stoch_K, stoch_D) stGD = ta.crossover(stoch_K, stoch_D) [stoch_K, stoch_D, stRD, stGD] // VARIABLES [bbMiddle, bbUpper, bbLower] = ta.bb(close, 20, 2) [stoch_K, stoch_D, stRD, stGD] = f_stochastic() // ORDERS // Active Orders // Check if strategy has open positions inLong = strategy.position_size > 0 inShort = strategy.position_size < 0 // Check if strategy reduced position size in last bar longClose = strategy.position_size < strategy.position_size[1] shortClose = strategy.position_size > strategy.position_size[1] // Entry Conditions // Enter long when during last candle these conditions are true: // Candle high is greater than upper Bollinger Band // Stochastic K line crosses under D line and is oversold longCondition = stOBOS ? low[1] < bbLower[1] and stGD[1] and stoch_K[1] < 25 : low[1] < bbLower[1] and stGD[1] // Enter short when during last candle these conditions are true: // Candle low is lower than lower Bollinger Band // Stochastic K line crosses over D line and is overbought shortCondition = stOBOS ? high[1] > bbUpper[1] and stRD[1] and stoch_K[1] > 75 : high[1] > bbUpper[1] and stRD[1] // Exit Conditions // Calculate Take Profit longTP1 = strategy.position_avg_price + tp1 longTP2 = strategy.position_avg_price + tp2 shortTP1 = strategy.position_avg_price - tp1 shortTP2 = strategy.position_avg_price - tp2 // Calculate Stop Loss // Initialise variables var float longSL = 0.0 var float shortSL = 0.0 // When not in position, set stop loss using close price which is the price used during backtesting // When in a position, check to see if the position was reduced on the last bar // If it was, set stop loss to position entry price. Otherwise, maintain last stop loss value longSL := if inLong and ta.barssince(longClose) < ta.barssince(longCondition) strategy.position_avg_price else if inLong longSL[1] else close - sl shortSL := if inShort and ta.barssince(shortClose) < ta.barssince(shortCondition) strategy.position_avg_price else if inShort shortSL[1] else close + sl // Manage positions strategy.entry("Long", strategy.long, when=longCondition) strategy.exit("TP1/SL", from_entry="Long", qty_percent=50, limit=longTP1, stop=longSL) strategy.exit("TP2/SL", from_entry="Long", limit=longTP2, stop=longSL) strategy.entry("Short", strategy.short, when=shortCondition) strategy.exit("TP1/SL", from_entry="Short", qty_percent=50, limit=shortTP1, stop=shortSL) strategy.exit("TP2/SL", from_entry="Short", limit=shortTP2, stop=shortSL) // DRAW // Stochastic Chart plot(stoch_K, color=color.blue) plot(stoch_D, color=color.orange) // Circles plot(stOBOS ? stRD and stoch_K >= 75 ? stoch_D : na : stRD ? stoch_D : na, color=colorRed, style=plot.style_circles, linewidth=3) plot(stOBOS ? stGD and stoch_K <= 25 ? stoch_D : na : stGD ? stoch_K : na, color=colorGreen, style=plot.style_circles, linewidth=3) // Levels hline(75, linestyle=hline.style_dotted) hline(25, linestyle=hline.style_dotted)