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


निर्माण तिथि: 2023-10-26 15:38:14 अंत में संशोधित करें: 2023-10-26 15:38:14
कॉपी: 0 क्लिक्स: 628
1
ध्यान केंद्रित करना
1617
समर्थक

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

अवलोकन

औसत वापसी ट्रेडिंग रणनीति एक रणनीति है जो औसत से मूल्य विचलन की डिग्री के आधार पर व्यापार करती है। यह रणनीति लंबी अवधि के औसत से कीमतों के अल्पकालिक विचलन की विशेषताओं का उपयोग करती है, जब कीमतें औसत से काफी कम या अधिक होती हैं, तो स्थिति स्थापित करती हैं, और जब कीमतें औसत रेखा पर लौटती हैं, तो स्टॉक मार्जिन को कम करती हैं।

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

यह रणनीति पहले एक निश्चित अवधि के लिए एक चलती औसत की गणना करती है, जो लंबी अवधि के मूल्य रुझानों का प्रतिनिधित्व करती है। फिर स्थिति के निर्माण के समय और स्थिति के आकार को निर्धारित करती है कि कीमतें चलती औसत से कितनी दूर हैं।

जब कीमत चलती औसत से नीचे एक निश्चित अनुपात में है, तो यह लंबी अवधि के रुझान से कीमतों के विचलन का प्रतिनिधित्व करता है, जो एक निश्चित स्थिति के अनुपात में धीरे-धीरे कई आदेशों का निर्माण करता है। कीमतों के विचलन के रूप में, स्थापित स्थिति अधिक होती है। जब कीमतों को फिर से चलती औसत से ऊपर उठाया जाता है, तो यह लंबी अवधि के रुझान की वापसी का प्रतिनिधित्व करता है, जो कि स्थिति के अनुपात में है।

इसी तरह, जब कीमत एक निश्चित अनुपात में चलती औसत से अधिक होती है, तो एक खाली बोली बनाई जाती है। जब कीमत घटती है और चलती औसत पर वापस आती है, तो अनुपातिक रूप से बराबरी की जाती है।

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

  1. स्टॉक की कीमतों में दीर्घकालिक संतुलन की प्रवृत्ति का पालन करने के लिए औसत रेखा की प्रवृत्ति की पहचान करने की क्षमता का उपयोग करें, प्रमुख प्रवृत्ति की दिशा को पकड़ें।

  2. बैचों के माध्यम से स्थिति का निर्माण, भंडारण लागत को कम करना, बेहतर लागत मूल्य प्राप्त करना।

  3. चरणबद्ध स्टॉप के साथ, अलग-अलग स्तर की वापसी औसत रेखा में अलग-अलग स्टॉप अवसर हैं, जो जोखिम को कम करते हैं।

  4. पोजीशन कंट्रोल एक निश्चित हिस्सेदारी का उपयोग करता है ताकि एकल नुकसान से बचा जा सके।

  5. मापदंडों की सेटिंग लचीली है, जो विभिन्न किस्मों के अनुसार चलती औसत अवधि या स्थिति अनुपात को समायोजित कर सकती है।

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

  1. कीमतों में उतार-चढ़ाव के दौरान, बार-बार स्टॉप हो सकता है। स्टॉप को उचित रूप से ढीला किया जा सकता है, या अन्य फ़िल्टरिंग शर्तों को अपनाया जा सकता है।

  2. एक मजबूत स्टॉक सीधे औसत रेखा को तोड़ सकता है और आगे बढ़ सकता है या गिर सकता है, और औसत रेखा को रोकने के लिए वापस नहीं आ सकता है। एक मजबूत प्रवृत्ति को ट्रेंड इंडिकेटर के साथ जोड़ा जा सकता है और स्थिति को कम किया जा सकता है।

  3. अनुचित पैरामीटर सेट करने से बहुत अधिक चरम स्थिति या स्टॉप लॉस हो सकता है। पैरामीटर को सावधानीपूर्वक परीक्षण किया जाना चाहिए और बाजार के अनुसार समायोजित किया जाना चाहिए।

  4. लेनदेन की आवृत्ति के साथ, लेनदेन शुल्क अधिक हो सकता है, और लागत कारक अनुकूलन पैरामीटर पर विचार किया जाना चाहिए।

अनुकूलन दिशा

  1. विभिन्न नस्लों की विशेषताओं के लिए अनुकूलित चल औसत चक्र।

  2. स्थिति अनुपात को अनुकूलित करें, जोखिम-लाभ को संतुलित करें

  3. अनावश्यक लेनदेन से बचने के लिए अन्य तकनीकी संकेतकों को फ़िल्टर करें।

  4. बाजार में उतार-चढ़ाव के अनुसार स्थिति अनुपात को समायोजित करने के लिए अस्थिरता सूचक के साथ।

  5. स्टॉपबॉक्स में शामिल होने से जोखिम कम होता है और रिटर्न बढ़ता है।

संक्षेप

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

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

//@version=4
strategy("YJ Mean Reversion", overlay=true)
//Was designed firstly to work on an index like the S&P 500 , which over time tends to go up in value. 
//Avoid trading too frequently (e.g. Daily, Weekly), to avoid getting eaten by fees. 
//If you change the underlying asset, or time frame, tweaking the moving average may be necessary. 
//Can work with a starting capital of just $1000, optimise the settings as necessary. 
//Accepts floating point values for the amount of units to purchase (e.g. Bitcoin ). 
//If price of units exceeds available capital, script will cancel the buy. 
//Adjusted the input parameters to be more intuitive.

//input variables
movingAverage = input(title="Moving Average (bars)", type=input.integer, defval=28, minval=1, maxval=1000)
//riskPercentage = input(title="Amount to Risk (%)", type=input.integer, defval=1, minval=1, maxval=50)
deviation = input(title="Deviation Increment (%)", type=input.float, defval=5, minval=0.01, maxval=100) / 100
unitsLevel1 = input(title="Level 1 (units)", type=input.float, defval=1, minval=0.0001, maxval=10000)
unitsLevel2 = input(title="Level 2 (units)", type=input.float, defval=2, minval=0.0001, maxval=10000)
unitsLevel3 = input(title="Level 3 (units)", type=input.float, defval=4, minval=0.0001, maxval=10000)
unitsLevel4 = input(title="Level 4 (units)", type=input.float, defval=8, minval=0.0001, maxval=10000)
unitsLevel5 = input(title="Level 5 (units)", type=input.float, defval=16, minval=0.0001, maxval=10000)

//moving average and ma slope (use on weekly chart)
ma = sma(close, movingAverage)
//sl = ma > ma[4]

//units to buy
//amount = riskPercentage / 100 * (strategy.initial_capital + strategy.netprofit)
//units = floor(amount / close)

//mode 1
//strategy.order("buy", true, 1, when = (close < 0.95 * ma) and (strategy.position_size < 10))
//strategy.order("sell", false, strategy.position_size, when = (close > 1.05 * ma) and (strategy.position_size > 0))

//mode 2
//strategy.order("buy", true, 1, when = close < 0.8 * ma)
//strategy.order("sell", false, strategy.position_size, when = (close > 310) and (strategy.position_size > 0))

//mode 3
//strategy.order("buy", true, 1, when = (close < 0.95 * ma) and (close > 0.9 * ma))
//strategy.order("buy", true, 2, when = (close < 0.9 * ma) and (close > 0.85 * ma))
//strategy.order("buy", true, 4, when = (close < 0.85 * ma) and (close > 0.8 * ma))
//strategy.order("buy", true, 8, when = (close < 0.8 * ma) and (close > 0.75 * ma))
//strategy.order("buy", true, 16, when = (close < 0.75 * ma))
//strategy.order("sell", false, strategy.position_size, when = (close > 310) and (strategy.position_size > 0))

//mode 4
//strategy.order("buy", true, 1, when = (close < 0.98 * ma) and (close > 0.96 * ma) and (sl))
//strategy.order("buy", true, 2, when = (close < 0.96 * ma) and (close > 0.94 * ma) and (sl))
//strategy.order("buy", true, 4, when = (close < 0.94 * ma) and (close > 0.92 * ma) and (sl))
//strategy.order("buy", true, 8, when = (close < 0.92 * ma) and (close > 0.90 * ma) and (sl))
//strategy.order("buy", true, 16, when = (close < 0.90 * ma) and (sl))
//strategy.order("sell", false, strategy.position_size, when = (close > 310) and (strategy.position_size > 0))

//mode 5
//strategy.order("buy", true, 1, when = (close < 0.95 * ma) and (close > 0.9 * ma))
//strategy.order("buy", true, 2, when = (close < 0.9 * ma) and (close > 0.85 * ma))
//strategy.order("buy", true, 4, when = (close < 0.85 * ma) and (close > 0.8 * ma))
//strategy.order("buy", true, 8, when = (close < 0.8 * ma) and (close > 0.75 * ma))
//strategy.order("buy", true, 16, when = (close < 0.75 * ma))

//strategy.order("sell", false, 1, when = (close > 1.05 * ma) and (close < 1.1 * ma) and (strategy.position_size > 0))
//strategy.order("sell", false, 2, when = (close > 1.1 * ma) and (close < 1.15 * ma) and (strategy.position_size > 0))
//strategy.order("sell", false, 4, when = (close > 1.15 * ma) and (close < 1.2 * ma) and (strategy.position_size > 0))
//strategy.order("sell", false, 8, when = (close > 1.2 * ma) and (close < 1.25 * ma) and (strategy.position_size > 0))
//strategy.order("sell", false, 16, when = (close > 1.25 * ma) and (close < 1.3 * ma) and (strategy.position_size > 0))

//mode 6
//strategy.order("B1", true, unitsLevel1 * units, when = (close < 0.95 * ma) and (close > 0.9 * ma))
//strategy.order("B2", true, unitsLevel2 * units, when = (close < 0.9 * ma) and (close > 0.85 * ma))
//strategy.order("B3", true, unitsLevel3 * units, when = (close < 0.85 * ma) and (close > 0.8 * ma))
//strategy.order("B4", true, unitsLevel4 * units, when = (close < 0.8 * ma) and (close > 0.75 * ma))
//strategy.order("B5", true, unitsLevel5 * units, when = (close < 0.75 * ma))

//strategy.order("S1", false, unitsLevel1 * units, when = (close > 1.05 * ma) and (close < 1.1 * ma) and (strategy.position_size > 0))
//strategy.order("S2", false, unitsLevel2 * units, when = (close > 1.1 * ma) and (close < 1.15 * ma) and (strategy.position_size > 0))
//strategy.order("S3", false, unitsLevel3 * units, when = (close > 1.15 * ma) and (close < 1.2 * ma) and (strategy.position_size > 0))
//strategy.order("S4", false, unitsLevel4 * units, when = (close > 1.2 * ma) and (close < 1.25 * ma) and (strategy.position_size > 0))
//strategy.order("S5", false, unitsLevel5 * units, when = (close > 1.25 * ma) and (close < 1.3 * ma) and (strategy.position_size > 0))

//mode 7
//strategy.order("B1", true, units, when = (close < 0.95 * ma) and (close > 0.9 * ma))
//strategy.order("B2", true, units, when = (close < 0.9 * ma) and (close > 0.85 * ma))
//strategy.order("B3", true, units, when = (close < 0.85 * ma) and (close > 0.8 * ma))
//strategy.order("B4", true, units, when = (close < 0.8 * ma) and (close > 0.75 * ma))
//strategy.order("B5", true, units, when = (close < 0.75 * ma))

//strategy.order("S1", false, units, when = (close > 1.05 * ma) and (close < 1.1 * ma) and (strategy.position_size > 0))
//strategy.order("S2", false, units, when = (close > 1.1 * ma) and (close < 1.15 * ma) and (strategy.position_size > 0))
//strategy.order("S3", false, units, when = (close > 1.15 * ma) and (close < 1.2 * ma) and (strategy.position_size > 0))
//strategy.order("S4", false, units, when = (close > 1.2 * ma) and (close < 1.25 * ma) and (strategy.position_size > 0))
//strategy.order("S5", false, units, when = (close > 1.25 * ma) and (close < 1.3 * ma) and (strategy.position_size > 0))

//banding calculations
aH = 1.0 - deviation
aL = aH - deviation
bH = aL
bL = bH - deviation
cH = bL
cL = cH - deviation
dH = cL
dL = dH - deviation
eH = dL
strategy.initial_capital = 50000
//mode 8
strategy.order("B1", true, unitsLevel1, when = (close < aH * ma) and (close > aL * ma) and (unitsLevel1 * close < (strategy.initial_capital + strategy.netprofit)))
strategy.order("B2", true, unitsLevel2, when = (close < bH * ma) and (close > bL * ma) and (unitsLevel2 * close < (strategy.initial_capital + strategy.netprofit)))
strategy.order("B3", true, unitsLevel3, when = (close < cH * ma) and (close > cL * ma) and (unitsLevel3 * close < (strategy.initial_capital + strategy.netprofit)))
strategy.order("B4", true, unitsLevel4, when = (close < dH * ma) and (close > dL * ma) and (unitsLevel4 * close < (strategy.initial_capital + strategy.netprofit)))
strategy.order("B5", true, unitsLevel5, when = (close < eH * ma) and (unitsLevel5 * close < (strategy.initial_capital + strategy.netprofit)))

//banding calculations
fL = 1.0 + deviation
fH = fL + deviation
gL = fH
gH = gL + deviation
hL = gH
hH = hL + deviation
iL = hH
iH = iL + deviation
jL = iH

strategy.order("S1", false, unitsLevel1, when = (close > fL * ma) and (close < fH * ma) and (strategy.position_size > 0))
strategy.order("S2", false, unitsLevel2, when = (close > gL * ma) and (close < gH * ma) and (strategy.position_size > 0))
strategy.order("S3", false, unitsLevel3, when = (close > hL * ma) and (close < hH * ma) and (strategy.position_size > 0))
strategy.order("S4", false, unitsLevel4, when = (close > iL * ma) and (close < iH * ma) and (strategy.position_size > 0))
strategy.order("S5", false, unitsLevel5, when = (close > jL * ma) and (strategy.position_size > 0))

plot(ma, color=#666666, linewidth=5)