गतिशील औसत क्रॉसओवर ट्रेडिंग रणनीति

लेखक:चाओझांग, दिनांकः 2024-01-24 11:09:58
टैगः

img

अवलोकन

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

रणनीति तर्क

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

  1. 8-दिवसीय ईएमए और 21-दिवसीय ईएमए की गणना करें
  2. जब 8-दिवसीय ईएमए 21-दिवसीय ईएमए से ऊपर जाता है, तो यह निर्धारित किया जाता है कि बाजार की प्रवृत्ति उलटी हो गई है और ऊपर की प्रवृत्ति शुरू हो गई है।
  3. जब 8-दिवसीय ईएमए 21-दिवसीय ईएमए से नीचे जाता है, तो यह निर्धारित किया जाता है कि बाजार की प्रवृत्ति उलट गई है और एक घटती प्रवृत्ति शुरू हो गई है।
  4. एक अपट्रेंड के दौरान, एक खरीद संकेत उत्पन्न होता है। एक डाउनट्रेंड के दौरान, एक बिक्री संकेत उत्पन्न होता है
  5. प्रत्येक स्थिति के लिए जोखिमों का प्रबंधन करने के लिए स्टॉप लॉस और ले लाभ मूल्य निर्धारित करें

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

लाभ विश्लेषण

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

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

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

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

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

  1. रेंजिंग बाजारों में, EMA क्रॉसओवर संकेत अधिक गलत ट्रेडों का कारण बन सकते हैं।
  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)

अधिक