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

लेखक:चाओझांग, दिनांकः 2024-02-18 11:18:51
टैगः

img

अवलोकन

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

इस रणनीति का उद्देश्य स्थानीय ओवरबॉट या ओवरसोल्ड स्तरों से तेजी से मूल्य उलटफेर को पकड़ना है। यह आमतौर पर 15m समय सीमा का उपयोग करते हुए 0DTE SPY विकल्पों के लिए अच्छा प्रदर्शन करता है।

रणनीति तर्क

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

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

रणनीति में कुल मिलाकर तीन प्रवेश संकेत निर्धारित किए गए हैंः

  1. लंबी अवधि में खरीद मात्रा में बिक्री मात्रा से कोई लाभ नहीं है, बढ़ते समय 41 से कम आरएसआई, एमएसीडी संकेत में कोई महत्वपूर्ण विचलन नहीं है;

  2. लंबी जब खरीद मात्रा बिक्री मात्रा से अधिक मजबूत है, आरएसआई 45-55 रेंज में और बढ़ रहा है, एमएसीडी और सिग्नल लाइन एक साथ बढ़ रही है;

  3. कम जब एमएसीडी बढ़ते समय सीमा से ऊपर हो।

ये तीनों परिदृश्य एक दिशात्मक अति-विस्तार में स्थानीय स्तर के उतार-चढ़ाव को दर्शाते हैं, जो विपरीत दिशा में प्रवेश के लिए उपयुक्त उलट समय के रूप में आंका जाता है।

ड्रॉडाउन को नियंत्रित करने और लाभ प्राप्त करने के लिए आउटपुट को ले लो लाभ (सीमा आदेश) और स्टॉप लॉस के रूप में सेट किया जाता है।

लाभ विश्लेषण

स्टॉप लॉस और टेक प्रॉफिट एक दिशा में ओवर-ट्रेडिंग से बचने में भी मदद करता है जबकि लाभ को जल्दी से सुरक्षित करता है। स्टॉप लॉस और टेक प्रॉफिट एक दिशा में ओवर-ट्रेडिंग से बचने में भी मदद करता है।

विशेष रूप से, लाभों में शामिल हैंः

  1. एमएसीडी वॉल्यूम-वेटेड मोमेंटम ऑसिलेटर के रूप में, सरल तकनीकी विश्लेषण से बचता है;

  2. मात्रा की शर्तें प्रवेश के लिए विश्वास को बढ़ाती हैं;

  3. आरएसआई संभावित उलटफेरों की पहचान करने में सहायता करता है;

  4. स्टॉप लॉस और टेक प्रॉफिट अत्यधिक ड्रॉडाउन को नियंत्रित करता है और कुछ मुनाफे में लॉक करता है।

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

जीत दर में सुधार के लिए संकेतकों का संयोजन करने के बावजूद, सभी रणनीतियों में जोखिम होते हैं। मुख्य मुद्दे हैंः

  1. झूठे संकेतों की संभावना, जैसे कि प्रारंभिक उल्टा होने के बाद निरंतरता;

  2. अपर्याप्त स्टॉप लॉस और लाभ लेने की सेटिंग्स से अत्यधिक मात्रा में ड्रॉडाउन होता है और लाभ में लॉक नहीं होता है;

  3. एमए लंबाई, आरएसआई अवधि, लाभ लेने के अनुपात जैसे पैरामीटर ट्यूनिंग को आगे अनुकूलन की आवश्यकता हो सकती है।

इन जोखिमों को अतिरिक्त अनुकूलन के द्वारा कम किया जा सकता है।

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

इसके अतिरिक्त अनुकूलन के लिए अभी भी गुंजाइश है, मुख्यतः:

  1. सर्वोत्तम परिणामों के लिए विभिन्न एमए पैरामीटर संयोजनों का परीक्षण करें;

  2. अधिकतम ओवरबॉट/ओवरसोल्ड न्यायाधीश खोजने के लिए आरएसआई लुकबैक अवधि का परीक्षण करें;

  3. लाभ लेने और हानि रोकने के अनुपातों को अनुकूलित करना ताकि निकासी को संतुलित किया जा सके और लाभ प्राप्त किया जा सके।

  4. मशीन लर्निंग मॉडल पेश करें, गलत आकलन को कम करने और जीत दर में सुधार के लिए अधिक डेटा का लाभ उठाएं।

इन्हें अधिक व्यवस्थित बैकटेस्ट के माध्यम से लागू किया जा सकता है। जैसे-जैसे पैरामीटर स्पेस का विस्तार होता है और नमूना आकार बढ़ता है, रणनीति जीत दर और लाभप्रदता में भी सुधार होगा।

निष्कर्ष

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


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("3 1 Oscillator Profile Flagging", shorttitle="3 1 Oscillator Profile Flagging", overlay=false)

signalBiasValue = input(title="Signal Bias", defval=0.26)
macdBiasValue = input(title="MACD Bias", defval=0.7)
shortLookBack = input( title="Short LookBack", defval=3)
longLookBack = input( title="Long LookBack", defval=6)
takeProfit = input( title="Take Profit", defval=2)
stopLoss = input( title="Stop Loss", defval=0.7)

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")
plot(macdSlope, color=color.green, title="MACD Slope")
plot(signalSlope, color=color.red, title="Signal Slope")
intrabarRange = high - low
rsi = ta.rsi(close, 14)
rsiSlope = rsi - rsi[1]
plot(rsiSlope, color=color.black, title="RSI Slope")

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 )


// 202.30 Profit 55.29% 5m
if ( ( getVolBias(longLookBack) == false ) and rsi <= 41 and math.abs(rsi - rsi[shortLookBack]) > 1 and hasNoSignalBias and rsiSlope > 1.5 and close > open)
    strategy.entry("5C1", strategy.long, qty=1)
strategy.exit("TPS", "5C1", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)

// 171.70 Profit 50.22% 5m
if ( getVolBias(longLookBack) == true and rsi > 45 and rsi < 55 and macdSlope > 0 and signalSlope > 0)
    strategy.entry("5C2", strategy.long, qty=1)
strategy.exit("TPS", "5C2", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)

// 309.50 Profit 30.8% 5m 2 tp .7 sl 289 trades
if ( macd > macdBiasValue and macdSlope > 0)
    strategy.entry("5P1", strategy.short, qty=1)
strategy.exit("TPS", "5P1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)


अधिक