पांच गुना मजबूत चलती औसत रणनीति

EMA WMA SMA TMA VAR WWMA ZLEMA TSF
निर्माण तिथि: 2024-05-23 18:14:35 अंत में संशोधित करें: 2024-05-23 18:14:35
कॉपी: 3 क्लिक्स: 575
1
ध्यान केंद्रित करना
1617
समर्थक

पांच गुना मजबूत चलती औसत रणनीति

अवलोकन

पंचशक्ति चलती औसत रणनीति एक ट्रेडिंग रणनीति है जो कई चलती औसत पर आधारित है। यह रणनीति बाजार में मजबूत रुझानों की पहचान करने के लिए 5 अलग-अलग अवधि और प्रकारों की चलती औसत का उपयोग करती है। इनमें से पहले 3 चलती औसत रणनीति का एक केंद्रीय घटक हैं, मुख्य रूप से प्रवृत्ति की पहचान और सिग्नल उत्पन्न करने के लिए; जबकि 4 वीं और 5 वीं चलती औसत मुख्य रूप से सहायक निर्णय और दृश्य विश्लेषण के लिए हैं।

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

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

इस रणनीति में 5 अलग-अलग अवधि और प्रकार के चलती औसत का उपयोग किया गया है, जो इस प्रकार हैंः

  1. प्रथम स्तर की चलती औसतः प्रदर्शन, टैग, डेटा स्रोत, समय सीमा, लंबाई, रेखा चौड़ाई, रंग और प्रकार को अनुकूलित किया जा सकता है।
  2. स्तर दो चलती औसतः अनुकूलित प्रदर्शन, टैग, डेटा स्रोत, समय सीमा, लंबाई, लाइन चौड़ाई, रंग और प्रकार।
  3. तीसरे स्तर की चलती औसतः प्रदर्शन, टैग, डेटा स्रोत, समय सीमा, लंबाई, रेखा चौड़ाई, रंग और प्रकार को अनुकूलित किया जा सकता है।
  4. चौथा स्तरः मुख्य रूप से निर्णय लेने के लिए, अनुकूलित प्रदर्शन, टैग, डेटा स्रोत, समय सीमा, लंबाई, रेखा चौड़ाई और रंग।
  5. पांचवां स्तर का चल औसत: मुख्य रूप से निर्णय के लिए सहायक, अनुकूलित प्रदर्शन, टैग, डेटा स्रोत, समय सीमा, लंबाई, रेखा चौड़ाई और रंग।

पांच प्रकार के चलती औसत को लचीले ढंग से सेट किया जा सकता है, जिसमें आठ प्रकार शामिल हैं जैसे कि SMA, EMA, WMA, TMA, VAR, WWMA, ZLEMA और TSF।

इस रणनीति का मुख्य विचार प्रवृत्ति की दिशा और ताकत का आकलन करने के लिए विभिन्न चक्रों और प्रकारों की चलती औसत की कई प्रवृत्ति की पुष्टि का उपयोग करना हैः

  • जब कीमतें 1, 2 और 3 स्तरों की चलती औसत से ऊपर होती हैं, तो अधिक करें।
  • जब मूल्य 1, 2 और 3 स्तरों की चलती औसत से नीचे होता है, तो शून्य करें;
  • जब अधिक स्थिति रखी जाती है, तो यदि समापन मूल्य 1 या 2 परतों की चलती औसत से नीचे गिर जाता है, तो अधिक;
  • जब स्थिति खाली हो जाती है, तो यदि समापन मूल्य 1 और 2 परतों के चलती औसत को तोड़ता है, तो शून्य।

इसके अलावा, यह रणनीति वर्तमान स्थिति की दिशा के आधार पर K-लाइन रंग प्रदर्शित करती हैः

  • जब आप अधिक मुद्रा रखते हैं, तो K लाइन हरे रंग में दिखाई देती है।
  • जब स्थिति खाली होती है, तो K लाइन लाल दिखाई देती है;
  • अन्य मामलों में, K रेखा ग्रे दिखाई देती है।

रणनीतिक लाभ

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

रणनीतिक जोखिम

  1. अस्थिर बाजारों में धोने का जोखिम. यह रणनीति अस्थिर बाजारों में सामान्य रूप से काम करती है, जिसमें छोटे नुकसान के साथ अधिक व्यापार हो सकता है, जिससे शुद्ध लाभ में गिरावट आती है।
  2. पैरामीटर ऑप्टिमाइज़ेशन जोखिम: इस रणनीति में अधिक पैरामीटर हैं, और यदि पर्याप्त ऐतिहासिक डेटा रीट्रेसिंग और पैरामीटर ऑप्टिमाइज़ेशन नहीं किया जाता है, तो यह भविष्य में वास्तविक स्टॉक ट्रेडिंग में बड़े पैमाने पर वापसी का कारण बन सकता है।
  3. प्रवृत्ति में बदलाव का जोखिम. यह रणनीति मुख्य रूप से प्रवृत्ति के लिए है, और यदि बाजार की प्रवृत्ति बदल जाती है, तो यह रणनीति मूल प्रवृत्ति की दिशा में व्यापार करना जारी रख सकती है, जिससे नुकसान होता है।

उपरोक्त जोखिमों को कम करने के लिए, निम्नलिखित सुधारों पर विचार किया जा सकता हैः

  1. ट्रेडों की संख्या को कम करने के लिए अस्थिर बाजारों की पहचान और निर्णय के तर्क में शामिल हों।
  2. इस रणनीति के लिए एक पूर्ण पैरामीटर अनुकूलन परीक्षण करें और एक स्थिर, इष्टतम पैरामीटर संयोजन ढूंढें।
  3. उचित स्टॉप-लॉस सेट करें, एकल व्यापार के अधिकतम जोखिम को नियंत्रित करें। साथ ही, अन्य संकेतकों या संकेतों के माध्यम से प्रवृत्ति के उलट की पुष्टि करने के लिए, स्थिति को समय पर समायोजित करें।

रणनीति अनुकूलन दिशा

  1. अधिक प्रवृत्ति-सत्यापन संकेतकों जैसे कि MACD, DMI आदि को शामिल करना, जो प्रवृत्ति के निर्णय की सटीकता को बढ़ाता है।
  2. आपातकालीन बाजारों के लिए, आपातकालीन स्थितियों के लिए अनुकूलित संचालन तर्क को शामिल करने पर विचार कर सकते हैं, जैसे कि ग्रिड ट्रेडिंग।
  3. विभिन्न बाजार विशेषताओं के लिए, रणनीति के मापदंडों को अनुकूलित किया जा सकता है, जिससे अनुकूलनशीलता बढ़ जाती है।
  4. इस रणनीति को अन्य रणनीतियों के साथ संयोजित करने पर विचार किया जा सकता है, जैसे कि ट्रेंडिंग रणनीति + आघात रणनीति, ट्रेंडिंग रणनीति + रिवर्स रणनीति आदि।

संक्षेप

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

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

//@version=5
strategy("Quintuple Strong Moving Average Strategy","QuisMa", overlay=true, margin_long=100, margin_short=100)

// 1
mav1_show = input.bool(true, 'Show Plot', group='Level 1 ', inline='mav1_0')
mav1_label = input.bool(true, 'Show Label', group='Level 1 ', inline='mav1_0')
mav1_source = input.source(close, '', group='Level 1 ', inline='mav1_1')
mav1_timeframe = input.timeframe('5', '', group='Level 1 ', inline='mav1_1')
mav1_length = input.int(50, 'Length', group='Level 1 ', inline='mav1_3')
mav1_size = input.int(2000, 'Size', minval=1, group='Level 1 ', inline='mav1_3')
mav1_width = input.int(2, '', minval=0, group='Level 1 ', inline='mav1_2')
mav1_color = input.color(color.new(#ffd000, 0), '', group='Level 1 ', inline='mav1_2')
mav1_type = input.string(title='Moving Average Type 1', defval='VAR', options=['SMA', 'EMA', 'WMA', 'TMA', 'VAR', 'WWMA', 'ZLEMA', 'TSF'])

// 2
mav2_show = input.bool(true, 'Show Plot', group='Level 2', inline='mav2_0')
mav2_label = input.bool(true, 'Show Label', group='Level 2', inline='mav2_0')
mav2_source = input.source(close, '', group='Level 2', inline='mav2_1')
mav2_timeframe = input.timeframe('30', '', group='Level 2', inline='mav2_1')
mav2_length = input.int(50, 'Length', group='Level 2', inline='mav2_3')
mav2_size = input.int(2000, 'Size', minval=1, group='Level 2', inline='mav2_3')
mav2_width = input.int(2, '', minval=0, group='Level 2', inline='mav2_2')
mav2_color = input.color(color.new(#ffd000, 0), '', group='Level 2', inline='mav2_2')
mav2_type = input.string(title='Moving Average Type 2', defval='VAR', options=['SMA', 'EMA', 'WMA', 'TMA', 'VAR', 'WWMA', 'ZLEMA', 'TSF'])

// 3
mav3_show = input.bool(true, 'Show Plot', group='Level 3', inline='mav3_0')
mav3_label = input.bool(true, 'Show Label', group='Level 3', inline='mav3_0')
mav3_source = input.source(close, '', group='Level 3', inline='mav3_1')
mav3_timeframe = input.timeframe('60', '', group='Level 3', inline='mav3_1')
mav3_length = input.int(50, 'Length', group='Level 3', inline='mav3_3')
mav3_size = input.int(2000, 'Size', minval=1, group='Level 3', inline='mav3_3')
mav3_width = input.int(2, '', minval=0, group='Level 3', inline='mav3_2')
mav3_color = input.color(color.new(#ffd000, 0), '', group='Level 3', inline='mav3_2')
mav3_type = input.string(title='Moving Average Type 3', defval='VAR', options=['SMA', 'EMA', 'WMA', 'TMA', 'VAR', 'WWMA', 'ZLEMA', 'TSF'])

// 4
mav4_show = input.bool(true, 'Show Plot', group='Level 4', inline='mav4_0')
mav4_label = input.bool(true, 'Show Label', group='Level 4', inline='mav4_0')
mav4_source = input.source(close, '', group='Level 4', inline='mav4_1')
mav4_timeframe = input.timeframe('480', '', group='Level 4', inline='mav4_1')
mav4_length = input.int(50, 'Length', group='Level 4', inline='mav4_3')
mav4_size = input.int(2000, 'Size', minval=1, group='Level 4', inline='mav4_3')
mav4_width = input.int(2, '', minval=0, group='Level 4', inline='mav4_2')
mav4_color = input.color(color.new(#ffd000, 0), '', group='Level 4', inline='mav4_2')
mav4_type = input.string(title='Moving Average Type 4', defval='VAR', options=['SMA', 'EMA', 'WMA', 'TMA', 'VAR', 'WWMA', 'ZLEMA', 'TSF'])

// 5
mav5_show = input.bool(true, 'Show Plot', group='Level 5', inline='mav5_0')
mav5_label = input.bool(true, 'Show Label', group='Level 5', inline='mav5_0')
mav5_source = input.source(close, '', group='Level 5', inline='mav5_1')
mav5_timeframe = input.timeframe('720', '', group='Level 5', inline='mav5_1')
mav5_length = input.int(50, 'Length', group='Level 5', inline='mav5_3')
mav5_size = input.int(2000, 'Size', minval=1, group='Level 5', inline='mav5_3')
mav5_width = input.int(2, '', minval=0, group='Level 5', inline='mav5_2')
mav5_color = input.color(color.new(#ffd000, 0), '', group='Level 5', inline='mav5_2')
mav5_type = input.string(title='Moving Average Type 5', defval='VAR', options=['SMA', 'EMA', 'WMA', 'TMA', 'VAR', 'WWMA', 'ZLEMA', 'TSF'])


// FUNCTIONS {{{
candle_size_ms = time - time[1]  // milliseconds of a candle

timetostring(tms) =>
    d_ = math.floor(tms / 86400)
    h_ = math.floor((tms - d_ * 86400) / 3600)
    m_ = math.floor((tms - d_ * 86400 - h_ * 3600) / 60)
    s_ = math.floor(tms - d_ * 86400 - h_ * 3600 - m_ * 60)
    ret = d_ > 0 ? str.tostring(d_) + ' D ' : ''
    ret += (h_ > 0 ? str.tostring(h_) + ' H ' : '')
    ret += (m_ > 0 ? str.tostring(m_) + ' m ' : '')
    if d_ == 0
        ret += (s_ > 0 ? str.tostring(s_) + ' s ' : '')
        ret
    ret

tftostring(tf) =>
    tfa = str.split(tf, '')
    tfalast = array.get(tfa, array.size(tfa) - 1)
    tfalastIsNum = na(str.tonumber(tfalast)) ? false : true
    txt = tfalastIsNum ? timetostring(str.tonumber(tf) * 60) : tf
    txt

htfLabel(htfy, tf, col) =>
    txt = tftostring(tf)
    htftxt = 'ᐊ ' + txt
    htftip = 'HTF  [ ' + txt + ' ] ' + str.tostring(htfy, '#.##')
    label.new(x=time + candle_size_ms * 2, y=htfy, xloc=xloc.bar_time, yloc=yloc.price, color=color.new(color.black, 100), textcolor=col, style=label.style_label_left, size=size.normal, text=htftxt, tooltip=htftip)

// Moving Averages Functions {{{
Var_Func(src, length) =>
    valpha = 2 / (length + 1)
    vud1 = src > src[1] ? src - src[1] : 0
    vdd1 = src < src[1] ? src[1] - src : 0
    vUD = math.sum(vud1, 9)
    vDD = math.sum(vdd1, 9)
    vCMO = nz((vUD - vDD) / (vUD + vDD))
    VAR = 0.0
    VAR := nz(valpha * math.abs(vCMO) * src) + (1 - valpha * math.abs(vCMO)) * nz(VAR[1])
    VAR

Wwma_Func(src, length) =>
    wwalpha = 1 / length
    WWMA = 0.0
    WWMA := wwalpha * src + (1 - wwalpha) * nz(WWMA[1])
    WWMA

Zlema_Func(src, length) =>
    zxLag = length / 2 == math.round(length / 2) ? length / 2 : (length - 1) / 2
    zxEMAData = src + src - src[zxLag]
    ZLEMA = ta.ema(zxEMAData, length)
    ZLEMA

Tsf_Func(src, length) =>
    lrc = ta.linreg(src, length, 0)
    lrc1 = ta.linreg(src, length, 1)
    lrs = lrc - lrc1
    TSF = ta.linreg(src, length, 0) + lrs
    TSF

getMA(src, length, mav_type) =>
    ma = 0.0
    if mav_type == 'SMA'
        ma := ta.sma(src, length)
    if mav_type == 'EMA'
        ma := ta.ema(src, length)
    if mav_type == 'WMA'
        ma := ta.wma(src, length)
    if mav_type == 'TMA'
        ma := ta.sma(ta.sma(src, math.ceil(length / 2)), math.floor(length / 2) + 1)
    if mav_type == 'VAR'
        ma := Var_Func(src, length)
    if mav_type == 'WWMA'
        ma := Wwma_Func(src, length)
    if mav_type == 'ZLEMA'
        ma := Zlema_Func(src, length)
    if mav_type == 'TSF'
        ma := Tsf_Func(src, length)
    ma

mav1 = request.security(syminfo.tickerid, mav1_timeframe, getMA(mav1_source, mav1_length, mav1_type), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on)
plot(mav1_show ? mav1 : na, 'mav 1', color=mav1_color, linewidth=mav1_width, show_last=mav1_size)
var label mav1lbl = na
label.delete(mav1lbl)
mav1lbl := mav1_label ? htfLabel(mav1, mav1_timeframe, mav1_color) : na

mav2 = request.security(syminfo.tickerid, mav2_timeframe, getMA(mav2_source, mav2_length, mav2_type), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on)
plot(mav2_show ? mav2 : na, 'mav 2', color=mav2_color, linewidth=mav2_width, show_last=mav2_size)
var label mav2lbl = na
label.delete(mav2lbl)
mav2lbl := mav2_label ? htfLabel(mav2, mav2_timeframe, mav2_color) : na

mav3 = request.security(syminfo.tickerid, mav3_timeframe, getMA(mav3_source, mav3_length, mav3_type), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on)
plot(mav3_show ? mav3 : na, 'mav 3', color=mav3_color, linewidth=mav3_width, show_last=mav3_size)
var label mav3lbl = na
label.delete(mav3lbl)
mav3lbl := mav3_label ? htfLabel(mav3, mav3_timeframe, mav3_color) : na

mav4 = request.security(syminfo.tickerid, mav4_timeframe, getMA(mav4_source, mav4_length, mav4_type), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on)
plot(mav4_show ? mav4 : na, 'mav 4', color=mav4_color, linewidth=mav4_width, show_last=mav4_size)
var label mav4lbl = na
label.delete(mav4lbl)
mav4lbl := mav4_label ? htfLabel(mav4, mav4_timeframe, mav4_color) : na

mav5 = request.security(syminfo.tickerid, mav5_timeframe, getMA(mav5_source, mav5_length, mav5_type), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on)
plot(mav5_show ? mav5 : na, 'mav 5', color=mav5_color, linewidth=mav5_width, show_last=mav5_size)
var label mav5lbl = na
label.delete(mav5lbl)
mav5lbl := mav5_label ? htfLabel(mav5, mav5_timeframe, mav5_color) : na

// Alış ve Satış Koşulları
alisKosulu = close > mav1 and close > mav2 and close > mav3
satisKosulu = close < mav1 and close < mav2 and close < mav3

// Alış ve Satış Sinyalleri
if (alisKosulu and not satisKosulu)
    strategy.entry("Alış", strategy.long)
if (satisKosulu and not alisKosulu)
    strategy.entry("Satış", strategy.short)

// Pozisyonları Kapatma Koşulları
if (strategy.opentrades > 0)
    if (close < mav1 and close < mav2 and strategy.position_size > 0)
        strategy.close("Alış")
    if (close > mav1 and close > mav2 and strategy.position_size < 0)
        strategy.close("Satış")

// Mum Rengi Ayarlama
longKosul = strategy.opentrades > 0 and strategy.position_size > 0
shortKosul = strategy.opentrades > 0 and strategy.position_size < 0

barcolor(longKosul ? color.green : shortKosul ? color.red : color.gray)