
बहु-समय अवधि MACD शून्य-अक्ष क्रॉस-रिवर्स रणनीति विभिन्न चक्रों के MACD संकेतकों की गणना करके, कीमतों के संभावित रिवर्स के संकेतों की पहचान करने, रुझान-ट्रेसिंग स्टॉप-लॉस का उपयोग करने और उच्च धन उपयोगिता दक्षता की तलाश करने के लिए।
यह रणनीति 3 चक्र और 10 चक्रों के एसएमए चलती औसत की गणना करती है, एक तेज़ और धीमी रेखा का निर्माण करती है, और एमएसीडी संकेतक और सिग्नल लाइन की गणना करती है। जब तेज़ और सिग्नल लाइन ऊपर या नीचे की ओर शून्य-अक्षीय क्रॉसिंग होती है, तो यह दर्शाता है कि कीमत एक महत्वपूर्ण बिंदु तक पहुंच गई है, और एक पलटाव की संभावना है। इसके अलावा, यह रणनीति पारस्परिक रूप से बहु-हल्का स्थिति निर्णय, आरएसआई संकेतक आदि को जोड़ती है, पलटाव संकेतों की विश्वसनीयता की पहचान करने के लिए। जब पलटाव संकेत एक निश्चित विश्वसनीयता आवश्यकता को पूरा करता है, तो अधिक या शून्य करें।
विशेष रूप से, रणनीति निम्नलिखित तरीकों से कीमतों में उलटफेर का आकलन करती हैः
जब रिवर्स सिग्नल की विश्वसनीयता अधिक होती है, तो रणनीति प्रवृत्ति को ट्रैक करने के लिए स्टॉप लॉस में प्रवेश करती है ताकि उच्च लाभ प्राप्त किया जा सके।
इस रणनीति के कुछ फायदे हैंः
इस रणनीति के कुछ जोखिम भी हैं:
जोखिम को निम्न तरीकों से कम किया जा सकता हैः
इस रणनीति को और भी बेहतर बनाया जा सकता है, जिसमें शामिल हैंः
बहु-समय अवधि MACD शून्य-अक्ष क्रॉस-रिवर्स रणनीति, मूल्य, लेन-देन की मात्रा और उतार-चढ़ाव के संकेतक जैसे कई आयामों की जानकारी को समग्र रूप से विचार करती है, बहु-संकेतक निर्णय के माध्यम से रिवर्स में प्रवेश करने का समय निर्धारित करती है, लाभप्रदता के बाद समय पर बंद हो जाती है, रिवर्स की स्थिति में बेहतर रिटर्न प्राप्त करने में सक्षम होती है। इस रणनीति में मशीन सीखने और महत्वपूर्ण स्थिति अनुकूलन आदि के माध्यम से आगे सुधार की उम्मीद है, ताकि व्यापार की आवृत्ति और जोखिम को कम किया जा सके, लाभप्रदता के लिए जगह बढ़ाई जा सके।
/*backtest
start: 2023-02-11 00:00:00
end: 2024-02-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("3 10.0 Oscillator Profile Flagging", shorttitle="3 10.0 Oscillator Profile Flagging", overlay=false)
signalBiasValue = input(title="Signal Bias", defval=0.26)
macdBiasValue = input(title="MACD Bias", defval=0.8)
shortLookBack = input( title="Short LookBack", defval=3)
longLookBack = input( title="Long LookBack", defval=10.0)
takeProfit = input( title="Take Profit", defval=0.8)
stopLoss = input( title="Stop Loss", defval=0.75)
fast_ma = ta.sma(close, 3)
slow_ma = ta.sma(close, 10)
macd = fast_ma - slow_ma
signal = ta.sma(macd, 16)
hline(0, "Zero Line", color = color.black)
buyVolume = volume*((close-low)/(high-low))
sellVolume = volume*((high-close)/(high-low))
buyVolSlope = buyVolume - buyVolume[1]
sellVolSlope = sellVolume - sellVolume[1]
signalSlope = ( signal - signal[1] )
macdSlope = ( macd - macd[1] )
plot(macd, color=color.blue, title="Total Volume")
plot(signal, color=color.orange, title="Total Volume")
intrabarRange = high - low
rsi = ta.rsi(close, 14)
rsiSlope = rsi - rsi[1]
getRSISlopeChange(lookBack) =>
j = 0
for i = 0 to lookBack
if ( rsi[i] - rsi[ i + 1 ] ) > -5
j += 1
j
getBuyerVolBias(lookBack) =>
j = 0
for i = 1 to lookBack
if buyVolume[i] > sellVolume[i]
j += 1
j
getSellerVolBias(lookBack) =>
j = 0
for i = 1 to lookBack
if sellVolume[i] > buyVolume[i]
j += 1
j
getVolBias(lookBack) =>
float b = 0.0
float s = 0.0
for i = 1 to lookBack
b += buyVolume[i]
s += sellVolume[i]
b > s
getSignalBuyerBias(lookBack) =>
j = 0
for i = 1 to lookBack
if signal[i] > signalBiasValue
j += 1
j
getSignalSellerBias(lookBack) =>
j = 0
for i = 1 to lookBack
if signal[i] < ( 0.0 - signalBiasValue )
j += 1
j
getSignalNoBias(lookBack) =>
j = 0
for i = 1 to lookBack
if signal[i] < signalBiasValue and signal[i] > ( 0.0 - signalBiasValue )
j += 1
j
getPriceRising(lookBack) =>
j = 0
for i = 1 to lookBack
if close[i] > close[i + 1]
j += 1
j
getPriceFalling(lookBack) =>
j = 0
for i = 1 to lookBack
if close[i] < close[i + 1]
j += 1
j
getRangeNarrowing(lookBack) =>
j = 0
for i = 1 to lookBack
if intrabarRange[i] < intrabarRange[i + 1]
j+= 1
j
getRangeBroadening(lookBack) =>
j = 0
for i = 1 to lookBack
if intrabarRange[i] > intrabarRange[i + 1]
j+= 1
j
bool isNegativeSignalReversal = signalSlope < 0.0 and signalSlope[1] > 0.0
bool isNegativeMacdReversal = macdSlope < 0.0 and macdSlope[1] > 0.0
bool isPositiveSignalReversal = signalSlope > 0.0 and signalSlope[1] < 0.0
bool isPositiveMacdReversal = macdSlope > 0.0 and macdSlope[1] < 0.0
bool hasBearInversion = signalSlope > 0.0 and macdSlope < 0.0
bool hasBullInversion = signalSlope < 0.0 and macdSlope > 0.0
bool hasSignalBias = math.abs(signal) >= signalBiasValue
bool hasNoSignalBias = signal < signalBiasValue and signal > ( 0.0 - signalBiasValue )
bool hasSignalBuyerBias = hasSignalBias and signal > 0.0
bool hasSignalSellerBias = hasSignalBias and signal < 0.0
bool hasPositiveMACDBias = macd > macdBiasValue
bool hasNegativeMACDBias = macd < ( 0.0 - macdBiasValue )
bool hasBullAntiPattern = ta.crossunder(macd, signal)
bool hasBearAntiPattern = ta.crossover(macd, signal)
bool hasSignificantBuyerVolBias = buyVolume > ( sellVolume * 1.5 )
bool hasSignificantSellerVolBias = sellVolume > ( buyVolume * 1.5 )
// 393.60 Profit 52.26% 15m
if ( hasBullInversion and rsiSlope > 1.5 and volume > 300000.0 )
strategy.entry("15C1", strategy.long, qty=10.0)
strategy.exit("TPS", "15C1", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)
// 356.10 Profit 51,45% 15m
if ( getVolBias(shortLookBack) == false and rsiSlope > 3.0 and signalSlope > 0)
strategy.entry("15C2", strategy.long, qty=10.0)
strategy.exit("TPS", "15C2", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)
// 124 Profit 52% 15m
if ( rsiSlope < -11.25 and macdSlope < 0.0 and signalSlope < 0.0)
strategy.entry("15P1", strategy.short, qty=10.0)
strategy.exit("TPS", "15P1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)
// 455.40 Profit 49% 15m
if ( math.abs(math.abs(macd) - math.abs(signal)) < .1 and buyVolume > sellVolume and hasBullInversion)
strategy.entry("15P2", strategy.short, qty=10.0)
strategy.exit("TPS", "15P2", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)