उच्च कम तोड़ने की रणनीति एक स्टॉक की ऐतिहासिक ऊंचाई और कम से नीचे का उपयोग कर एक प्रवृत्ति का पालन करने की रणनीति है, यह निर्धारित करने के लिए कि क्या कीमत इन उच्च कम से नीचे तोड़ दिया है. यह एक निश्चित अवधि में उच्चतम और निम्नतम मूल्य की गणना करके, जब वर्तमान अवधि की कीमत सबसे हाल ही में एक निश्चित अवधि के उच्चतम मूल्य से अधिक है, एक खरीद संकेत उत्पन्न करता है; जब कीमत सबसे हाल ही में एक निश्चित अवधि के निम्नतम मूल्य से नीचे गिर जाता है, तो एक बेचने का उत्पादन करता है। यह संकेत रणनीति एक प्रवृत्ति ट्रैकिंग रणनीति है, जो स्टॉक की कीमत की प्रवृत्ति की विशेषता को पकड़ सकती है, और इसका कुछ वास्तविक युद्ध मूल्य है।
इस रणनीति का मुख्य तर्क यह है कि एक निश्चित अवधि के भीतर उच्चतम और निम्नतम मूल्य की गणना की जाती है (डिफ़ॉल्ट 50 K लाइन) । उच्चतम और निम्नतम कीमतों की गणना करते समय, एक समापन मूल्य या उच्चतम और निम्नतम मूल्य (डिफ़ॉल्ट उच्चतम और निम्नतम का उपयोग करके) का चयन किया जा सकता है। फिर यह निर्धारित करें कि क्या वर्तमान K लाइन का समापन मूल्य या उच्चतम मूल्य हाल ही में एक निश्चित अवधि के भीतर उच्चतम मूल्य से अधिक है, और यदि यह है और एक निश्चित अवधि के भीतर उच्चतम मूल्य पहले से ही है (डिफ़ॉल्ट 30 K लाइन), तो एक खरीद संकेत उत्पन्न होता है। इसी तरह, यह निर्धारित करें कि वर्तमान K लाइन का समापन मूल्य या निम्नतम मूल्य हाल ही में एक निश्चित अवधि के भीतर निम्नतम मूल्य से कम है, और यदि एक निश्चित अवधि के भीतर निम्नतम मूल्य है, तो एक बिक्री संकेत उत्पन्न होता है।
जब एक खरीद संकेत उत्पन्न होता है, तो रणनीति उस कीमत पर खरीदती है और स्टॉप-लॉस और स्टॉप-प्रोइस सेट करती है। जब कीमत स्टॉप-लॉस को छूती है, तो रणनीति स्टॉप-लॉस और आउट हो जाती है; जब कीमत स्टॉप-प्रोइस को छूती है, तो रणनीति स्टॉप-आउट हो जाती है। सिग्नल को बेचने का तर्क भी इसी तरह है।
इस तरह की उच्च और निम्न दरार की रणनीति के कुछ फायदे हैंः
इस रणनीति के कुछ जोखिम भी हैं:
इन जोखिमों को नियंत्रित करने के लिए, निम्नलिखित तरीकों से अनुकूलन किया जा सकता हैः
उच्च और निम्न ब्रेकडाउन प्रतिक्रिया रणनीति को निम्नलिखित पहलुओं से अनुकूलित किया जा सकता हैः
पैरामीटर अनुकूलन: विभिन्न पैरामीटर संयोजनों को अधिक व्यवस्थित रूप से परीक्षण करके, सबसे अच्छा पैरामीटर पाया जा सकता है।
अन्य संकेतकों के साथ संयोजन में फ़िल्टर सिग्नल. उदाहरण के लिए, एक चलती औसत सूचक के साथ संयोजन किया जा सकता है, केवल जब कीमत उच्चतम मूल्य को तोड़ती है और लंबी अवधि के चलती औसत को एक छोटी अवधि के चलती औसत पर पार करती है, तो एक खरीद संकेत उत्पन्न होता है.
शेयर की कीमतों में उतार-चढ़ाव की आवृत्ति को ध्यान में रखें। उदाहरण के लिए, जब शेयर की कीमतों में उतार-चढ़ाव बढ़ जाता है, तो एटीआर सूचकांक के साथ संयोजन किया जा सकता है।
प्रवृत्ति वाले और अस्थिर बाजारों को अलग करें। प्रवृत्ति के स्पष्ट चरणों में, प्रवृत्ति का पालन करने के लिए पैरामीटर को उचित रूप से ढीला करें; अस्थिर बाजारों में, पैरामीटर को उचित रूप से कसें।
स्थिति प्रबंधन तंत्र को बढ़ाएं। उदाहरण के लिए, जब घाटा एक निश्चित अनुपात तक पहुंचता है तो स्थिति को रोकना।
कुल मिलाकर, उच्च या निम्न ब्रेकडाउन रीमेक रणनीति एक सरल और व्यावहारिक प्रवृत्ति ट्रैकिंग रणनीति है। यह यह निर्धारित करके व्यापार संकेतों का निर्धारण करता है कि क्या कीमतें एक निश्चित अवधि में उच्चतम और निम्नतम कीमतों को तोड़ती हैं। इस रणनीति में सरलता, प्रवृत्ति ट्रैकिंग और पैरामीटर अनुकूलन जैसे फायदे हैं, लेकिन इसमें अत्यधिक व्यापार उत्पन्न करने और उतार-चढ़ाव वाले बाजारों को संभालने में असमर्थता जैसे जोखिम भी हैं। हम इस रणनीति को पैरामीटर अनुकूलन, संकेतक फ़िल्टरिंग और स्थिति प्रबंधन जैसे कई पहलुओं से अनुकूलित कर सकते हैं, ताकि इसकी प्रभावशीलता को और बढ़ाया जा सके।
/*backtest
start: 2023-11-25 00:00:00
end: 2023-11-26 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("High/Low Breaker Backtest 1.0", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, max_bars_back=700)
// Strategy Settings
takeProfitPercentageLong = input(.1, title='Take Profit Percentage Long', type=float)/100
stopLossPercentageLong = input(0.15, title='Stop Loss Percentage Long', type=float)/100
takeProfitPercentageShort = input(.1, title='Take Profit Percentage Short', type=float)/100
stopLossPercentageShort = input(0.15, title='Stop Loss Percentage Short', type=float)/100
candlesBack = input(title="Number of candles back", defval=50)
useHighAndLows = input(true, title="Use high and lows (uncheck to use close)", defval=true)
lastBarsBackMinimum = input(title="Number of candles back to ignore for last high/low", defval=30)
showHighsAndLows = input(true, title="Show high/low lines", defval=true)
getIndexOfLowestInSeries(series, period) =>
index = 0
current = series
for i = 1 to period
if series[i] <= current
index := i
current := series[i]
index
getIndexOfHighestInSeries(series, period) =>
index = 0
current = series
for i = 1 to period
if series[i] >= current
index := i
current := series[i]
index
indexOfHighestInRange = getIndexOfHighestInSeries(useHighAndLows ? high : close, candlesBack)
indexOfLowestInRange = getIndexOfLowestInSeries(useHighAndLows ? low : close, candlesBack)
max = useHighAndLows ? high[indexOfHighestInRange] : close[indexOfHighestInRange]
min = useHighAndLows ? low[indexOfLowestInRange] : close[indexOfLowestInRange]
barsSinceLastHigh = indexOfHighestInRange
barsSinceLastLow = indexOfLowestInRange
isNewHigh = (useHighAndLows ? high > max[1] : close > max[1]) and (barsSinceLastHigh[1] + 1 > lastBarsBackMinimum)
isNewLow = (useHighAndLows ? low < min[1] : close < min[1]) and (barsSinceLastLow[1] + 1 > lastBarsBackMinimum)
alertcondition(condition=isNewHigh, title="New High", message="Last High Broken")
alertcondition(condition=isNewLow, title="New Low", message="Last Low Broken")
if high > max
max := high
barsSinceLastHigh := 0
if low < min
min := low
barsSinceLastLow := 0
plot( showHighsAndLows ? max : na, color=red, style=line, title="High", linewidth=3)
plot( showHighsAndLows ? min : na, color=green, style=line, title="Low", linewidth=3)
// Strategy Entry/Exit Logic
goLong =isNewHigh
longStopLevel = strategy.position_avg_price * (1 - stopLossPercentageLong)
longTakeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercentageLong)
goShort = isNewLow
shortStopLevel = strategy.position_avg_price * (1 + stopLossPercentageShort)
shortTakeProfitLevel = strategy.position_avg_price * (1 - takeProfitPercentageShort)
strategy.entry("Long", strategy.long, when=goLong)
strategy.exit("Long Exit", "Long", stop=longStopLevel, limit=longTakeProfitLevel)
strategy.entry("Short", strategy.short, when=goShort)
strategy.exit("Short Exit", "Short", stop=shortStopLevel, limit=shortTakeProfitLevel)
plot(goShort ? shortStopLevel : na, color=yellow, style=linebr, linewidth=2)
plot(goShort ? shortTakeProfitLevel : na, color=blue, style=linebr, linewidth=2)
plot(goLong ? longStopLevel : na, color=yellow, style=linebr, linewidth=2)
plot(goLong ? longTakeProfitLevel : na, color=blue, style=linebr, linewidth=2)