पूर्ण क्रिप्टो स्विंग ALMA क्रॉस MACD मात्रात्मक रणनीति

लेखक:चाओझांग, दिनांकः 2023-12-05 10:24:34
टैगः

img

अवलोकन

यह रणनीति स्वचालित लंबी और छोटी स्थिति प्राप्त करने के लिए डबल ALMA मूविंग एवरेज लाइनों के गोल्डन क्रॉस और डेड क्रॉस सिग्नल पर आधारित है, जो MACD संकेतक के लंबे और छोटे संकेतों के साथ संयुक्त है। यह रणनीति 4 घंटे या उससे अधिक के समय के फ्रेम के लिए उपयुक्त है, और परीक्षण डेटा BNB/USDT है जो 2017 से वर्तमान तक है, जिसमें कमीशन दर 0.03% पर सेट है।

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

यह रणनीति ALMA से निर्मित तेज और धीमी रेखाओं का उपयोग दोहरी चलती औसत बनाने के लिए करती है। तेज रेखा की लंबाई 20 है और धीमी रेखा 40 है, दोनों 0.9 के ऑफसेट और 5 के मानक विचलन को अपनाते हैं। जब तेज रेखा धीमी रेखा को पार करती है, तो एक लंबा संकेत उत्पन्न होता है। जब तेज रेखा धीमी रेखा से नीचे पार करती है, तो एक छोटा संकेत उत्पन्न होता है।

साथ ही, रणनीति में एमएसीडी सूचक का हिस्टोग्राम संकेत शामिल है। केवल जब एमएसीडी हिस्टोग्राम सकारात्मक (बढ़ रहा है) होता है, तो लंबा संकेत मान्य होता है; केवल जब एमएसीडी हिस्टोग्राम नकारात्मक (घट रहा है) होता है, तो छोटा संकेत मान्य होता है।

यह रणनीति लाभ लेने और स्टॉप लॉस की शर्तें भी निर्धारित करती है। लॉन्ग टेक प्रॉफिट 2 गुना और स्टॉप लॉस 0.2 गुना है; शॉर्ट टेक प्रॉफिट 0.05 गुना और स्टॉप लॉस 1 गुना है।

लाभ विश्लेषण

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

बैकटेस्ट डेटा 2017 से अपनाया गया है, जिसमें कई बैल और भालू रूपांतरण चक्र शामिल हैं। यह रणनीति अभी भी अवधि भर में अच्छा प्रदर्शन करती है। यह साबित करती है कि रणनीति बाजार की रैखिकता और गैर-रैखिकता दोनों विशेषताओं के अनुकूल है।

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

इस रणनीति में निम्नलिखित जोखिम हैं:

  1. डबल मूविंग एवरेज का स्वयं में विलंबित प्रभाव है, संभवतः अल्पकालिक अवसरों को खोना
  2. जब MACD हिस्टोग्राम शून्य होता है, तो रणनीति संकेत उत्पन्न नहीं करेगी
  3. लाभ लेने और स्टॉप लॉस अनुपात पूर्व निर्धारित कर रहे हैं, वास्तविक बाजार से विचलित हो सकता है

समाधान:

  1. अल्पकालिक संवेदनशीलता में सुधार के लिए चलती औसत चक्र को उचित रूप से छोटा करें
  2. हिस्टोग्राम उतार-चढ़ाव को अधिक बार करने के लिए एमएसीडी मापदंडों का अनुकूलन करें
  3. गतिशील रूप से लाभ लेने और स्टॉप लॉस सेटिंग्स को समायोजित करें

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

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

  1. बेहतर चिकनाई प्रभाव खोजने के लिए चलती औसत के विभिन्न प्रकार की कोशिश करो
  2. विभिन्न उत्पादों और चक्रों के अनुरूप चलती औसत और एमएसीडी के मापदंडों को अनुकूलित करें
  3. फ़िल्टर संकेतों में अतिरिक्त शर्तें जोड़ें जैसे कि ट्रेडिंग वॉल्यूम परिवर्तन
  4. बेहतर अनुकूलन क्षमता के लिए वास्तविक समय में लाभ लेने और हानि रोकने के अनुपात को समायोजित करें

निष्कर्ष

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


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=4
strategy(title = "Full Crypto Swing Strategy ALMA Cross", overlay = true,  pyramiding=1,initial_capital = 1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.03)

//time condition
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2010, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2031, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = time >= startDate and time <= finishDate

UseHAcandles    = input(false, title="Use Heikin Ashi Candles in Algo Calculations")

haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow   = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low

//alma fast and slow
src = haClose
windowsize = input(title="Length Size Fast", type=input.integer, defval=20)
windowsize2 = input(title="Length Size Slow", type=input.integer, defval=40)
offset = input(title="Offset", type=input.float, defval=0.9, step=0.05)
sigma = input(title="Sigma", type=input.float, defval=5)
outfast=alma(src, windowsize, offset, sigma)
outslow=alma(src, windowsize2, offset, sigma)

//macd
fast_length = input(title="Fast Length", type=input.integer, defval=6)
slow_length = input(title="Slow Length", type=input.integer, defval=25)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)

// Calculating
fast_ma = ema(src, fast_length)
slow_ma =  ema(src, slow_length)
macd = fast_ma - slow_ma
signal = ema(macd, signal_length)
hist = macd - signal

long=crossover(outfast,outslow) and hist > hist[1] and time_cond
short=crossunder(outfast,outslow) and hist < hist[1] and time_cond

takeProfit_long=input(2.0, step=0.005)
stopLoss_long=input(0.2, step=0.005)
takeProfit_short=input(0.05, step=0.005)
stopLoss_short=input(1.0, step=0.005)

strategy.entry("long",1,when=long)
strategy.entry("short",0,when=short)

strategy.exit("short_tp/sl", "long", profit=close * takeProfit_long / syminfo.mintick, loss=close * stopLoss_long / syminfo.mintick, comment='LONG EXIT',  alert_message = 'closeshort')
strategy.exit("short_tp/sl", "short", profit=close * takeProfit_short / syminfo.mintick, loss=close * stopLoss_short / syminfo.mintick, comment='SHORT EXIT',  alert_message = 'closeshort')

अधिक