घातीय चलती औसत और एमएसीडी संकेतक पर आधारित रणनीति

लेखक:चाओझांग, दिनांक: 2023-12-08 16:58:01
टैगः

img

अवलोकन

यह रणनीति ट्रेंड फॉलो और मीडियन रिवर्सन ट्रेडिंग के माध्यम से मुनाफे का एहसास करने के लिए एक्सपोनेंशियल मूविंग एवरेज और एमएसीडी संकेतक से ब्रेकआउट सिग्नल, लंबी और छोटी होल्डिंग अवधि दोनों के साथ जोड़ती है।

रणनीतिक सिद्धांत

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

  1. मुख्य प्रवृत्ति की दिशा निर्धारित करने के लिए 200-दिवसीय ईएमए की गणना करें। 200-ईएमए से ऊपर की समापन कीमत ऊपर की प्रवृत्ति को इंगित करती है, जबकि नीचे की ओर नीचे की प्रवृत्ति को इंगित करती है।

  2. उच्चतम, निम्नतम और समापन कीमतों के मध्य मूल्य के आधार पर ईएमए की गणना करें, फिर एमएसीडी हिस्टोग्राम का निर्माण करने के लिए ईएमए और उच्चतम/निम्नतम कीमतों के बीच अंतर प्राप्त करें।

  3. एमएसीडी सिग्नल लाइन बनाने के लिए एमएसीडी हिस्टोग्राम के 9 दिन के एमए की गणना करें।

  4. जब एमएसीडी सिग्नल लाइन के ऊपर से गुजरता है तो एक खरीद सिग्नल उत्पन्न होता है, जबकि जब एमएसीडी सिग्नल लाइन के नीचे से गुजरता है तो एक बिक्री सिग्नल उत्पन्न होता है।

  5. मुख्य रुझानों के विश्लेषण को जोड़कर यह निर्धारित करें कि क्या बाजार एक नई प्रवृत्ति की शुरुआत में है या केवल एक अल्पकालिक उलट है।

लाभ

यह रणनीति ट्रेंड फॉलो और मीड रिवर्सन ट्रेडिंग दोनों को जोड़ती है, जो विभिन्न बाजार स्थितियों से निपटने के लिए दीर्घकालिक रुझानों को ट्रैक कर सकती है और अल्पकालिक रिवर्सन अवसरों को पकड़ सकती है।

मुख्य लाभों में निम्नलिखित शामिल हैंः

  1. 200-दिवसीय ईएमए मुख्य प्रवृत्ति दिशा निर्धारित करता है, प्रवृत्तियों के विरुद्ध व्यापार से बचता है।

  2. एमएसीडी संकेतक अल्पकालिक मूल्य परिवर्तनों के प्रति संवेदनशील है और लाभदायक उलट संकेतों को पकड़ सकता है।

  3. एमएसीडी घटकों के लिए विभिन्न मापदंड समय सीमाओं में ट्रेडिंग संकेत उत्पन्न कर सकते हैं।

  4. एकल व्यापार हानि को प्रभावी ढंग से नियंत्रित करने के लिए स्टॉप लॉस रणनीतियों को एकीकृत करता है।

जोखिम

मुख्य जोखिमों में निम्नलिखित शामिल हैंः

  1. दीर्घकालिक और अल्पकालिक संकेतकों के व्यापार संकेतों के बीच समय का अंतर हो सकता है। प्रमुख प्रवृत्ति पर निर्णय महत्वपूर्ण हैं।

  2. औसत प्रतिगमन सूचक के रूप में एमएसीडी मजबूत रुझानों के दौरान खराब प्रदर्शन कर सकता है।

  3. गलत स्टॉप लॉस प्लेसमेंट के परिणामस्वरूप समय से पहले स्टॉप लॉस ट्रिगर या ओवरसाइज्ड लॉस हो सकता है।

  4. बहुत अधिक बार आने वाले ब्रेकआउट सिग्नल अधिक झूठे सिग्नल ला सकते हैं।

समाधान:

  1. सूचक संवेदनशीलता को समायोजित करने के लिए एमएसीडी मापदंडों को अनुकूलित करें।

  2. बाजार की स्थितियों को निर्धारित करने के लिए अन्य संकेतकों का संयोजन करें, MACD संकेतों का अंधाधुंध पालन करने से बचें।

  3. स्टॉप लॉस रणनीति के मापदंडों का परीक्षण और अनुकूलन।

  4. झूठे संकेतों को कम करने के लिए फ़िल्टर जोड़ें।

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

रणनीति को निम्न के माध्यम से अनुकूलित किया जा सकता हैः

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

  2. रणनीति की प्रभावशीलता बढ़ाने के लिए मात्रा, आरएसआई जैसे अन्य संकेतक जोड़ें।

  3. प्रत्येक व्यापार के लिए निश्चित मात्रा के बजाय स्थिति आकार के नियम स्थापित करें।

  4. स्टॉप लॉस के ऊपर अधिक उन्नत एक्जिट नियम जोड़ें, जैसे लाभ लक्ष्य, ट्रेलिंग स्टॉप।

  5. वास्तविक व्यापार का अनुकरण करने के लिए अधिक यथार्थवादी शुल्क सेटिंग्स के साथ बैकटेस्ट।

  6. विश्वसनीयता में सुधार के लिए पैदल आगे का विश्लेषण, मजबूती परीक्षण करें।

निष्कर्ष

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


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Strategia EMA + Impulse MACD", shorttitle="EMA+IMACD", overlay=true)

// Impostazioni
ema_length = input(200, title="Periodo EMA a 200", type=input.integer)
lengthMA = input(34, title="Periodo EMA", type=input.integer)
lengthSignal = input(9, title="Periodo Signal", type=input.integer)
lengthImpulseMACD = input(12, title="Periodo Impulse MACD", type=input.integer)
lengthImpulseMACDSignal = input(9, title="Periodo Impulse MACD Signal", type=input.integer)
stopLossPeriod = input(20, title="Periodo Stop Loss", type=input.integer)

var float ema200 = na
if bar_index >= ema_length
    ema200 := ema(close, ema_length)

// Impulse MACD
var float hi = na
var float lo = na
var float mi = na
var float impulseMACD = na
var float impulseMACDSignal = na

calc_smma(src, len) =>
    var float smma = na
    if na(smma)
        smma := sma(src, len)
    else
        smma := (smma[1] * (len - 1) + src) / len
    smma

calc_zlema(src, length) =>
    ema1 = ema(src, length)
    ema2 = ema(ema1, length)
    d = ema1 - ema2
    ema1 + d

if bar_index >= lengthMA
    src = hlc3
    hi := calc_smma(high, lengthMA)
    lo := calc_smma(low, lengthMA)
    mi := calc_zlema(src, lengthMA)

    impulseMACD := (mi > hi) ? (mi - hi) : (mi < lo) ? (mi - lo) : 0
    impulseMACDSignal := sma(impulseMACD, lengthSignal)

// Calcolo dello stop loss
var float stopLossLong = na
var float stopLossShort = na

stopLossLong := lowest(low, stopLossPeriod)
stopLossShort := highest(high, stopLossPeriod)

// Calcolo del take profit
var float takeProfitLong = na
var float takeProfitShort = na

if not na(stopLossLong)
    takeProfitLong := close + (close - stopLossLong) * 1.5
if not na(stopLossShort)
    takeProfitShort := close - (stopLossShort - close) * 1.5

// Condizioni per aprire una posizione long
longCondition = not na(ema200) and not na(impulseMACD) and not na(impulseMACDSignal) and close > ema200 and impulseMACD < 0 and impulseMACDSignal < 0 and crossover(impulseMACD, impulseMACDSignal)

// Condizioni per aprire una posizione short
shortCondition = not na(ema200) and not na(impulseMACD) and not na(impulseMACDSignal) and close < ema200 and impulseMACD > 0 and impulseMACDSignal > 0 and crossunder(impulseMACD, impulseMACDSignal)

// Disegna l'EMA 200 sul grafico
plot(ema200, color=color.blue, title="EMA 200")

// Imposta lo stop loss e il take profit
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)
strategy.exit("Take Profit/Stop Loss Long", from_entry="Long", stop=stopLossLong, limit=takeProfitLong)
strategy.exit("Take Profit/Stop Loss Short", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)

// Impulse MACD
plot(0, color=color.gray, linewidth=1, title="MidLine")
plot(impulseMACD, color=color.red, linewidth=2, title="ImpulseMACD", style=plot.style_histogram)
plot(impulseMACDSignal, color=color.blue, linewidth=2, title="ImpulseMACDSignal", style=plot.style_histogram)

// Disegna le operazioni long e short sul grafico
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.triangleup, title="Long Entry")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.triangledown, title="Short Entry")


अधिक