इस रणनीति में कई प्रतिशत स्टॉपआउट एक्जिट सेट करने की सुविधा है। रणनीति पहले लंबी और छोटी शर्तों का न्याय करती है, और प्रवेश में अधिक रिक्तियां होती हैं। फिर एक कस्टम प्रतिशतAsPoints फ़ंक्शन के माध्यम से प्रतिशत को मूल्य बिंदुओं में परिवर्तित करती है। कार्यक्रम ने सेट किए गए 1%, 2%, 3% और 4% स्टॉपआउट प्रतिशत के अनुसार 4 एक्जिट सेट किए हैं, साथ ही एक सामान्य 2% स्टॉपआउट एक्जिट भी सेट किया है। इस प्रकार कई प्रतिशत स्टॉपआउट का प्रभाव प्राप्त होता है।
यह रणनीति मुख्य रूप से एसएमए औसत रेखा के बहुआयामी क्रॉसिंग के माध्यम से प्रवेश का न्याय करती है। विशेष रूप से, जब तेज रेखा एसएमए 14 पर धीमी रेखा एसएमए 28 को पार करते हैं तो प्रवेश अधिक होता है; जब तेज रेखा एसएमए 14 के नीचे धीमी रेखा एसएमए 28 को पार करते हैं तो प्रवेश खाली होता है।
तो अब सवाल यह है कि एक से अधिक प्रतिशत को कैसे सेट किया जाए? यहाँ एक कस्टम percentAsPoints फ़ंक्शन का उपयोग किया जाता है जो प्रतिशत को मूल्य बिंदुओं में परिवर्तित करता है, फ़ंक्शन तर्क हैः
percentAsPoints(pcnt) =>
strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
यह फ़ंक्शन प्रतिशत का उपयोग करता है यदि होल्डिंग 0 नहीं है, तो होल्डिंग औसत मूल्य से गुणा करें और फिर न्यूनतम मूल्य पर विभाजित करें, मूल्य बिंदु प्राप्त करें। यदि होल्डिंग 0 है, तो n को लौटाएं।
इस फ़ंक्शन के साथ हम आसानी से प्रतिशत अंक संख्या को परिवर्तित कर सकते हैं। इसके बाद प्रोग्राम सेट किए गए 1%, 2%, 3% और 4% स्टॉप के अनुसार 4 exits सेट करता हैः
lossPnt = percentAsPoints(2)
strategy.exit("x1", qty_percent = 25, profit = percentAsPoints(1), loss = lossPnt)
strategy.exit("x2", qty_percent = 25, profit = percentAsPoints(2), loss = lossPnt)
strategy.exit("x3", qty_percent = 25, profit = percentAsPoints(3), loss = lossPnt)
strategy.exit("x4", profit = percentAsPoints(4), loss = lossPnt)
सभी exits एक सामान्य 2% स्टॉपलॉस का उपयोग करते हैं। यह कई प्रतिशत स्टॉपलॉस के प्रभाव को प्राप्त करता है।
इस तरह की बहु-प्रतिशत रोकथाम रणनीति के निम्नलिखित फायदे हैंः
आप अपने विभाग के अनुसार काम पर रोक लगा सकते हैं, ताकि अधिक लाभ के अवसरों को याद न करें। आम तौर पर, जितना अधिक पीछे की ओर रोक लगाएं, उतना ही अधिक जोखिम होता है। यह रणनीति जोखिम-लाभ को संतुलित कर सकती है।
स्टॉप-ऑफ-स्टॉप को विभाजित करने से पूंजी वापस आ सकती है, जोखिम कम हो सकता है। उदाहरण के लिए, 25% की मात्रा सेट करें, जब मुनाफा 1% हो, तो पूंजी का 1⁄4 वापस ले सकते हैं। इसके बाद की स्थिति मुनाफे पर आधारित है।
2 प्रतिशत की रोकथाम से चरम स्थितियों में भारी नुकसान से बचा जा सकता है।
कोड को सरल, स्पष्ट और समझने में आसान बनाने के लिए, इसे आसानी से संशोधित और अनुकूलित किया जा सकता है। कस्टम फ़ंक्शन प्रतिशत को अंक में परिवर्तित करता है, और फिर कोड की कुछ पंक्तियों के लिए कई स्टॉप सेट किए जा सकते हैं।
इस रणनीति के कुछ जोखिम भी हैं:
प्रतिशत स्टॉप-ऑफ्स के कारण, कीमतें स्टॉप-ऑफ्स के आसपास उतार-चढ़ाव कर सकती हैं। यह अक्सर स्टॉप-ऑफ्स को ट्रिगर करता है, जिससे ट्रेडिंग की आवृत्ति और प्रसंस्करण शुल्क का बोझ बढ़ जाता है।
थोक रोक-टोक से लेनदेन की संख्या बढ़ जाती है और शुल्क का बोझ भी बढ़ जाता है। यदि शुल्क बहुत अधिक है, तो लाभ के कुछ हिस्सों को ऑफसेट कर दिया जाएगा।
गलत स्टॉप पॉइंट सेटिंग भी रिटर्न दर को प्रभावित करती है। यदि सेटिंग बहुत रूढ़िवादी है, तो संतोषजनक रिटर्न प्राप्त करना मुश्किल है; और यदि सेटिंग बहुत कट्टरपंथी है, तो जोखिम बहुत अधिक है।
बाजार में उतार-चढ़ाव और रुझान को ध्यान में रखे बिना एक निश्चित प्रतिशत स्टॉप। उतार-चढ़ाव की स्थिति में स्टॉप को कम किया जाना चाहिए, जबकि रुझान की स्थिति में स्टॉप को बढ़ाया जाना चाहिए।
उपरोक्त जोखिमों को ध्यान में रखते हुए, निम्नलिखित पहलुओं पर अनुकूलन जारी रखा जा सकता हैः
रुकावट रणनीति को अनुकूलित करें ताकि यह बाजार में उतार-चढ़ाव और रुझानों के आधार पर स्वचालित रूप से समायोजित हो सके। जैसे कि एटीआर रुकावट को जोड़ना, रुकावट को कड़ा करना जब यह हिला हो, रुकावट को ढीला करना जब रुझान हो।
जोखिम-लाभ के इष्टतम संयोजन को प्राप्त करने के लिए बैच-रोक के अनुपात और आयाम का अनुकूलन करें। पैरामीटर अनुकूलन फ़ंक्शन जोड़ें और इष्टतम पैरामीटर का पता लगाएं।
स्टॉप की संख्या को कम करें और बहुत बार व्यापार करने से बचें। उदाहरण के लिए, एक मूल्य बफर क्षेत्र सेट करें, जो केवल एक निश्चित सीमा से अधिक होने पर बंद हो जाए।
प्रमोशन कारक को ध्यान में रखते हुए, जब स्टॉपबोन लाभ प्रमोशन से कम होने की उम्मीद होती है, तो स्टॉपबोन से अधिक न हो। या प्रमोशन के अनुसार स्टॉपबोन बढ़ोतरी का अनुकूलन करें।
बही-पुस्तिका का उपयोग करें स्टॉप-ऑफ. प्रस्ताव के अनुसार गहराई प्राथमिकता स्टॉप-ऑफ. गहराई प्राथमिकता मूल्य प्राथमिकता, स्टॉप-ऑफ की कीमत को स्थानांतरित करने से बचें.
यह रणनीति कई प्रतिशत स्टॉप-आउट के प्रभाव को प्राप्त करती है, जिसमें 1, 2, 3 और 4 प्रतिशत स्टॉप-आउट के चार सेट होते हैं, जो शिफ्ट पर स्टॉप-आउट कर सकते हैं, जबकि 2% स्टॉप-आउट के साथ असामान्य घटनाओं के भारी नुकसान को रोकने के लिए। यह रणनीति जोखिम-लाभ को संतुलित कर सकती है, जिससे अधिक पैसे कमाने के अवसरों को याद नहीं किया जा सकता है। लेकिन कुछ जोखिम भी हैं, जैसे कि क्रॉसओवर झटके, व्यापार की आवृत्ति में वृद्धि आदि। ये सुझाव रणनीति में अनुकूलन के लिए विचार करने योग्य हैं, ताकि यह अधिक बाजारों में स्थिर रूप से संचालित हो सके।
/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-30 00:00:00
period: 3h
basePeriod: 15m
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/
// © adolgov
//@version=4
strategy("Multiple %% profit exits example", overlay=false, default_qty_value = 10)
longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition)
strategy.entry("My Long Entry Id", strategy.long)
shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition)
strategy.entry("My Short Entry Id", strategy.short)
percentAsPoints(pcnt) =>
strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
lossPnt = percentAsPoints(2)
strategy.exit("x1", qty_percent = 25, profit = percentAsPoints(1), loss = lossPnt)
strategy.exit("x2", qty_percent = 25, profit = percentAsPoints(2), loss = lossPnt)
strategy.exit("x3", qty_percent = 25, profit = percentAsPoints(3), loss = lossPnt)
strategy.exit("x4", profit = percentAsPoints(4), loss = lossPnt)
profitPercent(price) =>
posSign = strategy.position_size > 0 ? 1 : strategy.position_size < 0 ? -1 : 0
(price - strategy.position_avg_price) / strategy.position_avg_price * posSign * 100
p1 = plot(profitPercent(high), style=plot.style_linebr, title = "open profit % upper bound")
p2 = plot(profitPercent(low), style=plot.style_linebr, title = "open profit % lower bound")
fill(p1, p2, color = color.red)