डबल मूविंग एवरेज ब्रेकआउट रणनीति


निर्माण तिथि: 2023-12-11 15:21:58 अंत में संशोधित करें: 2023-12-11 15:21:58
कॉपी: 0 क्लिक्स: 637
1
ध्यान केंद्रित करना
1621
समर्थक

डबल मूविंग एवरेज ब्रेकआउट रणनीति

अवलोकन

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

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

यह रणनीति दो चलती औसत का उपयोग करती हैः एक तेज एमए और एक धीमी एमए। तेज एमए चक्र आमतौर पर एक छोटी अवधि के लिए सेट किया जाता है (जैसे कि 15 अवधि), अल्पकालिक मूल्य परिवर्तन को पकड़ने के लिए; धीमी एमए चक्र आमतौर पर एक लंबी अवधि के लिए सेट किया जाता है (जैसे कि 21 अवधि), मुख्य प्रवृत्ति दिशा का आकलन करने के लिए। रणनीति के ट्रेडिंग सिग्नल दो एमए के क्रॉसिंग से आते हैंः जब तेज एमए धीमी एमए से गुजरता है तो एक खरीद संकेत; जब तेज एमए नीचे धीमी एमए से गुजरता है तो एक बिक्री संकेत।

विभिन्न एमए चक्र संयोजनों को सेट करके, रणनीति को ट्रेंड कैप्चर करने के लिए समय की लंबाई को समायोजित किया जा सकता है। छोटे एमए संयोजन अल्पकालिक छोटे चक्रों के लिए मूल्य परिवर्तन के अवसरों को पकड़ सकते हैं; लंबे एमए संयोजन केवल लंबी लाइन स्तर के रुझानों को पकड़ने के लिए झटके को फ़िल्टर कर सकते हैं।

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

रणनीतिक लाभ

इस रणनीति के निम्नलिखित फायदे हैं:

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

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

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

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

इन जोखिमों को सुधार और अनुकूलित किया जा सकता है, जैसे कि एमए पैरामीटर को समायोजित करना, फ़िल्टरिंग शर्तों को जोड़ना और स्टॉप लॉजिक को अनुकूलित करना।

अनुकूलन दिशा

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

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

इन अनुकूलन और सुधारों के माध्यम से, रणनीति की सफलता दर, रिटर्न दर और जोखिम के लिए रिटर्न दर में काफी सुधार किया जा सकता है।

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2022-12-10 00:00:00
end: 2023-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Silent Trader Strategy", shorttitle = "Silent Trader", overlay = true, pyramiding = 0, default_qty_type = strategy.cash, default_qty_value = 1000, commission_value = 0.0675, initial_capital = 1000, currency = currency.USD, calc_on_order_fills = true, calc_on_every_tick = true)

maFastSource   = input(defval = ohlc4, title = "Fast MA Source")
maFastLength   = input(defval = 15, title = "Fast MA Period", minval = 1)
maSlowSource   = input(defval = ohlc4, title = "Slow MA Source")
maSlowLength   = input(defval = 21, title = "Slow MA Period", minval = 1)

tradeInvert     = input(defval = false, title = "Invert Trade Direction?")
inpTakeProfit   = input(defval = 100, title = "Take Profit percentage(0.1%)", minval = 0)
inpStopLoss     = input(defval = 100, title = "Stop Loss", minval = 0)
inpTrailStop    = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)

useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

useTimeLimit    = input(defval = true, title = "Use Start Time Limiter?")
startYear       = input(defval = 2018, title = "Start From Year",  minval = 0, step = 1)
startMonth      = input(defval = 05, title = "Start From Month",  minval = 0,step = 1)
startDay        = input(defval = 01, title = "Start From Day",  minval = 0,step = 1)
startHour       = input(defval = 00, title = "Start From Hour",  minval = 0,step = 1)
startMinute     = input(defval = 00, title = "Start From Minute",  minval = 0,step = 1)

startTimeOk() =>
    inputTime = timestamp(syminfo.timezone, startYear, startMonth, startDay, startHour, startMinute)
    timeOk = time > inputTime ? true : false
    r = (useTimeLimit and timeOk) or not useTimeLimit

maFast = ema(maFastSource, maFastLength)
maSlow = sma(maSlowSource, maSlowLength)

fast = plot(maFast, title = "Fast MA", color = #26A69A, linewidth = 1, style = line, transp = 50)
slow = plot(maSlow, title = "Slow MA", color = #EF5350, linewidth = 1, style = line, transp = 50)

aboveBelow = maFast >= maSlow ? true : false
tradeDirection = tradeInvert ? aboveBelow ? false : true : aboveBelow ? true : false

if( startTimeOk() )
    enterLong = not tradeDirection[1] and tradeDirection
    exitLong = tradeDirection[1] and not tradeDirection
    strategy.entry( id = "Long", long = true, when = enterLong )
    //strategy.close( id = "Long", when = exitLong )
    
    enterShort = tradeDirection[1] and not tradeDirection
    exitShort = not tradeDirection[1] and tradeDirection
    strategy.entry( id = "Short", long = false, when = enterShort )
    //strategy.close( id = "Short", when = exitShort )
    
    strategy.exit("Exit Long", from_entry = "Long",  profit = close * useTakeProfit / 1000 / syminfo.mintick, loss = close * useStopLoss / 1000 / syminfo.mintick, trail_points = close * useTrailStop / 1000 / syminfo.mintick, trail_offset = close * useTrailOffset / 1000 / syminfo.mintick)
    strategy.exit("Exit Short", from_entry = "Short", profit = close * useTakeProfit / 1000 / syminfo.mintick, loss = close * useStopLoss / 1000 / syminfo.mintick, trail_points = close * useTrailStop / 1000 / syminfo.mintick, trail_offset = close * useTrailOffset / 1000 / syminfo.mintick)