ट्रिपल एसएमए पर आधारित एक स्वचालित ट्रैकिंग रणनीति


निर्माण तिथि: 2024-01-26 15:05:58 अंत में संशोधित करें: 2024-01-26 15:05:58
कॉपी: 1 क्लिक्स: 640
1
ध्यान केंद्रित करना
1617
समर्थक

ट्रिपल एसएमए पर आधारित एक स्वचालित ट्रैकिंग रणनीति

अवलोकन

ट्रिपल एसएमए रणनीति एक रणनीति है जो तीन अलग-अलग चक्रों की सरल चलती औसत के आधार पर प्रवृत्ति निर्णय और प्रविष्टियों के लिए है। यह स्वचालित रूप से प्रवृत्ति का पालन कर सकता है और प्रवृत्ति में रिवर्स का उपयोग करके स्थिति बनाने के लिए स्थिति बना सकता है।

रणनीति सिद्धांत

यह रणनीति तीन अलग-अलग चक्रों के SMA का उपयोग करती है, जिसमें 200 चक्र, 400 चक्र और 600 चक्र के SMA शामिल हैं। कीमतों को तीन SMA के ऊपर एक ऊपरी प्रवृत्ति के रूप में माना जाता है, और इसके विपरीत एक ओवरहेड प्रवृत्ति है।

प्रविष्टियों के सूचक के रूप में, रणनीति को क्लोज प्राइस और स्टोचक्लॉज ऑस्सिलेटर के साथ जोड़ा जाता है। यह केवल तभी संकेत देता है जब कीमत ट्रिपल एसएमए की दिशा के साथ मेल खाती है। स्टोचक्लॉज सूचक का उपयोग ओवरसोल्ड या ओवरसोल्ड होने का निर्णय लेने के लिए किया जाता है, जब स्टोचक्लॉज 95 पर अधिक होता है और 5 पर खाली होता है।

स्टॉप स्टैंडर्ड तब होता है जब कीमत सबसे धीमी SMA को छूती है।

रणनीति को अधिकतम 10 बार उठाया जा सकता है। और तीन अलग-अलग अनुपात के स्टॉप सेट किए गए हैं, क्रमशः 1%, 2% और 6%।

श्रेष्ठता विश्लेषण

ट्रिपल एसएमए रणनीति का सबसे बड़ा लाभ यह है कि यह तीन अलग-अलग चक्रों के एसएमए का संयोजन करके प्रवृत्ति की दिशा और ताकत का बेहतर आकलन करने में सक्षम है। एकल एसएमए की तुलना में झूठे संकेतों को फ़िल्टर करने की अधिक क्षमता है।

इसके अलावा, स्टोचक्लोज सूचकांक के साथ ओवरबॉय और ओवरसोल के बारे में निर्णय लेने से ट्रेंड रिवर्स पॉइंट के पास प्रवेश करने से बचा जा सकता है, जिससे गलत प्रविष्टियों को कम किया जा सकता है।

स्टॉप मानदंड सरल और सीधा है, जो सबसे धीमी अवधि के SMA को स्टॉप लाइन के रूप में उपयोग करता है, जिससे जल्दबाजी में स्टॉप को अधिकतम किया जा सकता है।

इस रणनीति के तहत, ट्रेडों को लगातार ट्रैक करने की अनुमति दी जाती है ताकि ट्रेडों से लाभ हो सके।

जोखिम विश्लेषण

इस रणनीति का मुख्य जोखिम यह है कि तीन एसएमए सभी झूठे संकेतों को पूरी तरह से फ़िल्टर करने में सक्षम नहीं हो सकते हैं, और यदि कीमत के ब्रेक के बाद एक बार फिर से एक प्रवृत्ति नहीं बनती है, तो नुकसान हो सकता है। यह आमतौर पर महत्वपूर्ण समर्थन प्रतिरोध के पास होता है।

इसके अलावा, स्टोचक्लोज इंडिकेटर स्वयं भी गलत सिग्नल उत्पन्न कर सकता है, जिससे अनुचित प्रविष्टियां होती हैं। यह आमतौर पर कीमतों में उतार-चढ़ाव के दौरान होता है।

इन जोखिमों को कम करने के लिए, एसएमए की आवृत्ति को उचित रूप से समायोजित किया जा सकता है; या अन्य संकेतकों को जोड़कर, जैसे कि केडीजे, एमएसीडी, आदि, जो आने वाले सिग्नल की गुणवत्ता सुनिश्चित करते हैं।

अनुकूलन दिशा

इस रणनीति को निम्नलिखित पहलुओं से अनुकूलित किया जा सकता हैः

  1. एसएमए की आवृत्ति को बढ़ाएं या समायोजित करें और एक विशिष्ट किस्म के लिए अधिक उपयुक्त आवृत्ति पैरामीटर ढूंढें

  2. प्रविष्टियों की गुणवत्ता में सुधार के लिए अन्य सूचकांकों जैसे कि केडीजे, एमएसीडी आदि को जोड़ना

  3. स्टॉप लॉस मानदंडों को बाजार के उतार-चढ़ाव के लिए अनुकूलित करना

  4. स्टॉक बढ़ाने की संख्या और अनुपात का अनुकूलन करें और अधिक उपयुक्त स्टॉक बढ़ाने की रणनीति खोजें

  5. विभिन्न किस्मों के पैरामीटर का परीक्षण करें ताकि रणनीति पैरामीटर अधिक किस्मों के लिए पूरी तरह से अनुकूल हो

संक्षेप

ट्रिपल एसएमए रणनीति समग्र रूप से एक बहुत ही व्यावहारिक प्रवृत्ति ट्रैकिंग रणनीति है। यह तीन अलग-अलग चक्रों के एसएमए और स्टोचक्लोस सूचकांकों के संयोजन के माध्यम से बेहतर प्रवृत्ति निर्णय प्रभाव प्राप्त करता है, जो गलत संकेतों को प्रभावी ढंग से रोकता है। साथ ही उचित बढ़ोतरी की अनुमति देता है, जिससे हमेशा प्रवृत्ति को ट्रैक किया जा सकता है। पैरामीटर को समायोजित और अनुकूलित करके, यह रणनीति एक मजबूत प्रवृत्ति ट्रैकिंग मशीन बन सकती है।

रणनीति स्रोत कोड
/*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=4
strategy(title="Tripla Sma with entries based on sma price closes ", shorttitle="TRIPLE SMA STRATEGY", overlay=true) ////resolution=""
len = input(200, minval=1, title="sma 1 length")
len1 = input(400, minval=1, title="sma 2 length")
len2 = input(600, minval=1, title="sma 3 length")
src = input(close, title="Source")
////////////////////////////////////////////
smma = 0.0
smma := na(smma[1]) ? sma(src, len) : (smma[1] * (len - 1) + src) / len

up = smma > smma [1]
down =smma < smma[1]
mycolor = up ? #64b5f6 : down ? #d32f2f : na
fastma = sma(hl2, 1)

fastplot = plot(fastma, color=#000000, transp=100, title='sma on candle')
slowplot = plot(smma, color=mycolor, transp=55, title='sma1')

////////////////////////////////////////////
smma1 = 0.0
smma1 := na(smma1[1]) ? sma(src, len1) : (smma1[1] * (len1 - 1) + src) / len1

up2 = smma1 > smma1 [1]
down2 =smma1 < smma1[1]

mycolor2 = up2 ? #64b5f6 : down2 ? #d32f2f : na
slowplot2 = plot(smma1, color=mycolor2, transp=45, title='sma2')

////////////////////////////////////////////
smma2 = 0.0
smma2 := na(smma2[1]) ? sma(src, len2) : (smma2[1] * (len2 - 1) + src) / len2

up3 = smma2 > smma2 [1]
down3 =smma2 < smma2[1]

mycolor3 = up3 ? #64b5f6 : down3 ? #d32f2f : na
slowplot3 = plot(smma2, color=mycolor3, transp=35, title='sma3')

////////////////////////////////////////////////////////////////////////////////////////
//Fill gaps
fillData = smma > fastma
fillData2 = smma < fastma

fillDtat = smma1 > smma
fillDtat2 = smma1 < smma

fillDat = smma2 > smma1
fillDat2 = smma2 < smma1


fillCol1 = fillData ? #ef5350 : fillData2 ? #64b5f6 : na
fillCol2 = fillDtat ? #ef5350 : fillDtat2 ? #64b5f6 : na
fillCol3 = fillDat ? #ef5350 : fillDat2 ? #64b5f6 : na


fill(slowplot, fastplot, color=fillCol1, transp=90, title="sma1 fill")
fill(slowplot, slowplot2, color=fillCol2, transp=80, title="sma2 fill")
fill(slowplot2, slowplot3, color=fillCol3, transp=60, title="sma3 fill")

uc = (close > smma) and (close > smma1)
dc = (close < smma) and (close < smma1)

barColor = uc ? #64b5f6 : dc ? #e91e63 : #b2b5be
barcolor(color=barColor)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//StochClose from @trendinvestpro 
periods = input(50, minval=1, title="length for the oscillator")
smooth = input(5, minval=1, title="oscillator smoothing")
hhc=highest(close,periods)
llc=lowest(close,periods)
StochClose = sma((close-llc)/(hhc-llc)*100, smooth)

shortline = input(95, minval=0, title="signal when oscillator crosses above")
longline = input(5, minval=0, title="signal when oscillator crosses below")

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
longs = close > smma2
shorts = close < smma2



long = longs == true and crossunder(StochClose, longline)
short = shorts == true and crossover(StochClose, shortline)

stoplong = close < smma and close < smma1 and close < smma2
stopshort = close > smma and close > smma1 and close > smma2

p1 = strategy.position_avg_price / 100 / syminfo.mintick

maxx = input(2500, title="max orders filled on a day", minval=0)
takeprofit1 = input(1, title="take profit level 1", minval=0)
takeprofit2 = input(2, title="take profit level 2", minval=0)
takeprofit3 = input(6, title="take profit level 3", minval=0)

takeprofitqt1 = input(30, title="take profit quantity first", minval=0)
takeprofitqt2 = input(30, title="take profit quantity second", minval=0)
takeprofitqt3 = input(30, title="take profit quantity third", minval=0)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////Strategy entries/////////////////////////////////////////////////////////////////////////////////////////
// strategy.risk.max_intraday_filled_orders(maxx)
strategy.entry("long", strategy.long, when=long)
strategy.exit("tpl1", "long", qty_percent = takeprofitqt1, profit = takeprofit1 * p1)
strategy.exit("tpl2", "long", qty_percent = takeprofitqt2, profit = takeprofit2 * p1)
strategy.exit("tpl3", "long", qty_percent = takeprofitqt3, profit = takeprofit3 * p1)
strategy.close("long", when=stoplong == true)


strategy.entry("short", strategy.short, when=short)
strategy.exit("tpl1", "short", qty_percent = takeprofitqt1, profit = takeprofit1 * p1)
strategy.exit("tpl2", "short", qty_percent = takeprofitqt2, profit = takeprofit2 * p1)
strategy.exit("tpl3", "short", qty_percent = takeprofitqt3, profit = takeprofit3 * p1)
strategy.close("short", when=stopshort == true)