मोमेंटम मूविंग एवरेज ट्रेडिंग रणनीति


निर्माण तिथि: 2024-01-24 11:09:58 अंत में संशोधित करें: 2024-01-24 11:09:58
कॉपी: 0 क्लिक्स: 614
1
ध्यान केंद्रित करना
1617
समर्थक

मोमेंटम मूविंग एवरेज ट्रेडिंग रणनीति

अवलोकन

यह रणनीति तेजी से और धीमी गति से चलती औसत के क्रॉसिंग के आधार पर बाजार के रुझान और खरीदने और बेचने के बिंदु का न्याय करती है। जब तेजी से ईएमए पर धीमी गति से ईएमए को पार करते हैं तो बाजार को एक उछाल के रूप में देखते हैं और एक खरीद संकेत उत्पन्न करते हैं; जब तेजी से ईएमए नीचे धीमी गति से ईएमए को पार करते हैं तो बाजार को एक गिरावट के रूप में देखते हैं और एक बिक्री संकेत उत्पन्न करते हैं। रणनीति जोखिम को प्रबंधित करने के लिए स्टॉप-लॉस और स्टॉप-ऑफ मूल्य भी निर्धारित करती है।

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

यह रणनीति तेजी से ईएमए ((8 दिन की रेखा) और धीमी गति से ईएमए ((21 दिन की रेखा) का उपयोग करके बाजार की प्रवृत्ति का आकलन करती है। विशिष्ट तर्क यह हैः

  1. 8 दिन ईएमए और 21 दिन ईएमए गणना
  2. जब 8 ईएमए 21 ईएमए पर चढ़ता है, तो यह बाजार में बदलाव के रूप में आंका जाता है, और ऊपर की ओर बढ़ने का रुझान शुरू होता है
  3. जब 8 ईएमए 21 ईएमए के माध्यम से नीचे चला गया, तो यह एक बाजार परिवर्तन के रूप में आंका गया और गिरावट की शुरुआत हुई
  4. जब यह ऊपर की ओर जाता है, तो यह एक खरीद संकेत देता है; जब यह नीचे की ओर जाता है, तो यह एक बेचने का संकेत देता है
  5. स्टॉप और स्टॉप प्राइस सेट करें ताकि प्रत्येक ऑर्डर के लिए जोखिम का प्रबंधन किया जा सके

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

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

इस रणनीति के कुछ प्रमुख फायदे हैंः

  1. फास्ट ईएमए और स्लो ईएमए क्रॉसिंग बाजार के रुझानों और खरीद और बिक्री बिंदुओं को प्रभावी ढंग से निर्धारित करते हैं
  2. रणनीति पैरामीटर अनुकूलित करने के लिए पर्याप्त जगह है, ईएमए चक्र आगे समायोजित किया जा सकता है
  3. एक गतिमान सूचक के साथ, शोर संकेतों को प्रभावी रूप से फ़िल्टर करें
  4. जोखिम को सक्रिय रूप से नियंत्रित करने के लिए स्टॉप लॉस स्टॉप लॉजिक सेट करें

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

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

इस रणनीति में कुछ जोखिम भी हैं:

  1. अस्थिरता के दौरान, ईएमए क्रॉस सिग्नल अक्सर होते हैं, जिससे अधिक गलत ट्रेड होते हैं
  2. हवाई अंतराल के मामलों को प्रभावी ढंग से संभालने में असमर्थता
  3. इस प्रकार, यह इस बात पर ध्यान नहीं देता कि दीर्घकालिक रुझान क्या हैं।

इन जोखिमों के लिए, हम निम्नलिखित तरीकों से अनुकूलन कर सकते हैंः

  1. गलत संकेतों की संभावना को कम करने के लिए अन्य संकेतक फ़िल्टर, जैसे कि ब्रीनिंग बैंड, केडीजे आदि जोड़ें
  2. दीर्घकालिक रुझानों का आकलन करने के लिए बड़े स्तर के चक्र के संकेतकों के साथ
  3. अनुकूलन पैरामीटर, विभिन्न बाजार स्थितियों के लिए ईएमए की लंबाई को समायोजित करना
  4. मानव हस्तक्षेप ट्रेडिंग, बर्फ के अंतराल से बचने के लिए जो कि रोकथाम से अधिक भारी नुकसान का कारण बनता है

अनुकूलन दिशा

इस रणनीति में अनुकूलन के लिए बहुत जगह है, मुख्य रूप से निम्नलिखित दिशाओं सेः

  1. ईएमए चक्र पैरामीटर का अनुकूलन, ऐतिहासिक डेटा पर विभिन्न पैरामीटर पर रिटर्न का परीक्षण
  2. रणनीति सटीकता बढ़ाने के लिए KDJ, MACD आदि जैसे अन्य तकनीकी संकेतकों को फ़िल्टर करें
  3. स्टॉप लॉस स्टॉप सेटिंग्स को अनुकूलित करें ताकि यह अधिक उपयुक्त हो
  4. मशीन सीखने के तरीकों के माध्यम से स्वचालित रूप से अनुकूलित पैरामीटर

इन अनुकूलन उपायों से रणनीतियों की स्थिरता, अनुकूलन और लाभप्रदता में काफी वृद्धि हो सकती है।

संक्षेप

इस रणनीति के समग्र के लिए एक प्रकार का है प्रवृत्ति का पालन और गतिशीलता संकेतक क्रॉसिंग के आधार पर लघु रेखा ट्रेडिंग रणनीति. यह ईएमए तेजी से धीमी गति से लाइन क्रॉसिंग और स्टॉप-लॉस-स्टॉप तर्क के साथ संयुक्त है, तेजी से बाजार दिशा के अवसरों को पकड़ने के लिए. इस रणनीति के अनुकूलन के लिए जगह बहुत बड़ी है, और अगर आगे की अन्य सहायक संकेतक, स्वचालित पैरामीटर अनुकूलन और इस तरह के साधनों को पेश करने के लिए रणनीति के प्रदर्शन को और अधिक स्थिर और उत्कृष्ट बना सकते हैं. इस रणनीति के लिए उपयुक्त है जो बाजार के बारे में कुछ पता है और जो अक्सर संचालन के लिए तैयार हैं निवेशकों.

रणनीति स्रोत कोड
/*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"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TradersPostInc

//@version=5
strategy('TradersPost Example MOMO Strategy', overlay=true)

startTime = input(defval = timestamp('01 Jan 2021 00:00 +0000'), title = 'Start Time', group = 'Date Range')
endTime = input(defval = timestamp('31 Dec 2023 23:59 +0000'), title = 'End Time', group = 'Date Range')
timeCondition = true
timeConditionEnd = timeCondition[1] and not timeCondition

fastEmaLength = input.int(defval = 8, title = 'Fast EMA Length')
slowEmaLength = input.int(defval = 21, title = 'Slow EMA Length')
sides = input.string(defval = 'Both', title = 'Sides', options = ['Long', 'Short', 'Both', 'None'])

fastEma = ta.ema(close, fastEmaLength)
slowEma = ta.ema(close, slowEmaLength)

isUptrend = fastEma >= slowEma
isDowntrend = fastEma <= slowEma
trendChanging = ta.cross(fastEma, slowEma)

ema105 = request.security(syminfo.tickerid, '30', ta.ema(close, 105)[1], barmerge.gaps_off, barmerge.lookahead_on)
ema205 = request.security(syminfo.tickerid, '30', ta.ema(close, 20)[1], barmerge.gaps_off, barmerge.lookahead_on)
plot(ema105, linewidth=4, color=color.new(color.purple, 0), editable=true)
plot(ema205, linewidth=2, color=color.new(color.purple, 0), editable=true)

aa = plot(fastEma, linewidth=3, color=color.new(color.green, 0), editable=true)
bb = plot(slowEma, linewidth=3, color=color.new(color.red, 0), editable=true)
fill(aa, bb, color=isUptrend ? color.green : color.red, transp=90)

tradersPostBuy = trendChanging and isUptrend and timeCondition
tradersPostSell = trendChanging and isDowntrend and timeCondition

pips = syminfo.pointvalue / syminfo.mintick

percentOrPipsInput = input.string('Percent', title='Percent or Pips', options=['Percent', 'Pips'])

stopLossLongInput = input.float(defval=0, step=0.01, title='Stop Loss Long', minval=0)
stopLossShortInput = input.float(defval=0, step=0.01, title='Stop Loss Short', minval=0)

takeProfitLongInput = input.float(defval=0, step=0.01, title='Target Profit Long', minval=0)
takeProfitShortInput = input.float(defval=0, step=0.01, title='Target Profit Short', minval=0)

stopLossPriceLong = ta.valuewhen(tradersPostBuy, close, 0) * (stopLossLongInput / 100) * pips
stopLossPriceShort = ta.valuewhen(tradersPostSell, close, 0) * (stopLossShortInput / 100) * pips

takeProfitPriceLong = ta.valuewhen(tradersPostBuy, close, 0) * (takeProfitLongInput / 100) * pips
takeProfitPriceShort = ta.valuewhen(tradersPostSell, close, 0) * (takeProfitShortInput / 100) * pips

takeProfitALong = takeProfitLongInput > 0 ? takeProfitLongInput : na
takeProfitBLong = takeProfitPriceLong > 0 ? takeProfitPriceLong : na

takeProfitAShort = takeProfitShortInput > 0 ? takeProfitShortInput : na
takeProfitBShort = takeProfitPriceShort > 0 ? takeProfitPriceShort : na

stopLossALong = stopLossLongInput > 0 ? stopLossLongInput : na
stopLossBLong = stopLossPriceLong > 0 ? stopLossPriceLong : na

stopLossAShort = stopLossShortInput > 0 ? stopLossShortInput : na
stopLossBShort = stopLossPriceShort > 0 ? stopLossPriceShort : na

takeProfitLong = percentOrPipsInput == 'Pips' ? takeProfitALong : takeProfitBLong
stopLossLong = percentOrPipsInput == 'Pips' ? stopLossALong : stopLossBLong
takeProfitShort = percentOrPipsInput == 'Pips' ? takeProfitAShort : takeProfitBShort
stopLossShort = percentOrPipsInput == 'Pips' ? stopLossAShort : stopLossBShort

buyAlertMessage = '{"ticker": "' + syminfo.ticker + '", "action": "buy", "price": ' + str.tostring(close) + '}'
sellAlertMessage = '{"ticker": "' + syminfo.ticker + '", "action": "sell", "price": ' + str.tostring(close) + '}'

exitLongAlertMessage = '{"ticker": "' + syminfo.ticker + '", "action": "exit", "price": ' + str.tostring(close) + '}'
exitShortAlertMessage = '{"ticker": "' + syminfo.ticker + '", "action": "exit", "price": ' + str.tostring(close) + '}'

if (sides != "None")
    if tradersPostBuy
        strategy.entry('Long', strategy.long, when = sides != 'Short', alert_message = buyAlertMessage)
        strategy.close('Short', when = sides == "Short" and timeCondition, alert_message = exitShortAlertMessage)

    if tradersPostSell
        strategy.entry('Short', strategy.short, when = sides != 'Long', alert_message = sellAlertMessage)
        strategy.close('Long', when = sides == 'Long', alert_message = exitLongAlertMessage)

exitAlertMessage = '{"ticker": "' + syminfo.ticker + '", "action": "exit"}'

strategy.exit('Exit Long', from_entry = "Long", profit = takeProfitLong, loss = stopLossLong, alert_message = exitAlertMessage)
strategy.exit('Exit Short', from_entry = "Short", profit = takeProfitShort, loss = stopLossShort, alert_message = exitAlertMessage)

strategy.close_all(when = timeConditionEnd)