
यह रणनीति MACD और RSI के दो तकनीकी संकेतकों का संयोजन करती है, जो MACD के क्रॉस सिग्नल और RSI के ओवरबॉय ओवरसोल सिग्नल का उपयोग करके ट्रेडिंग समय का निर्धारण करती है। साथ ही, रणनीति में एक वजनदार चलती औसत ((WMA) को भी पेश किया गया है, जो रणनीति की विश्वसनीयता को बढ़ाने के लिए सहायक निर्णय है। रणनीति 1 घंटे के समय के भीतर चलती है, जब MACD में गोल्ड फोर्क होता है और RSI 50 से अधिक होता है, तो स्थिति को खोला जाता है, और जब MACD में डैड फोर्क होता है और RSI 50 से कम होता है, तो स्थिति को खाली कर दिया जाता है। इसके अलावा, जब RSI 70 से अधिक होता है, तो स्थिति को खाली कर दिया जाता है, और RSI 30 से कम होता है। इसके अलावा, रणनीति विभिन्न समय के पैमाने पर प्रवृत्ति में परिवर्तन का न्याय करने के लिए कई समय सीमाओं की चर भी सेट करती है।
इस रणनीति के केंद्र में MACD और RSI दो तकनीकी संकेतकों के संयोजन का उपयोग है। MACD एक तेज रेखा ((शॉर्ट-टर्म मूविंग एवरेज) और धीमी रेखा ((लॉन्ग-टर्म मूविंग एवरेज) के अंतर का गठन करता है, जो बाजार के रुझान में बदलाव को दर्शाता है। जब तेज रेखा पर धीमी रेखा को पार करते हैं, तो गोल्ड फोर्क बनता है, जो ऊपरी प्रवृत्ति को दर्शाता है, और इसके विपरीत, एक मृत फोर्क बनता है, जो गिरावट की प्रवृत्ति को दर्शाता है। आरएसआई बाजार के ओवरबॉय ओवरसोल्ड स्थिति का एक सूचक है, जब आरएसआई 70 से अधिक होता है, तो यह दर्शाता है कि बाजार ओवरबॉय स्थिति में है, और वापस बुलाने का जोखिम हो सकता है; जब आरएसआई 30 से कम होता है, तो यह दर्शाता है कि बाजार ओवरसोल्ड स्थिति में है, और एक पलटाव की संभावना है।
यह रणनीति MACD और RSI को जोड़ती है, MACD के रुझान निर्णय और RSI के ओवरबॉय और ओवरसोल निर्णय का उपयोग करके व्यापार के समय को अधिक सटीक रूप से पकड़ने के लिए। साथ ही, रणनीति में एक भारित चलती औसत (डब्ल्यूएमए) को एक सहायक निर्णय के रूप में पेश किया गया है, जो सामान्य चलती औसत की तुलना में डब्ल्यूएमए को हाल की कीमतों पर अधिक ध्यान देता है, जो कीमतों में बदलाव को अधिक संवेदनशीलता से दर्शाता है।
इसके अलावा, रणनीति में विभिन्न समय-सीमाओं पर प्रवृत्ति परिवर्तन का आकलन करने के लिए कई समय-सीमाओं के चर (जैसे 15 मिनट, 30 मिनट, 1 घंटा, 2 घंटे आदि) को सेट किया गया है। इस प्रकार के बहु-समय-सीमा विश्लेषण रणनीति को बाजार के रुझानों को अधिक व्यापक रूप से पकड़ने में मदद कर सकते हैं और निर्णय लेने की सटीकता में सुधार कर सकते हैं।
रणनीति के तर्क स्पष्ट है, समझने में आसान है और लागू करने के लिए, बेहतर बाजार के रुझानों को पकड़ने के लिए और ओवरबॉट ओवरसोल की स्थिति, कुछ व्यवहार्यता है. हालांकि, रणनीति भी कुछ सीमाओं और जोखिमों, जैसे कि विलंबता, एकल समय सीमा, जोखिम नियंत्रण की कमी, आदि के साथ है भविष्य. रणनीति में सुधार करने के लिए और अधिक संकेतकों, अनुकूलन समय सीमा, जोखिम नियंत्रण, पैरामीटर अनुकूलन, आदि को शुरू करने से इसकी स्थिरता और लाभप्रदता में सुधार किया जा सकता है। कुल मिलाकर, यह रणनीति व्यापार की मात्रा के लिए एक विचार प्रदान करती है, लेकिन इसे लगातार अनुकूलन और अभ्यास में सुधार की आवश्यकता है।
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Improved MACD and RSI Trading Strategy", overlay=true, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.01, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// MACD 設置
fast_length = input(12, title="MACD Fast Length")
slow_length = input(26, title="MACD Slow Length")
signal_smoothing = input(9, title="MACD Signal Smoothing")
// RSI 設置
input_rsi_length = input.int(14, title="RSI Length")
input_rsi_source = input(close, "RSI Source")
RSI = ta.rsi(input_rsi_source, input_rsi_length)
// 計算MACD和信號線
[macdLine, signalLine, _] = ta.macd(close, fast_length, slow_length, signal_smoothing)
// 自然交易理論:利用MACD和RSI的結合
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
maTypeInput = input.string("SMA", title="Moving Average Type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="Moving Average Length", group="MA Settings")
macdMA = ma(macdLine, maLengthInput, maTypeInput)
// 設置交易信號
longCondition = ta.crossover(macdLine, signalLine) and macdLine > macdMA and RSI < 70
shortCondition = ta.crossunder(macdLine, signalLine) and macdLine < macdMA and RSI > 30
// 定義時間框架
tf_15m = ta.change(RSI, 15) > 0 ? 1 : 0
tf_30m = ta.change(RSI, 30) > 0 ? 1 : 0
tf_1h = ta.change(RSI, 60) > 0 ? 1 : 0
tf_2h = ta.change(RSI, 120) > 0 ? 1 : 0
tf_4h = ta.change(RSI, 240) > 0 ? 1 : 0
tf_6h = ta.change(RSI, 360) > 0 ? 1 : 0
tf_8h = ta.change(RSI, 480) > 0 ? 1 : 0
tf_12h = ta.change(RSI, 720) > 0 ? 1 : 0
tf_1d = ta.change(RSI, 1440) > 0 ? 1 : 0
// 設置開倉、平倉和空倉條件
if (longCondition and tf_1h and RSI > 50)
strategy.entry("Long", strategy.long)
if (shortCondition and tf_1h and RSI < 50)
strategy.entry("Short", strategy.short)
if (tf_1h and RSI > 70)
strategy.close("Long")
if (tf_1h and RSI < 30)
strategy.close("Short")
// 加入其他策略
// 定義加權平均價格
wma(source, length) =>
wma = 0.0
sum = 0.0
sum_wts = 0.0
for i = 0 to length - 1
wts = (length - i) * (length - i)
sum := sum + source[i] * wts
sum_wts := sum_wts + wts
wma := sum / sum_wts
wmaLength = input.int(20, title="WMA Length", group="Other Strategies")
wmaValue = wma(close, wmaLength)
// 設置交易信號
longWMACondition = close > wmaValue
shortWMACondition = close < wmaValue
if (longWMACondition and tf_1h and RSI > 50)
strategy.entry("Long WMA", strategy.long)
if (shortWMACondition and tf_1h and RSI < 50)
strategy.entry("Short WMA", strategy.short)
if (tf_1h and RSI > 70)
strategy.close("Long WMA")
if (tf_1h and RSI < 30)
strategy.close("Short WMA")
// 繪製MACD和RSI
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.red, title="Signal Line")