यह रणनीति कई घातीय चलती औसत (ईएमए), सापेक्ष शक्ति सूचकांक (आरएसआई) और संभावित खरीद और बिक्री के अवसरों की पहचान करने के लिए एक मानक विचलन-आधारित निकास स्थिति को जोड़ती है। यह बाजार के रुझानों की दिशा और ताकत का विश्लेषण करने के लिए अल्पकालिक (6, 8, 12 दिन), मध्यम अवधि (55 दिन), और दीर्घकालिक (150, 200, 250 दिन) ईएमए का उपयोग करता है। आरएसआई, कॉन्फ़िगर करने योग्य खरीद (30) और बिक्री (70) सीमाओं के साथ, गति का आकलन करने और ओवरबॉट या ओवरसोल्ड स्थितियों की पहचान करने के लिए नियोजित है। रणनीति में एक अद्वितीय निकास तंत्र भी शामिल है जो बंद होने की कीमत 12 दिनों के ईएमए से एक कॉन्फ़िगर करने योग्य मानक विचलन सीमा (डिफ़ॉल्ट 0.5) तक पहुंचने पर ट्रिगर होता है, जिससे मुनाफे की सुरक्षा या संभावित नुकसान को कम करने का एक तरीका प्रदान होता है।
इस लेख में कई चलती औसत, आरएसआई, और मानक विचलन निकास के आधार पर एक कैंडलस्टिक ऊंचाई ब्रेकआउट ट्रेडिंग रणनीति का प्रस्ताव है। रणनीति एक अद्वितीय मानक विचलन निकास तंत्र को नियोजित करते हुए प्रवृत्ति और गति दोनों आयामों से बाजार का विश्लेषण करती है ताकि प्रवृत्ति के अवसरों को कैप्चर किया जा सके और जोखिमों को प्रबंधित किया जा सके। रणनीति तर्क स्पष्ट, कठोर है, और कोड कार्यान्वयन संक्षिप्त और कुशल है। उचित अनुकूलन के साथ, इस रणनीति में एक मजबूत इंट्राडे मध्यम से उच्च आवृत्ति ट्रेडिंग रणनीति बनने की क्षमता है। हालांकि, यह ध्यान रखना महत्वपूर्ण है कि किसी भी रणनीति की अपनी सीमाएं हैं, और अंधा उपयोग जोखिम पेश कर सकता है। मात्रात्मक व्यापार एक यांत्रिक
/*backtest start: 2023-03-22 00:00:00 end: 2024-03-27 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Candle Height Breakout with Configurable Exit and Signal Control", shorttitle="CHB Single Signal", overlay=true) // Input parameters for EMA filter and its length useEmaFilter = input.bool(true, "Use EMA Filter", group="Entry Conditions") emaFilterLength = input.int(55, "EMA Filter Length", minval=1, group="Entry Conditions") candleCount = input.int(4, "SamG Configurable Candle Count for Entry", minval=3, maxval=4, step=1, group="Entry Conditions") exitEmaLength = input.int(12, "Exit EMA Length", minval=1, group="Exit Conditions", defval=12) exitStdDevMultiplier = input.float(0.5, "Exit Std Dev Multiplier", minval=0.1, maxval=2.0, step=0.1, group="Exit Conditions") // State variables to track if we are in a long or short position var bool inLong = false var bool inShort = false // Calculating EMAs with fixed periods for visual reference ema6 = ta.ema(close, 6) ema8 = ta.ema(close, 8) ema12 = ta.ema(close, 12) ema55 = ta.ema(close, 55) ema100 = ta.ema(close, 100) ema150 = ta.ema(close, 150) ema200 = ta.ema(close, 200) emaFilter = ta.ema(close, emaFilterLength) exitEma = ta.ema(close, exitEmaLength) // Plotting EMAs plot(ema6, "EMA 6", color=color.red) plot(ema8, "EMA 8", color=color.orange) plot(ema12, "EMA 12", color=color.yellow) plot(ema55, "EMA 55", color=color.green) plot(ema100, "EMA 100", color=color.blue) plot(ema150, "EMA 150", color=color.purple) plot(ema200, "EMA 200", color=color.fuchsia) plot(emaFilter, "EMA Filter", color=color.black) plot(exitEma, "Exit EMA", color=color.gray) // Calculating the highest and lowest of the last N candles based on user input highestOfN = ta.highest(high[1], candleCount) lowestOfN = ta.lowest(low[1], candleCount) // Entry Conditions with EMA Filter longEntryCondition = not inLong and not inShort and (close > highestOfN) and (not useEmaFilter or (useEmaFilter and close > emaFilter)) shortEntryCondition = not inLong and not inShort and (close < lowestOfN) and (not useEmaFilter or (useEmaFilter and close < emaFilter)) // Update position state on entry if (longEntryCondition) strategy.entry("Buy", strategy.long, comment="B") inLong := true inShort := false if (shortEntryCondition) strategy.entry("Sell", strategy.short, comment="S") inLong := false inShort := true // Exit Conditions based on configurable EMA and Std Dev Multiplier smaForExit = ta.sma(close, exitEmaLength) upperExitBand = smaForExit + exitStdDevMultiplier * ta.stdev(close, exitEmaLength) lowerExitBand = smaForExit - exitStdDevMultiplier * ta.stdev(close, exitEmaLength) exitConditionLong = inLong and (close < upperExitBand or close < exitEma) exitConditionShort = inShort and (close > lowerExitBand or close > exitEma) // Strategy exits if (exitConditionLong) strategy.close("Buy", comment="Exit") inLong := false if (exitConditionShort) strategy.close("Sell", comment="Exit") inShort := false // Visualizing entry and exit points plotshape(series=longEntryCondition, style=shape.labelup, location=location.belowbar, color=color.green, size=size.tiny, title="Buy Signal", text="B") plotshape(series=shortEntryCondition, style=shape.labeldown, location=location.abovebar, color=color.red, size=size.tiny, title="Sell Signal", text="S")