इस रणनीति का मुख्य विचार यह है कि कीमतों के रुझानों को खोजने के लिए एक चिकनी प्रक्षेपण औसत की गणना करने के लिए एक चिकनी चलती औसत का उपयोग किया जाए, और जब कीमतें चिकनी प्रक्षेपण औसत के साथ फ्लिप होती हैं तो अधिक करें, और मृत फ्लिप होने पर खाली करें।
इस रणनीति में पहले एक फलन smoothedMovingAvg को परिभाषित किया जाता है, जो पिछले चक्र के मूविंग एवरेज और नवीनतम मूल्य को एक निश्चित भार के आधार पर वर्तमान चक्र के मूविंग एवरेज के लिए उपयोग करता है।
फिर एक फ़ंक्शन getHAClose को परिभाषित किया जाता है, जिसका उपयोग ओपनिंग मूल्य, उच्चतम मूल्य, निम्नतम मूल्य और समापन मूल्य के आधार पर प्रबुद्ध औसत रेखा के समापन मूल्य की गणना करने के लिए किया जाता है।
मुख्य रणनीति तर्क में, पहले विभिन्न चक्रों के लिए मूल मूल्य प्राप्त करें, फिर एक चिकनी चलती औसत की गणना करने के लिए smoothedMovingAvg फ़ंक्शन का उपयोग करें, और फिर एक चिकनी बंद करने की कीमत की गणना करने के लिए getHAClose फ़ंक्शन का उपयोग करें।
अंत में, जब कीमत ऊपर की ओर चिकनी हो जाती है, तो यह बंद होने पर अधिक होता है, और जब कीमत नीचे की ओर चिकनी होती है, तो यह खाली हो जाता है, और जब कीमत नीचे की ओर चिकनी होती है, तो यह बंद होने पर खाली हो जाता है।
इस रणनीति का सबसे बड़ा लाभ यह है कि एक चिकनी चलती औसत का उपयोग करके एक चिकनी प्रबुद्ध औसत की गणना की जाती है, जिससे कीमतों के रुझान का अधिक सटीक रूप से आकलन किया जा सकता है, कुछ शोर को फ़िल्टर किया जा सकता है, और अस्थिरता में गलत सिग्नल से बचा जा सकता है। इसके अलावा, प्रबुद्ध औसत अपने आप में एक प्रमुख प्रवृत्ति का लाभ है, और कीमतों के साथ संयोजन में उपयोग किया जाता है, जिससे निर्णय की सटीकता में और वृद्धि हो सकती है।
इस रणनीति के मुख्य जोखिमों में शामिल हैंः
उपरोक्त जोखिमों के लिए, हम समतल मापदंडों को समायोजित करके, स्टॉप-लॉस तंत्र की शुरुआत करके, और एकल व्यापार स्थिति को कम करके, जोखिम को कम करके और रणनीति की स्थिरता को बढ़ाकर जोखिम को कम कर सकते हैं।
इस रणनीति को निम्नलिखित पहलुओं से भी अनुकूलित किया जा सकता हैः
उपरोक्त कुछ बिंदुओं को अनुकूलित करके, रणनीति की अनुकूलन क्षमता और स्थिरता को बढ़ाने के लिए रणनीति की वक्रता के जोखिम को और कम किया जा सकता है।
इस रणनीति की समग्र विचारधारा स्पष्ट और समझने में आसान है, कीमतों के रुझानों का आकलन करने के लिए एक चिकनी और स्पष्ट औसत रेखा की गणना करके, और तदनुसार दीर्घकालिक अभ्यास करें। इसका सबसे बड़ा लाभ यह है कि कुछ शोर को फ़िल्टर किया जा सकता है, सिग्नल निर्णय की सटीकता में सुधार किया जा सकता है। लेकिन कुछ पैरामीटर अनुकूलन कठिनाई और तेजी से उलटफेर को याद करने का जोखिम भी है। अनुकूलन तंत्र की शुरूआत, संकेतक संयोजन का विस्तार आदि के माध्यम से इसे और अधिक अनुकूलित किया जा सकता है।
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Smoothed Heiken Ashi Strategy", overlay=true)
// Inputs
g_TimeframeSettings = 'Display & Timeframe Settings'
time_frame = input.timeframe(title='Timeframe for HA candle calculation', defval='', group=g_TimeframeSettings)
g_SmoothedHASettings = 'Smoothed HA Settings'
smoothedHALength = input.int(title='HA Price Input Smoothing Length', minval=1, maxval=500, step=1, defval=10, group=g_SmoothedHASettings)
// Define a function for calculating the smoothed moving average
smoothedMovingAvg(src, len) =>
smma = 0.0
smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len
smma
// Function to get Heiken Ashi close
getHAClose(o, h, l, c) =>
((o + h + l + c) / 4)
// Calculate smoothed HA candles
smoothedHAOpen = request.security(syminfo.tickerid, time_frame, open)
smoothedMA1close = smoothedMovingAvg(request.security(syminfo.tickerid, time_frame, close), smoothedHALength)
smoothedHAClose = getHAClose(smoothedHAOpen, smoothedHAOpen, smoothedHAOpen, smoothedMA1close)
// Plot Smoothed Heiken Ashi candles
plotcandle(open=smoothedHAOpen, high=smoothedHAOpen, low=smoothedHAOpen, close=smoothedHAClose, color=color.new(color.blue, 0), wickcolor=color.new(color.blue, 0))
// Strategy logic
longCondition = close > smoothedHAClose
shortCondition = close < smoothedHAClose
strategy.entry("Buy", strategy.long, when=longCondition)
strategy.close("Buy", when=shortCondition)
plotshape(series=longCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar)
plotshape(series=shortCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)