रणनीति के अनुसार दोहरी चलती औसत प्रवृत्ति

लेखक:चाओझांग, दिनांक: 2023-09-18 21:57:00
टैगः

अवलोकन

यह रणनीति ट्रेंड की दिशा की पहचान करने और संकेत उत्पन्न करने के लिए तेज और धीमी गति से चलती औसत का उपयोग करती है जब तेज एमए धीमी एमए को पार करता है, जिससे एक दोहरी एमए प्रणाली बनती है।

सिद्धांत

इस रणनीति में एक छोटा तेज एमए और एक लंबा धीमा एमए का उपयोग किया गया है।

धीमी एमए मुख्य प्रवृत्ति दिशा को परिभाषित करती है। एमए से ऊपर की कीमत अपट्रेंड है, नीचे की कीमत डाउनट्रेंड है।

अपट्रेंड में, जब तेज एमए धीमी एमए से ऊपर जाता है तो लंबा संकेत उत्पन्न होता है। डाउनट्रेंड में, जब तेज एमए धीमी एमए से नीचे जाता है तो छोटा संकेत होता है।

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

लाभ

  1. तेज और धीमी एमए संयोजन प्रभावी रूप से प्रवृत्ति की पहचान करता है।

  2. तेज एमए संवेदनशील ट्रेडिंग सिग्नल उत्पन्न करता है।

  3. धीमी एमए शोर को फ़िल्टर करती है जिससे झूठा ब्रेकआउट हो जाता है।

  4. ईएमए, डीईएमए जैसे विभिन्न एमए प्रकारों का उपयोग किया जा सकता है।

  5. ट्रेलिंग स्टॉप लॉस सक्षम किया जा सकता है।

जोखिम और न्यूनीकरण

  1. एमए विलंब संकेतों में देरी कर सकता है। अधिक संवेदनशील मापदंडों का परीक्षण किया जा सकता है।

  2. स्टॉप लॉस बहुत तंग हो सकता है जिससे समय से पहले बाहर निकलना पड़ सकता है।

  3. मात्रा को अनदेखा किया जाता है, मूल्य में हेरफेर का खतरा मौजूद है। मात्रा की पुष्टि जोड़ सकते हैं।

  4. केवल संकेतक झूठे संकेतों के लिए प्रवण है। अतिरिक्त पुष्टि की आवश्यकता है।

  5. पैरामीटर अनुकूलन मुश्किल है. चरणबद्ध अनुकूलन या जीए इष्टतम पैरामीटर पा सकते हैं.

बढ़ोतरी के अवसर

  1. सर्वोत्तम परिणामों के लिए विभिन्न एमए प्रकारों और मापदंडों का परीक्षण करें।

  2. बेहतर संवेदनशीलता के लिए अनुकूलनशील चलती औसत का शोध करें।

  3. सिग्नल फ़िल्टरिंग के लिए अन्य संकेतक या कारक जोड़ें।

  4. लचीले स्टॉप के लिए गतिशील स्टॉप बनाएं।

  5. एटीआर के साथ गतिशील स्थिति आकार जैसे धन प्रबंधन का अनुकूलन करें।

सारांश

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


/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs Strategy v1.7", shorttitle = "Trend MAs str 1.7", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, "long")
needshort = input(true, "short")
needstops = input(false, "stops")
stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %")
type = input(7, defval = 7, minval = 1, maxval = 7, title = "Type of Slow MA")
src = input(close, defval = close, title = "Source of Slow MA")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")
needbg = input(false, defval = false, title = "Need trend Background?")
needarr = input(false, defval = false, title = "Need entry arrows?")

fastsma = ema(src, fastlen)

//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)

//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3

//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
kama = nz(kama[1]) + nsmooth * (src - nz(kama[1]))

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Trend
ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0
trend = low > ma and low[1] > ma[1] and low[2] > ma[2] ? 1 : high < ma and high[1] < ma[1] ? -1 : trend[1]

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0

//Signals
min = min(open, close)
max = max(open, close)
up = trend == 1 and (low < fastsma or usefastsma == false) and redbars == 1 ? 1 : 0
dn = trend == -1 and (high > fastsma or usefastsma == false) and greenbars == 1 ? 1 : 0

//Lines
colorfastsma = usefastsma == true ? red : na
plot(fastsma, color = colorfastsma, title = "Fast MA")
plot(ma, color = blue, linewidth = 3, transp = 0, title = "Slow MA")

//Arrows
plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0)
plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0)

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)

//Alerts
alertcondition(up == 1, title='buy', message='Uptrend')
alertcondition(dn == 1, title='sell', message='Downtrend')

//Trading
stoplong = up == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1]
stopshort = dn == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1]

longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
    strategy.exit("Stop Long", "Long", stop = stoplong)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    strategy.exit("Stop Short", "Short", stop = stopshort)

अधिक