चलती औसत प्रणाली व्यापार रणनीति

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

img

अवलोकन

इस लेख में एक सरल चलती औसत पर आधारित एक ट्रेडिंग रणनीति पर चर्चा की गई है। यह रणनीति 17 अवधि के चलती औसत के साथ समापन मूल्य की तुलना करती है, जब समापन मूल्य चलती औसत से ऊपर पार हो जाता है और जब यह नीचे पार हो जाता है तो लंबी जाती है।

रणनीति तर्क

चलती औसत गणना

इस रणनीति में चलती औसत की गणना के लिए निम्नलिखित मापदंडों का प्रयोग किया गया है:

  • एमए स्रोतः ओएचएलसी (ओएचएलसी4) के औसत के लिए डिफ़ॉल्ट
  • एमए प्रकारः डिफ़ॉल्ट से सरल चलती औसत (एसएमए)
  • एमए लंबाईः 17 तक डिफ़ॉल्ट

इन मापदंडों के आधार पर, बंद कीमतों के 17-अवधि एसएमए की गणना करने के लिए getMAType() फ़ंक्शन को बुलाया जाता है।

ट्रेडिंग सिग्नल जनरेशन

फिर समापन मूल्य और चलती औसत के बीच संबंध की तुलना करें:

  • बंद > चलती औसतः लंबा संकेत
  • बंद < चलती औसतः संक्षिप्त संकेत

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

व्यापार निष्पादन

बैकटेस्ट अवधि के दौरान, जब लंबे संकेत दिखाई देते हैं तो लंबी स्थिति खोलें और जब छोटे संकेत दिखाई देते हैं तो छोटी स्थिति खोलें।

लाभ विश्लेषण

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

इसके अतिरिक्त, चलती औसत प्रवृत्ति-अनुवर्ती संकेतकों में से हैं, जो प्रवृत्ति परिवर्तनों को प्रभावी ढंग से ट्रैक कर सकते हैं और अल्पकालिक बाजार शोर से हस्तक्षेप से बच सकते हैं।

मापदंडों को समायोजित करके, यह विभिन्न चक्रों और विभिन्न उत्पादों के अनुकूल हो सकता है।

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

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

इसके अलावा, एक प्रवृत्ति के बाद प्रणाली के रूप में, यह सीमा-बाधित और साइडवेज बाजारों में अच्छी तरह से काम नहीं करता है।

इसके अलावा, स्टॉप लॉस या ले लाभ के बिना, घाटे के विस्तार का जोखिम है।

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

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

यहाँ रणनीति को अनुकूलित करने के लिए कुछ विचार दिए गए हैंः

  1. चलती औसत मापदंडों को समायोजित करें, अवधि संख्याओं को अनुकूलित करें, उदाहरण के लिए 30-अवधि या 50-अवधि में परिवर्तन।

  2. विभिन्न प्रकार के चलती औसत, जैसे ईएमए, वीडिया आदि का प्रयोग करें।

  3. संयोजन में अन्य संकेतक जोड़ें, उदाहरण के लिए MACD ताकत का आकलन करने के लिए; RSI झूठे संकेतों को कम करने के लिए।

  4. स्टॉप लॉस तंत्र जोड़ें। एकल व्यापार हानि राशि को नियंत्रित करने के लिए निश्चित प्रतिशत या एटीआर आधारित ट्रैलिंग स्टॉप लॉस सेट करें।

  5. लाभ लेने के तंत्र जोड़ें। लाभ को अधिकतम करने के लिए लक्ष्य लाभ प्रतिशत निर्धारित करें।

ये अनुकूलन रणनीति के प्रदर्शन को अधिक स्थिर बना सकते हैं और अत्यधिक ड्रॉडाउन से बच सकते हैं।

सारांश

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


/*backtest
start: 2023-12-05 00:00:00
end: 2024-01-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Simple 17 BF 🚀", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)

/////////////// Time Frame ///////////////
testStartYear = input(2012, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() => true

///////////// Moving Average /////////////
source = input(title="MA Source", defval=ohlc4)
maType = input(title="MA Type", defval="sma", options=["sma", "ema", "swma", "wma", "vwma", "rma"])
length = input(title="MA Length", defval=17)

///////////// Get MA Function /////////////
getMAType(maType, sourceType, maLen) => 
    res = sma(close, 1)
    
    if maType == "ema"
        res := ema(sourceType, maLen)
    if maType == "sma"
        res := sma(sourceType, maLen)
    if maType == "swma"
        res := swma(sourceType)
    if maType == "wma"
        res := wma(sourceType, maLen)
    if maType == "vwma"
        res := vwma(sourceType, maLen)
    if maType == "rma"
        res := rma(sourceType, maLen)
    res
    
MA = getMAType(maType, source, length)

/////////////// Strategy ///////////////
long = close > MA
short = close < MA

last_long = 0.0
last_short = 0.0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])

long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

/////////////// Execution /////////////// 
if testPeriod()
    strategy.entry("L", strategy.long, when=long_signal)
    strategy.entry("S", strategy.short, when=short_signal)

/////////////// Plotting /////////////// 
p1 = plot(MA, color = long ? color.lime : color.red, linewidth=2)
p2 = plot(close, linewidth=2)
fill(p1, p2, color=strategy.position_size > 0 ? color.lime : strategy.position_size < 0 ? color.red : color.white, transp=80)

अधिक