दोहरी चलती औसत और एमएसीडी संयोजन अल्पकालिक व्यापार रणनीति

लेखक:चाओझांग, दिनांक: 2023-10-09 16:47:42
टैगः

अवलोकन

यह रणनीति अल्पकालिक व्यापारिक अवसरों की पहचान करने के लिए दोहरी चलती औसत, स्टोकैस्टिक संकेतक और एमएसीडी को जोड़ती है, जो एक अपेक्षाकृत क्लासिक अल्पकालिक व्यापारिक रणनीति है।

सिद्धांत

यह रणनीति मुख्यतः निम्नलिखित सिद्धांतों पर आधारित हैः

  1. प्रवृत्ति की दिशा निर्धारित करने के लिए 50-अवधि और 100-अवधि ईएमए का उपयोग करें। छोटी अवधि के साथ ईएमए मूल्य परिवर्तनों पर तेजी से प्रतिक्रिया कर सकता है। 100-अवधि ईएमए के ऊपर 50-अवधि ईएमए का क्रॉसिंग लंबी स्थिति की स्थापना का प्रतिनिधित्व करता है; नीचे क्रॉसिंग शॉर्ट स्थिति की स्थापना का प्रतिनिधित्व करती है।

  2. प्रवेश और निकास बिंदुओं को निर्धारित करने के लिए एमएसीडी के बीच अंतर का उपयोग करें। जब अंतर 0 से ऊपर जाता है, तो यह बुल पावर की मजबूती को दर्शाता है और लंबे प्रवेश की ओर जाता है; जब यह 0 से नीचे जाता है, तो यह भालू शक्ति की मजबूती को दर्शाता है और छोटे प्रवेश की ओर जाता है।

  3. ओवरबॉट और ओवरसोल्ड स्थिति का न्याय करने के लिए स्टोकेस्टिक आरएसआई संकेतक को मिलाएं। यह संकेतक केडीजे और आरएसआई के फायदे को जोड़ती है, और ओवरबॉट और ओवरसोल्ड स्थितियों को अच्छी तरह से दिखा सकती है। जब यह 20 से कम होता है, तो बाजार ओवरसोल्ड होता है, और लंबी प्रविष्टि को अन्य संकेतकों को जोड़ने पर विचार किया जा सकता है; जब यह 80 से अधिक होता है, तो बाजार ओवरबोल्ड होता है, और छोटी प्रविष्टि पर विचार किया जा सकता है।

  4. प्रवेश दिशा निर्धारित करने के बाद, यदि नवीनतम 5 मोमबत्तियों में से 4 की समापन कीमतें चलती औसत को छूती हैं, तो यह दर्शाता है कि चलती औसत के आसपास समर्थन/प्रतिरोध है, और पद खोले जा सकते हैं।

  5. जोखिमों का प्रबंधन करने के लिए स्टॉप लॉस और ले लाभ का प्रयोग करें।

लाभ

इस रणनीति के लाभों में निम्नलिखित शामिल हैंः

  1. कई संकेतकों का संयोजन चलती औसत, ओवरबॉट/ओवरसोल्ड सूचक और गति सूचक का एक साथ उपयोग करके जीत की दर में सुधार करता है।

  2. लघु अवधि के चलती औसत तेजी से प्रवृत्ति और उलटफेर को पकड़ सकते हैं। MACD मापदंडों को सटीक प्रवेश संकेत उत्पन्न करने के लिए अनुकूलित किया गया है।

  3. स्टोकैस्टिक आरएसआई मापदंडों को ओवरबॉट/ओवरसोल्ड स्थितियों को अच्छी तरह से पहचानने के लिए अनुकूलित किया गया है।

  4. समय नियंत्रण के लिए चलती औसत के आसपास समर्थन/प्रतिरोध का उपयोग करना नकली ब्रेकआउट से फंसने से बचाता है।

  5. उचित स्टॉप लॉस और ले लाभ प्रत्येक व्यापार के लिए जोखिम को प्रभावी ढंग से नियंत्रित करता है।

जोखिम

इस रणनीति के कुछ जोखिम भी हैंः

  1. नकली पलायनों के कारण होने वाले नुकसान से पूरी तरह बचने में विफलता।

  2. संकेतकों के बीच विचलन हो सकता है, जिससे असंगत ट्रेडिंग सिग्नल हो सकते हैं।

  3. फिक्स्ड स्टॉप लॉस और टेक प्रॉफिट बाजार परिवर्तनों के अनुकूल नहीं हो सकते हैं।

  4. कई मापदंडों के साथ जटिल कोड को अनुकूलित करना मुश्किल है।

समाधान इस प्रकार हैं:

  1. सिग्नल की गुणवत्ता में सुधार और नकली ब्रेकआउट की संभावनाओं को कम करने के लिए मापदंडों का अनुकूलन करें।

  2. संघर्षों से बचने के लिए संकेतकों के बीच प्राथमिकताएं निर्धारित करें।

  3. गतिशील स्टॉप लॉस को अपनाएं और एटीआर रेंज के आधार पर लाभ लें।

  4. परीक्षण और अनुकूलन के लिए तर्क को सरल करें और मुख्य मापदंडों को निकालें।

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

इस रणनीति को निम्नलिखित पहलुओं में अनुकूलित किया जा सकता हैः

  1. चलती औसत अवधि और एमएसीडी मापदंडों के इष्टतम संयोजनों का परीक्षण और पता लगाना।

  2. स्टोकैस्टिक आरएसआई को बदलने के लिए विभिन्न ओवरबॉट/ओवरसोल्ड संकेतकों का परीक्षण करें।

  3. जोखिम प्रबंधन को अधिक बुद्धिमान बनाने के लिए गतिशील स्टॉप लॉस और ले लाभ, ट्रेलिंग स्टॉप का प्रयास करें।

  4. सिग्नल की गुणवत्ता में सुधार के लिए वॉल्यूम बढ़ाने जैसी फ़िल्टरिंग शर्तें जोड़ें।

  5. अप्रभावी ब्रेकआउट से बचने के लिए प्रवेश तर्क को अनुकूलित करें, प्रवृत्ति निर्धारित करने के लिए अधिक संकेतकों का उपयोग करें।

  6. समग्र जोखिमों को नियंत्रित करने के लिए खाते के आकार, प्रति दिन ट्रेडों की संख्या के अनुसार स्टॉप लॉस सीमाएं निर्धारित करें।

सारांश

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


/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title="Forex scalper 2xEMA + SRSI + MACD", shorttitle="Forex scalper 5-15min", overlay=true)
src = input(title="Source", type=input.source, defval=close)

src_0 = src[0]
src_1 = src[1]
src_2 = src[2]
src_3 = src[3]
src_4 = src[4]

len50 = input(50, minval=1, title="Length")
src50 = input(close, title="Source")
out50 = ema(src50, len50)
len100 = input(100)
src100 = input(close, title="Source")
out100 = ema(src100, len100)

len1 = input(1, minval=1, title="Length")
src1 = input(close, title="Source")
out1 = sma(src1, len1)

length = input(4, minval=1)
OverBought = input(80)
OverSold = input(20)
smoothK = 3
smoothD = 3

k = sma(stoch(close, high, low, length), smoothK)
d = sma(k, smoothD)
cu = crossover(k,OverSold)
co = crossunder(k,OverBought)

sma_down = crossunder(out1, out50)
sma_up = crossover(out1,out50)

//if (not na(k) and not na(d))
  //  if (co and k < OverSold)
    //    strategy.entry("StochLE", strategy.long, comment="StochLE")
    //if (cu and k > OverBought)
     //   strategy.entry("StochSE", strategy.short, comment="StochSE")

crossCandle_4 = crossover(src[4],out50)
crossCandleUnder_4= cross(src[4],out50)
crossCandle_3 = crossover(src[3],out50)
crossCandleUnder_3= crossunder(src[3],out50)
crossCandle_2 = crossover(src[2],out50)
crossCandleUnder_2= crossunder(src[2],out50)
crossCandle_1 = crossover(src[1],out50)
crossCandleUnder_1= crossunder(src[1],out50)
crossCandle_0 = crossover(src[0],out50)
crossCandleUnder_0= crossunder(src[0],out50)

conditionOver = (crossCandle_4 or crossCandle_3 or crossCandle_2 or crossCandle_1 or crossCandle_0)
conditionUnder =(crossCandleUnder_4 or crossCandleUnder_3 or crossCandleUnder_2 or crossCandleUnder_1 or crossCandleUnder_0)

touch4 = (cross(low[4],out50) or cross(high[4],out50))
touch3 = (cross(low[3],out50) or cross(high[3],out50))
touch2 = (cross(low[2],out50) or cross(high[2],out50))
touch1 = (cross(low[1],out50) or cross(high[1],out50))

touch = touch1 or touch2 or touch3 or touch4

//and sma_up
//and sma_down

// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src_macd = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 10)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src_macd, fast_length) : ema(src_macd, fast_length)
slow_ma = sma_source ? sma(src_macd, slow_length) : ema(src_macd, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

//plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
//plot(macd, title="MACD", color=col_macd, transp=0)
//plot(signal, title="Signal", color=col_signal, transp=0)


// plot((conditionOver or conditionUnder or touch)  and src[0] >= out50 and close >= out50 and  (cu) and out50 > out100 and hist>=0 , title="Buy", style=columns, color=lime)
// plot((conditionOver or conditionUnder or touch)  and src[0] <= out50 and close <= out50 and  (co) and out50< out100 and hist<=0 , title="sell", style=columns, color=red)


long_cond = ((conditionOver or conditionUnder or touch)  and src[0] >= out50 and close > out50 and  (cu) and out50 > out100 and hist>=0)
short_cond = ((conditionOver or conditionUnder or touch)  and src[0] <= out50 and close < out50 and  (co) and out50< out100 and hist<=0)

tp=input(200)
sl=input(200)

strategy.entry("long",strategy.long, when=long_cond)
strategy.entry("short",strategy.short, when=short_cond)

strategy.exit("X_long", "long", profit=tp,  loss=sl, when=touch  )
strategy.exit("x_short", "short",profit=tp, loss=sl,when = touch )

अधिक