एमएसीडी संकेतक ब्रेकआउट ट्रेडिंग रणनीति


निर्माण तिथि: 2023-09-12 15:32:12 अंत में संशोधित करें: 2023-09-12 15:32:12
कॉपी: 1 क्लिक्स: 789
1
ध्यान केंद्रित करना
1617
समर्थक

इस रणनीति का उपयोग MACD सूचक के अंतर वक्र को तोड़ने के लिए व्यापार निर्णय लेने के लिए किया जाता है। MACD तेज और धीमी ईएमए से बना होता है, जब अंतर वक्र शून्य-अक्ष को तोड़ता है तो व्यापार संकेत उत्पन्न होता है। यह रणनीति एक विशिष्ट ट्रैक-टाइप मात्रात्मक व्यापार रणनीति है।

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

  1. फास्ट लाइन ईएमए और स्लो लाइन ईएमए की गणना करें, दोनों के अंतर से एमएसीडी वक्र बनता है।

  2. MACD वक्र पर EMA को चिकना करने के लिए, MACD सिग्नल लाइन प्राप्त करें।

  3. जब MACD सिग्नल लाइन को पार करता है तो अधिक काम करता है, जब सिग्नल लाइन को पार करता है तो खाली होता है।

  4. जोखिम प्रबंधन के लिए प्रतिशत स्टॉप लॉस स्टॉप पॉइंट सेट करें।

इस रणनीति के फायदे:

  1. एक एकल ईएमए की तुलना में एमएसीडी बेहतर है, जो प्रवृत्ति को अधिक स्पष्ट रूप से बताता है।

  2. ट्रेडों को तोड़ने के लिए समय पर अवसरों को पकड़ना।

  3. स्टॉप लॉस स्टॉप सिस्टम ट्रेडिंग जोखिम को नियंत्रित करने में मदद करता है।

इस रणनीति के जोखिम:

  1. एमएसीडी वक्र के शून्य-अक्ष के पास अधिक झूठे ब्रेक सिग्नल हो सकते हैं।

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

  3. ट्रेंड ट्रेडिंग में आकस्मिकताएं होती हैं, इसलिए स्टॉप लॉस की आवश्यकता होती है।

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

रणनीति स्रोत कोड
/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3 
strategy("uray MACD", overlay=false, pyramiding = 0, calc_on_every_tick=true, precision=2, currency="USD", default_qty_value=10, default_qty_type=strategy.cash,initial_capital=100,commission_type=strategy.commission.percent,commission_value=0.1) 

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 6, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 6, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2020, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
inTimeframe()  => true


isPosLong    = strategy.position_size > 0
isPosShort   = strategy.position_size < 0
isNoMarginPos= strategy.position_size == 0

fastLength    = input(12, minval = 1, title = "MACD fast")
slowlength    = input(26, minval = 1, title = "MACD slow")
MACDLength    = input( 9, minval = 1, title = "MACD length")
stopLoss      = input( 10, minval = 1, title = "Stop Loss (price %)", type=float)
takeProfit    = input( 50, minval = 1, title = "Take Profit (price %)", type=float)
src           = close   // Source of Calculations (Close of Bar)

MACD  = ta.ema(src, fastLength) - ta.ema(src, slowlength)
aMACD = ta.ema(MACD, MACDLength)
delta = MACD - aMACD
stopLossValue      = close*(stopLoss/100)/syminfo.mintick
takeProfitValue    = close*(takeProfit/100)/syminfo.mintick
switchLongTrigger  = ta.crossover(delta, 0)
switchShortTrigger = ta.crossunder(delta, 0)
closeLongTrigger   = ta.crossunder(delta, 0)
closeShortTrigger  = ta.crossover(delta, 0)
entryLongTrigger   = ta.crossover(delta, 0)
entryShortTrigger  = ta.crossunder(delta, 0)

// if inTimeframe()
//     if isNoMarginPos
//         if entryLongTrigger
//             strategy.entry("Long", strategy.long,  comment="Entry Long")
//             strategy.exit("Stop (long SL/TP)", loss=stopLossValue, profit=takeProfitValue)   
//         if entryShortTrigger
//             strategy.entry("Short", strategy.short, comment="Entry Short")  
//             strategy.exit("Stop (short SL/TP)", loss=stopLossValue, profit=takeProfitValue)   
//     if isPosShort
//         if switchLongTrigger
//             strategy.close_all()    
//             strategy.entry("Long", strategy.long, comment="switch Long")
//             strategy.exit("Stop (long SL/TP)", loss=stopLossValue, profit=takeProfitValue)   
//         if closeLongTrigger
//             strategy.close_all()    
//     if isPosLong 
//         if switchShortTrigger
//             strategy.close_all()   
//             strategy.entry("Short", strategy.short, comment="switch Short")
//             strategy.exit("Stop (short SL/TP)", loss=stopLossValue, profit=takeProfitValue) 
//         if closeShortTrigger
//             strategy.close_all()   

if inTimeframe()
    strategy.entry("Long", strategy.long,  comment="Entry Long", when=entryLongTrigger)
    strategy.close("Long", when=entryShortTrigger)
    strategy.entry("Short", strategy.short,  comment="Entry Short", when=entryShortTrigger)
    strategy.close("Short", when=entryLongTrigger)
    strategy.exit("Stop (short SL/TP)", loss=stopLossValue, profit=takeProfitValue, when=entryShortTrigger) 
    strategy.exit("Stop (long SL/TP)", loss=stopLossValue, profit=takeProfitValue, when=entryLongTrigger)