हाई लो ब्रेकर बैकटेस्ट रणनीति एक ट्रेंड-फॉलोइंग रणनीति है जो स्टॉक के ऐतिहासिक उच्च और निम्न स्तरों का उपयोग यह निर्धारित करने के लिए करती है कि क्या कीमत इन उच्च-निम्न सीमाओं से बाहर निकलती है। यह एक निश्चित अवधि में उच्चतम मूल्य और सबसे कम मूल्य की गणना करती है, और जब वर्तमान अवधि की कीमत हाल की अवधि में उच्चतम मूल्य से अधिक हो जाती है, तो खरीद संकेत उत्पन्न करती है, और बिक्री संकेत जब कीमत हाल की अवधि में सबसे कम मूल्य से नीचे टूट जाती है। एक प्रकार की ट्रेंड-फॉलोइंग रणनीति के रूप में, यह स्टॉक की कीमतों की कुछ ट्रेंडिंग विशेषताओं को पकड़ सकती है और लाइव ट्रेडिंग के लिए व्यावहारिक मूल्य है।
इस रणनीति का मूल तर्क एक निश्चित संख्या में सलाखों (डिफ़ॉल्ट 50 बार) पर उच्चतम मूल्य और सबसे कम मूल्य की गणना करना है। उच्चतम/सबसे कम कीमतों की गणना करते समय, यह बंद कीमतों या वास्तविक उच्च/निम्न कीमतों (उच्च/निम्न कीमतों का उपयोग करने के लिए डिफ़ॉल्ट) का उपयोग करने की अनुमति देता है। फिर यह जांचता है कि क्या वर्तमान बार की समापन मूल्य या उच्च मूल्य हाल की अवधि में उच्चतम मूल्य से अधिक है। यदि हां और यह पिछले उच्चतम मूल्य पट्टी के बाद से न्यूनतम संख्या में सलाखों (डिफ़ॉल्ट 30 बार) से अधिक है, तो यह एक खरीद संकेत उत्पन्न करता है। इसी तरह, यदि वर्तमान बार की समापन मूल्य या निम्न मूल्य हाल की अवधि में सबसे कम मूल्य को तोड़ता है और पिछले सबसे कम मूल्य पट्टी के बाद से न्यूनतम संख्या में सलाखों की संख्या, यह एक बेच संकेत उत्पन्न करता है।
खरीद संकेत उत्पन्न करने पर, रणनीति उस मूल्य पर लंबी स्थिति में प्रवेश करती है, जिसमें स्टॉप लॉस मूल्य और ले लाभ मूल्य निर्धारित होता है। यह स्टॉप लॉस मूल्य को छूने पर स्टॉप लॉस के साथ स्थिति से बाहर निकलता है, और ले लाभ मूल्य को छूने पर लाभ के साथ बाहर निकलता है। बिक्री संकेतों के लिए तर्क समान है।
इस उच्च निम्न ब्रेकर बैकटेस्ट रणनीति के निम्नलिखित फायदे हैंः
इस रणनीति में कुछ जोखिम भी हैं:
निम्नलिखित पहलू इन जोखिमों को कम करने में मदद कर सकते हैंः
इस रणनीति में निम्नलिखित तरीकों से सुधार किया जा सकता हैः
संक्षेप में, हाई लो ब्रेकर बैकटेस्ट रणनीति एक सरल और व्यावहारिक ट्रेंड-फॉलोइंग रणनीति है। यह समय-समय पर उच्चतम / निम्नतम कीमतों को तोड़ने के आधार पर ट्रेडिंग सिग्नल उत्पन्न करती है। रणनीति में सादगी, ट्रेंड-फॉलोइंग और पैरामीटर अनुकूलनशीलता जैसे फायदे हैं, लेकिन ओवर-ट्रेडिंग और दोलन बाजारों को संभालने में असमर्थता जैसे जोखिम भी हैं। इसके प्रदर्शन में सुधार के लिए पैरामीटर, सिग्नल फिल्टर, स्थिति आकार आदि के आसपास आगे अनुकूलन किया जा सकता है।
/*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)