संसाधन लोड हो रहा है... लोड करना...

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

लेखक:चाओझांग, दिनांकः 2024-05-23 18:14:35
टैगःईएमएडब्ल्यूएमएएसएमएटीएमएवीएआरडब्ल्यूडब्ल्यूएमएZLEMAटीएसएफ

img

अवलोकन

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

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

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

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

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

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

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

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

इसके अतिरिक्त, यह रणनीति वर्तमान स्थिति के अनुसार कैंडलस्टिक का रंग प्रदर्शित करेगीः

  • लंबी स्थिति रखने पर, कैंडलस्टिक हरा होता है;
  • शॉर्ट पोजीशन रखने पर, कैंडलस्टिक लाल होता है;
  • अन्य मामलों में, मोमबत्ती का रंग ग्रे होता है।

रणनीतिक लाभ

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

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

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

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

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

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

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

सारांश

Quintuple Strong Moving Average Strategy एक ट्रेडिंग रणनीति है जो कई ट्रेंड कन्फर्मेशन पर आधारित है। विभिन्न समय सीमाओं और प्रकारों के मूविंग एवरेज के रुझानों और सापेक्ष स्थिति संबंधों पर व्यापक रूप से विचार करके, यह बाजार की वर्तमान ट्रेंड दिशा और ताकत को अपेक्षाकृत सटीक रूप से निर्धारित कर सकता है, और समय पर ट्रेंड में बदलाव के अनुसार पदों को समायोजित कर सकता है। रणनीति तर्क सरल और स्पष्ट है, पैरामीटर लचीले और समायोज्य हैं, और यह कई बाजारों के लिए अनुकूलन योग्य है। हालांकि, यह आम तौर पर इनबाउंड रेंज बाजारों का प्रदर्शन करता है, और कुछ पैरामीटर अनुकूलन जोखिम और इनबाउंड ट्रेंड रिवर्स जोखिम हैं। भविष्य में, हम अधिक संकेतकों को पेश करने, पैरामीटर अनुकूलन करने, रेंज बाजारों के लिए ऑपरेटिंग लॉजिक जोड़ने और इस रणनीति की मजबूती और लाभप्रदता में और सुधार के लिए अन्य प्रकार की रणनीतियों के साथ संयोजन पर विचार कर सकते हैं।


/*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)


संबंधित

अधिक