
यह रणनीति बाजार की प्रवृत्ति को निर्धारित करने के लिए उच्च, निम्न, औसत और सुपरट्रेंड सूचकांकों को जोड़ती है।
उच्च और निम्न सूचकांक का उपयोग करके यह निर्धारित करें कि क्या कीमतों ने हाल ही में एक निश्चित अवधि में नई ऊंचाई या नई निम्नता बनाई है, और स्कोर जमा करें। जब स्कोर बढ़ता है, तो यह बहुमुखी शक्ति को बढ़ाता है; जब स्कोर गिरता है, तो यह खाली शक्ति को बढ़ाता है।
औसत रेखा सूचक के माध्यम से, यह निर्धारित करें कि क्या कीमत एक नीचे की ओर सीढ़ीदार वृद्धि की प्रवृत्ति में है, या एक ऊपर की ओर सीढ़ीदार गिरावट की प्रवृत्ति में है। जब औसत रेखा एक सीढ़ीदार वृद्धि का प्रतिनिधित्व करती है, तो बहुमुखी ताकत बढ़ जाती है; जब औसत रेखा एक सीढ़ीदार गिरावट का प्रतिनिधित्व करती है, तो एक ओवरहेड ताकत बढ़ जाती है।
बाजार की प्रवृत्ति को निर्धारित करने के लिए उच्च, निम्न और औसत रेखा संकेतकों के निर्णय के परिणामों को मिलाएं; फिर सुपर ट्रेंड संकेतक की दिशा के साथ मिलकर, पोजीशन बनाने के अवसरों की तलाश करें। विशेष रूप से, जब उच्च, निम्न और औसत रेखा संकेतक दोनों बहुमुखी ताकत बढ़ाते हैं, और सुपर ट्रेंड संकेतक की दिशा नीचे की ओर होती है, तो एक लंबी पोजीशन बनाएं; जब उच्च, निम्न और औसत रेखा संकेतक दोनों शून्य ताकत बढ़ाते हैं, और सुपर ट्रेंड संकेतक की दिशा ऊपर की ओर होती है, तो एक खाली पोजीशन बनाएं।
उच्च और निम्न संकेतक मूल्य आंदोलन और शक्ति परिवर्तन को प्रभावी ढंग से निर्धारित कर सकते हैं, जबकि समानांतर संकेतक मूल्य प्रवृत्ति को प्रभावी ढंग से निर्धारित कर सकते हैं, दोनों के संयोजन से बाजार की दिशा का अधिक सटीक निर्धारण हो सकता है।
सुपरट्रेंड सूचकांक के साथ संयोजन में स्टॉक बनाने से स्टॉक को जल्दी या देर से स्थापित करने से बचा जा सकता है। सुपरट्रेंड सूचकांक मूल्य में बदलाव के बिंदुओं की पहचान करने के लिए प्रभावी है।
कई सूचकांक एक-दूसरे को सत्यापित करते हैं, जिससे झूठे संकेत कम हो जाते हैं।
यदि उच्च, निम्न और औसत संकेतक गलत संकेत देते हैं, तो घाटे का निर्माण हो सकता है।
यदि सहभागिता कम है, तो सुपरट्रेंड सूचक पैरामीटर गलत तरीके से सेट किए गए हैं, जो गलत संकेत दे सकते हैं।
यदि रुझान बहुत तेजी से बदल जाता है, तो गलत स्टॉप लॉस सेट हो सकता है, जिससे नुकसान हो सकता है।
सूचक मापदंडों को अनुकूलित करके जोखिम को कम किया जा सकता है, स्टॉप-लॉस बिट्स को समायोजित किया जा सकता है।
विभिन्न प्रकार के औसत सूचकांकों का परीक्षण करें और सर्वोत्तम पैरामीटर संयोजन की तलाश करें।
सिग्नल को अधिक स्थिर और विश्वसनीय बनाने के लिए उच्च, निम्न और औसत संकेतकों के पैरामीटर को अनुकूलित किया जा सकता है।
अन्य संकेतकों के साथ संयोजन में सत्यापित किया जा सकता है, जैसे कि एमएसीडी, केडी आदि, झूठे संकेतों को कम करने के लिए।
मशीन सीखने एल्गोरिदम के साथ स्वचालित रूप से पैरामीटर और सिग्नल वजन का अनुकूलन करें।
भावनात्मक विश्लेषण के साथ बाजार की गर्मी का आकलन करें, कम गर्मी वाली किस्मों का व्यापार करने से बचें।
इस रणनीति के माध्यम से उच्च और निम्न सूचक और औसत रेखा सूचक बाजार के रुझान और ताकत का आकलन करने के लिए, फिर सुपर ट्रेंड सूचक फिल्टर सिग्नल के साथ संयोजन में, बहु-क्षेत्र बल मुकाबला और सुपर ट्रेंड सूचक पलटाव पर स्थिति बनाने के लिए, कम जोखिम वाले व्यापार को प्राप्त करने के लिए। रणनीति का लाभ बहु-सूचक सत्यापन और समय पर स्थिति बनाने में है, जोखिम को प्रभावी ढंग से नियंत्रित किया जा सकता है। समस्या यह है कि झूठे संकेत और प्रवृत्ति का आकलन गलत है। पैरामीटर अनुकूलन, स्टॉप लॉस सेटिंग, सिग्नल फिल्टर आदि के माध्यम से कई तरीकों से सुधार किया जा सकता है, रणनीति अधिक स्थिर और विश्वसनीय है।
/*backtest
start: 2023-10-21 00:00:00
end: 2023-11-20 00:00:00
period: 1h
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/
// © HeWhoMustNotBeNamed
//@version=4
strategy("AlignedMA and Cumulative HighLow Strategy", overlay=true, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, commission_value = 0.01, calc_on_order_fills = true)
MAType = input(title="Moving Average Type", defval="sma", options=["ema", "sma", "hma", "rma", "vwma", "wma"])
includePartiallyAligned = input(true)
HighLowPeriod = input(50, minval=1,step=1)
LookbackPeriod = input(10, minval=1,step=1)
supertrendMult = input(2, minval=1, maxval=10, step=0.5)
supertrendLength = input(10, minval=1)
tradeDirection = input(title="Trade Direction", defval=strategy.direction.long, options=[strategy.direction.all, strategy.direction.long, strategy.direction.short])
backtestYears = input(10, minval=1, step=1)
f_getMovingAverage(source, MAType, length)=>
ma = sma(source, length)
if(MAType == "ema")
ma := ema(source,length)
if(MAType == "hma")
ma := hma(source,length)
if(MAType == "rma")
ma := rma(source,length)
if(MAType == "vwma")
ma := vwma(source,length)
if(MAType == "wma")
ma := wma(source,length)
ma
f_getMaAlignment(MAType, includePartiallyAligned)=>
ma5 = f_getMovingAverage(close,MAType,5)
ma10 = f_getMovingAverage(close,MAType,10)
ma20 = f_getMovingAverage(close,MAType,20)
ma30 = f_getMovingAverage(close,MAType,30)
ma50 = f_getMovingAverage(close,MAType,50)
ma100 = f_getMovingAverage(close,MAType,100)
ma200 = f_getMovingAverage(close,MAType,200)
upwardScore = 0
upwardScore := close > ma5? upwardScore+1:upwardScore
upwardScore := ma5 > ma10? upwardScore+1:upwardScore
upwardScore := ma10 > ma20? upwardScore+1:upwardScore
upwardScore := ma20 > ma30? upwardScore+1:upwardScore
upwardScore := ma30 > ma50? upwardScore+1:upwardScore
upwardScore := ma50 > ma100? upwardScore+1:upwardScore
upwardScore := ma100 > ma200? upwardScore+1:upwardScore
upwards = close > ma5 and ma5 > ma10 and ma10 > ma20 and ma20 > ma30 and ma30 > ma50 and ma50 > ma100 and ma100 > ma200
downwards = close < ma5 and ma5 < ma10 and ma10 < ma20 and ma20 < ma30 and ma30 < ma50 and ma50 < ma100 and ma100 < ma200
upwards?1:downwards?-1:includePartiallyAligned ? (upwardScore > 5? 0.5: upwardScore < 2?-0.5:upwardScore>3?0.25:-0.25) : 0
f_getHighLowValue(HighLowPeriod)=>
currentHigh = highest(high,HighLowPeriod) == high
currentLow = lowest(low,HighLowPeriod) == low
currentHigh?1:currentLow?-1:0
inDateRange = time >= timestamp(syminfo.timezone, year(timenow) - backtestYears, 01, 01, 0, 0)
maAlignment = f_getMaAlignment(MAType,includePartiallyAligned)
alignedMaIndex = sum(maAlignment,LookbackPeriod)
maAlignmentDirection = alignedMaIndex > alignedMaIndex[1] ? 1 : alignedMaIndex < alignedMaIndex[1] ? -1 : 0
maAlignmentDirection := maAlignmentDirection == 0? nz(maAlignmentDirection[1],0):maAlignmentDirection
highLowIndex = f_getHighLowValue(HighLowPeriod)
cumulativeHighLowIndex = sum(highLowIndex,LookbackPeriod)
hlDirection = cumulativeHighLowIndex > cumulativeHighLowIndex[1] ? 1 : cumulativeHighLowIndex < cumulativeHighLowIndex[1] ? -1 : 0
hlDirection := hlDirection == 0? nz(hlDirection[1],0):hlDirection
[superTrend, dir] = supertrend(supertrendMult, supertrendLength)
buyEntry = (dir == -1 and maAlignmentDirection == 1 and hlDirection == 1)
sellEntry = (dir == 1 and maAlignmentDirection == -1 and hlDirection == -1)
barColor = buyEntry?color.lime:sellEntry?color.orange:color.gray
barcolor(barColor)
// strategy.risk.allow_entry_in(tradeDirection)
strategy.entry("Buy", strategy.long, when=barColor == color.lime and inDateRange, oca_name="oca_buy")
strategy.close("Buy", when=dir == 1)
strategy.entry("Sell", strategy.short, when=barColor == color.orange and inDateRange, oca_name="oca_sell")
strategy.close("Sell", when=dir == -1)