
सारांशः यह रणनीति एक शास्त्रीय ट्रेडिंग रणनीति है जो औसत रेखाओं को पार करने पर आधारित है। सूचक दो औसत रेखाओं का चयन करता है, जिसमें सरल चलती औसत (एसएमए), सूचकांक चलती औसत (ईएमए), रैखिक भारित चलती औसत (वीडब्ल्यूएमए) और हादसा भारित चलती औसत (एचएमए) शामिल हैं।
सिद्धांतः रणनीति का मुख्य तर्क द्वि-मध्यम रेखा का क्रॉसिंग है। दो अलग-अलग मापदंडों के लिए औसत की गणना करके, एक खरीद संकेत उत्पन्न होता है जब एक तेज औसत रेखा पर एक धीमी औसत रेखा होती है; एक बेचने का संकेत जब एक तेज औसत रेखा के नीचे एक धीमी औसत रेखा होती है। औसत रेखा का क्रॉसिंग मूल्य की अल्पकालिक और दीर्घकालिक प्रवृत्ति का प्रतिनिधित्व करता है।
लाभ विश्लेषणः द्वि-समान रेखा क्रॉस रणनीति के फायदे मुख्य रूप से सरल और आसान संचालन में हैं, एक संकेत के माध्यम से सबसे बुनियादी प्रवृत्ति निर्णय प्राप्त किया जा सकता है, बहुत अधिक पैरामीटर चयन और समायोजन की आवश्यकता नहीं है, जो नौसिखिया व्यापारियों के लिए बहुत उपयुक्त है। और विभिन्न प्रकार के समान रेखा परीक्षण किए जाते हैं, अनुकूलन के लिए विभिन्न संयोजनों का चयन किया जा सकता है।
जोखिम विश्लेषणः इस रणनीति का मुख्य जोखिम यह है कि सामान्य औसत रेखा पार करने वाली रणनीतियों में बहुत सारे झूठे संकेत होते हैं, जिससे छोटे मुनाफे के लिए कई बार पट्टे की समस्या होती है, जिससे समग्र रिटर्न प्रभावित होता है। इसके अलावा, निश्चित तेज़ और धीमी औसत रेखा की लंबाई की सेटिंग कुछ चक्रों के तहत भी विफल हो सकती है।
ऑप्टिमाइज़ेशन दिशाः 1) विभिन्न चक्र परीक्षणों का प्रयास करें, सबसे अच्छा औसत रेखा क्रॉसिंग चक्र संयोजन निर्धारित करें; 2) औसत रेखा के दूसरे सेट के मापदंडों को शामिल करने पर विचार करें और आरएसआई संकेतक के सहायक निर्णय को झूठे संकेतों को कम करें; 3) सरल क्रॉसिंग के बजाय एमए संकेतक की वृद्धिशीलता में परिवर्तन के आधार पर सशर्त निर्णय को शामिल करें, और अधिक विश्वसनीय क्रॉसिंग निर्णय प्राप्त करें।
सारांशः इस रणनीति में पारंपरिक रेविनरी क्रॉसिंग रणनीति का ढांचा है, जो रेविनरी ROC और कीमत के आधार पर स्टॉप लॉस के निर्धारण के साथ-साथ इष्टतम रेविनरी चक्र संयोजन खोजने के लिए द्वि-रेविनरी परीक्षण करता है। कुल मिलाकर, यह एक सरल, आसान उपयोग करने वाली द्वि-रेविनरी रणनीति है जो क्वांटिफाइड ट्रेडिंग लॉजिक के अनुरूप है। इसके अलावा, अनुकूलन विचारों की एक विस्तृत श्रृंखला भी इस रणनीति के बाद के विकास के लिए जगह प्रदान करती है।
/*backtest
start: 2023-11-27 00:00:00
end: 2023-12-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//study(title="MA Crossover Strategy", overlay = true)
strategy("MA Crossover Strategy with MA Turning Point Exits", overlay=true)
src = input(close, title="Source")
price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(5, title="1st MA Length")
type1 = input("HMA", "1st MA Type", options=["SMA", "EMA", "HMA", "VWMA"])
ma2 = input(7, title="2nd MA Length")
type2 = input("HMA", "2nd MA Type", options=["SMA", "EMA", "HMA", "VWMA"])
f_hma(_src, _length)=>
_return = wma((2*wma(_src, _length/2))-wma(_src, _length), round(sqrt(_length)))
price1 = if (type1 == "SMA")
sma(price, ma1)
else
if (type1 == "EMA")
ema(price, ma1)
else
if (type1 == "VWMA")
vwma(price, ma1)
else
f_hma(price, ma1)
price2 = if (type2 == "SMA")
sma(price, ma2)
else
if (type2 == "EMA")
ema(price, ma2)
else
if (type2 == "VWMA")
vwma(price, ma2)
else
f_hma(price, ma2)
//plot(series=price, style=line, title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=line, title="1st MA", color=blue, linewidth=2, transp=0)
plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0)
longCondition = crossover(price1, price2)
if (longCondition) // and time>timestamp(2018,6,1,9,30)
strategy.entry("Long", strategy.long)
shortCondition = crossunder(price1, price2)
if (shortCondition) // and time>timestamp(2018,6,1,9,30)
strategy.entry("Short", strategy.short)
lookback1 = input(1, "Lookback 1")
roc1 = roc(price1, lookback1)
ma1up = false
ma1down = false
ma2up = false
ma2down = false
ma1up := nz(ma1up[1])
ma1down := nz(ma1down[1])
ma2up := nz(ma2up[1])
ma2down := nz(ma2down[1])
trendStrength1 = input(2, title="Minimum slope magnitude * 100", type=float) * 0.01
if crossover(roc1, trendStrength1)
ma1up := true
ma1down := false
if crossunder(roc1, -trendStrength1)
ma1up := false
ma1down := true
shortexitCondition = ma1up and ma1down[1]
if (shortexitCondition)
strategy.close("Short")
longexitCondition = ma1down and ma1up[1]
if (longexitCondition)
strategy.close("Long")