संसाधन लोड हो रहा है... लोड करना...

ट्रिपल एसएमए ऑटो-ट्रैकिंग रणनीति

लेखक:चाओझांग, दिनांकः 2024-01-26 15:05:58
टैगः

img

अवलोकन

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

रणनीति तर्क

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

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

स्टॉप लॉस को सबसे धीमी एसएमए से नीचे की कीमत के क्रॉसिंग पर सेट किया जाता है।

यह रणनीति 10 गुना तक पिरामिडिंग की अनुमति देती है। 1%, 2% और 6% लाभ पर तीन लाभ ले स्तर अंतर्निहित हैं।

लाभ विश्लेषण

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

इसके अतिरिक्त, ओवरबॉट/ओवरसोल्ड विश्लेषण के लिए स्टॉकक्लोज को शामिल करने से संभावित रुझान उलट बिंदुओं के आसपास संकेत लेने से बचा जाता है।

सबसे धीमी एसएमए के आधार पर स्टॉप लॉस भी समय से पहले स्टॉप आउट को कम करते हुए रणनीति की प्रवृत्तियों की सवारी करने की क्षमता को अधिकतम करता है।

पिरामिडिंग की अनुमति देने से रणनीति लगातार रुझानों में भाग ले सकती है।

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

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

इसके अलावा, स्टॉकक्लोज स्वयं गलत संकेत उत्पन्न कर सकता है, जिससे विशेष रूप से रेंजिंग बाजारों में अनुचित प्रविष्टियां हो सकती हैं।

इन जोखिमों को कम करने के लिए, एसएमए अवधि जैसे मापदंडों को समायोजित किया जा सकता है। सिग्नल की गुणवत्ता में सुधार के लिए केडीजे और एमएसीडी जैसे अधिक संकेतक जोड़े जा सकते हैं।

अनुकूलन दिशाएँ

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

  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)




अधिक