बहु-स्तरीय शिफ्ट मूविंग एवरेज ट्रेडिंग रणनीति

लेखक:चाओझांग, दिनांक: 2023-09-23 15:55:20
टैगः

अवलोकन

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

रणनीति तर्क

  1. आधार रेखा के रूप में एसआरसी मूल्य के सरल चलती औसत की गणना करें।

  2. लंबी और छोटी पंक्तियों की संख्या को लंबी और छोटी मापदंडों के आधार पर सेट करें।

  3. लोंगलाइन1 आदि को लोंगलेवल1 आदि अनुपातों के अनुसार आधार रेखा को स्थानांतरित करके सेट किया जाता है। शॉर्टलाइन को इसी तरह सेट किया जाता है।

  4. व्यापार के समय के भीतर मूल्य रेखाओं को पार करने पर कई स्तरों पर ट्रेड करें।

  5. मूल्य आधार रेखा को छूने पर हानि रोकें.

  6. अंत समय के बाद सभी पदों को बंद करने के लिए बल।

लाभ विश्लेषण

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

  1. बहुस्तरीय प्रवेश प्रवृत्ति के विभिन्न चरणों में लाभ कमाने की अनुमति देता है।

  2. विभिन्न उत्पादों और व्यापारिक शैलियों के लिए मापदंडों के साथ अत्यधिक अनुकूलन योग्य।

  3. चलती औसत के आधार पर विश्वसनीय ब्रेकआउट प्रणाली।

  4. व्यापार करने योग्य समय सीमा निर्धारित करके प्रमुख घटनाओं से बचें।

  5. स्टॉप लॉस के माध्यम से प्रतिबंधित हानि।

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

रणनीति के कुछ जोखिमः

  1. पिरामिडिंग पदों से उच्च जोखिम, पर्याप्त पूंजी की आवश्यकता होती है।

  2. अनुचित मापदंडों से अधिक व्यापार हो सकता है।

  3. फिक्स्ड एग्जिट टाइम लेट ट्रेंड प्रॉफिट को मिस कर सकता है।

  4. ओवरनाइट पदों और ले जाने की लागत के लिए कोई विचार नहीं।

  5. स्थिति आकार पर कोई नियंत्रण नहीं।

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

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

  1. निश्चित बाहर निकलने के समय के बजाय पीछे स्टॉप हानि जोड़ें.

  2. ओवरनाइट पदों के लिए ले जाने की लागत पर विचार करें।

  3. देर से मुनाफे को कैप्चर करने के लिए स्टॉप लॉस जोड़ें।

  4. वर्तमान जोखिम के आधार पर गतिशील रूप से आकार की स्थिति।

  5. विभिन्न उत्पादों पर मापदंडों का परीक्षण और निर्माण अनुकूलन विधियों।

  6. अनावश्यक स्टॉप से बचने के लिए स्टॉप लॉस स्तरों को अनुकूलित करें।

सारांश

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


/*backtest
start: 2022-09-16 00:00:00
end: 2023-09-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Noro's ShiftMA-multi Strategy v1.1", shorttitle = "ShiftMA-multi", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
long = input(3, defval = 3, minval = 0, maxval = 3, title = "Lines for long")
short = input(3, defval = 3, minval = 0, maxval = 3, title = "Lines for short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(3, minval = 1, title = "MA Length")
src = input(ohlc4, title = "MA Source")
shortlevel3 = input(15.0, title = "Short line 3")
shortlevel2 = input(10.0, title = "Short line 2")
shortlevel1 = input(5.0, title = "Short line 1")
longlevel1 = input(-5.0, title = "Long line 1")
longlevel2 = input(-10.0, title = "Long line 2")
longlevel3 = input(-15.0, title = "Long line 3")
needoffset = input(true, title = "Offset")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Variables
size = strategy.position_size
mult = 1 / syminfo.mintick

//MA
ma = sma(src, len)
longline1 = long >= 1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close
longline2 = long >= 2 ? round(ma * ((100 + longlevel2) / 100) * mult) / mult : close
longline3 = long >= 3 ? round(ma * ((100 + longlevel3) / 100) * mult) / mult : close
shortline1 = short >= 1 ? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close
shortline2 = short >= 2 ? round(ma * ((100 + shortlevel2) / 100) * mult) / mult : close
shortline3 = short >= 3 ? round(ma * ((100 + shortlevel3) / 100) * mult) / mult : close

//Lines
colorlong1 = long >= 1 ? color.lime : na
colorlong2 = long >= 2 ? color.lime : na
colorlong3 = long >= 3 ? color.lime : na
colorshort1 = short >= 1 ? color.red : na
colorshort2 = short >= 2 ? color.red : na
colorshort3 = short >= 3 ? color.red : na
offset = needoffset ? 1 : 0
plot(shortline3, offset = offset, color = colorshort1)
plot(shortline2, offset = offset, color = colorshort2)
plot(shortline1, offset = offset, color = colorshort3)
plot(ma, offset = offset, color = color.blue)
plot(longline1, offset = offset, color = colorlong1)
plot(longline2, offset = offset, color = colorlong2)
plot(longline3, offset = offset, color = colorlong3)

//Trading
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
lots = 0.0
needtime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
if ma > 0
    lots := round(size / lot)
    strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0 and long >= 1 and needtime))
    lots := round(size / lot)
    strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1 and long >= 2 and needtime))
    lots := round(size / lot)
    strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2 and long >= 3 and needtime))
    
    lots := round(size / lot)
    strategy.entry("S1", strategy.short, lot, limit = shortline1, when = (lots == 0 and short >= 1 and needtime))
    lots := round(size / lot)
    strategy.entry("S2", strategy.short, lot, limit = shortline2, when = (lots >= -1 and short >= 2 and needtime))
    lots := round(size / lot)
    strategy.entry("S3", strategy.short, lot, limit = shortline3, when = (lots >= -2 and short >= 3 and needtime))
if size > 0
    strategy.entry("TPL", strategy.short, 0, limit = ma)
if size < 0
    strategy.entry("TPS", strategy.long, 0, limit = ma)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

अधिक