दोहरी चलती औसत क्रॉसओवर ट्रेंड रणनीति

लेखक:चाओझांग, दिनांकः 2023-11-22 17:29:04
टैगः

img

अवलोकन

डबल मूविंग एवरेज क्रॉसओवर ट्रेंड रणनीति एक ट्रेंड फॉलो करने वाली रणनीति है जो तेजी से और धीमी गति से चलती औसत रेखाओं के पार होने पर खरीद और बिक्री संकेत उत्पन्न करती है। इसमें ट्रेंड की दिशा निर्धारित करने के लिए एमएसीडी और आरएसआई जैसे कई संकेतक शामिल हैं और इसमें मजबूत ट्रेंड ट्रैकिंग क्षमता है।

रणनीति तर्क

रणनीति में मुख्य रूप से निम्नलिखित संकेतकों का उपयोग किया गया है:

  1. तेज और धीमी गति से चलने वाली औसत रेखाएंः खरीद संकेत के लिए स्वर्ण क्रॉस, बिक्री संकेत के लिए मृत्यु क्रॉस।

  2. एमएसीडीः संकेत रेखा के ऊपर एमएसीडी रेखा और तेजी के संकेत के लिए बढ़ते एमएसीडी निम्नतम।

  3. आरएसआईः तेजी के लिए आरएसआई 50 से ऊपर, मंदी के लिए 50 से नीचे।

  4. भयानक थरथरानवाला (AO): खरीद के लिए 0 रेखा से ऊपर AO पार करना, बेचने के लिए नीचे पार करना।

  5. तीन दैनिक चलती औसतः खरीद संकेत के रूप में लंबी अवधि के दैनिक एमए से अधिक की छोटी अवधि के दैनिक एमए क्रॉसिंग।

यह रणनीति खरीद और बिक्री तर्क उत्पन्न करने के लिए कई समय सीमाओं और संकेतकों को जोड़ती है। यह खरीद आदेश उत्पन्न करता है जब कई संकेतक एक ही समय में तेजी के संकेत दिखाते हैं, और बिक्री आदेश जब मंदी के संकेत सामने आते हैं, प्रवृत्ति को ट्रैक करने के लिए।

लाभ विश्लेषण

इस रणनीति के निम्नलिखित फायदे हैंः

  1. मल्टी-इंडिकेटर कॉम्बो झूठे संकेतों को कम करता है और सटीकता में सुधार करता है।

  2. कई समय-सीमाओं को शामिल करने से व्यापक प्रवृत्ति दिशा की पहचान होती है।

  3. पैरामीटर ट्यूनिंग से अच्छी लाभप्रदता मिलती है।

  4. जोखिम को नियंत्रित करने और घाटे को सीमित करने के लिए स्टॉप लॉस को स्थानांतरित करता है।

  5. मैन्युअल हस्तक्षेप के बिना स्वचालित रुझान ट्रैकिंग, लागत में कमी।

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

इसके कुछ जोखिम भी हैंः

  1. अधिक whipsaws सीमा-बाधित बाजारों में हो सकता है। अमान्य संकेतों को कम करने के लिए मापदंडों का अनुकूलन।

  2. ब्लैक स्वान घटनाओं तेज वापसी का कारण बन सकता है. नुकसान को सीमित करने के लिए स्टॉप हानि को स्थानांतरित करें.

  3. जटिल खरीद/बिक्री तर्क इष्टतम मापदंडों को खोजने के लिए बड़े ऐतिहासिक आंकड़ों पर निर्भर करता है।

  4. अनुचित स्टॉप लॉस सेटिंग से समय से पहले बाहर निकलने का कारण बनता है। सर्वोत्तम मापदंड खोजने के लिए बार-बार बैकटेस्ट करें।

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

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

  1. अधिक स्थिर और सटीक संकेतों के लिए अधिक संकेतक संयोजनों का परीक्षण करें, जैसे कि अस्थिरता सूचकांक, ओबीवी आदि।

  2. ओवरट्रेडिंग को कम करने के लिए मशीन लर्निंग और आनुवंशिक एल्गोरिदम के साथ संकेतक मापदंडों को अनुकूलित करें।

  3. कई स्वतंत्र रणनीति मॉडल से संकेतों को एकीकृत करने के लिए मॉडल एसेम्बल तकनीकों को पेश करना, मजबूती में सुधार।

  4. अधिक समय सीमा पर व्यापार में प्रवेश करें, कम समय सीमा पर बाहर निकलें।

  5. प्रति व्यापार स्टॉप लॉस प्रतिशत, अधिकतम ड्रॉडाउन आदि पर सख्त सीमाओं के साथ मात्रात्मक जोखिम नियंत्रण मॉड्यूल का निर्माण करें।

सारांश

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


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

//@version=5
strategy('SteffVans', shorttitle='SteffVans strategy', overlay=true, process_orders_on_close = true)

// Input settings
macd_fast_length = input(12)
macd_slow_length = input(26)
macd_signal_length = input(9)

// Calculate MACD values
[macd_line, signal_line, _] = ta.macd(close, macd_fast_length, macd_slow_length, macd_signal_length)
mg = ta.lowest(signal_line, 30) >= -0

// RSI
ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "Bollinger Bands" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

rsiLengthInput = input.int(14, minval=1)
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
maTypeInput = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")

up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
RSI = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))


//  AO
AO = ta.sma((high + low) / 2, 5) - ta.sma((high + low) / 2, 34)
crossaosell = AO < AO[1] and AO[1] < AO[2] and AO[2] > AO[3]  and ta.lowest(low,3)

// Uptrend sma
len1 = input.int(5, minval=1)
len2 = input.int(10, minval=1)
len3 = input.int(20, minval=1)
src = input(close)

out1 = ta.sma(src, len1)
out2 = ta.sma(src, len2)
out3 = ta.sma(src, len3)



// Timeframe 
macdl60 = request.security(syminfo.tickerid, "60", signal_line,lookahead = barmerge.lookahead_on)
ao = request.security(syminfo.tickerid, "60", AO,lookahead = barmerge.lookahead_on)
rsi = request.security(syminfo.tickerid, "60", RSI,lookahead = barmerge.lookahead_on)
good = request.security(syminfo.tickerid, "60", mg,lookahead = barmerge.lookahead_on)
bad = request.security(syminfo.tickerid, "60", crossaosell,lookahead = barmerge.lookahead_on)

ma1 = request.security(syminfo.tickerid, "D", out1,lookahead = barmerge.lookahead_on)
ma2 = request.security(syminfo.tickerid, "D", out2, lookahead = barmerge.lookahead_on)
ma3 = request.security(syminfo.tickerid, "D", out3, lookahead = barmerge.lookahead_on)






// Kriteria BUY and SELL
uptrend1 =  request.security(syminfo.tickerid, "D", close,lookahead = barmerge.lookahead_on) > ma1 and ma1 > ma3 and ma2 > ma3
uptrend2 = ta.lowest(ma1,12) > ta.lowest(ma3,12) and ta.lowest(ma2,12) > ta.lowest(ma3,12) 


 

// Triger BUY and SELL 
cross1 = ao > ao[1] and ao[1] < ao[2] and ao > 0 and good and rsi >= 60 and uptrend1
cross2 = ao > 0 and ao[1] < 0 and good and rsi >=50 and uptrend1
cross3 =  ao > 0 and ao[1] < 0 and not good and uptrend2 and uptrend1
cross4 =  ao > ao[1] and ao[1] > ao[2] and ao[2] < ao[3] and ao[3] < ao[4]  and not good and uptrend2 and uptrend1

s1 = ao < ao[1] and ao[1] < ao[2] and ao[2] < ao[3] and ao > 0 and rsi < 50 and request.security(syminfo.tickerid, "D", close,lookahead = barmerge.lookahead_on) < ma1
s2 =  ao < 0 and ao < ao[2] and rsi < 50 and request.security(syminfo.tickerid, "D", close,lookahead = barmerge.lookahead_on) < ma1 

// Variabel Buy dan Sell
buySignal = false
sellSignal = false

// Syarat masuk Buy
buyCondition =  cross1 or cross2 or cross3 or cross4
if buyCondition
    buySignal := true

// Syarat masuk Sell
sellCondition = s1 or s2
if sellCondition
    sellSignal := true

// Reset sinyal jika ada sinyal berulang
if buySignal and sellSignal
    sellSignal := false
if sellSignal and buySignal
    buySignal := false

// Logika perdagangan
if buySignal
    strategy.entry("Buy", strategy.long, comment = "BUY")
if sellSignal
    strategy.close("Buy")


plotshape(cross1,title = "Stefkuy1", style = shape.labelup, location = location.belowbar, color = color.green,text = "1", textcolor = color.white,size = size.small)
plotshape(cross2,title = "Stefkuy2", style = shape.labelup, location = location.belowbar, color = color.green, text = "2", textcolor= color.white, size = size.small)
plotshape(cross3,title = "StefVan1", style = shape.labelup, location = location.belowbar, color = color.rgb(0, 153, 255), text = "3", textcolor= color.white,size = size.small)
plotshape(cross4,title = "StefVan2", style = shape.labelup, location = location.belowbar, color = color.rgb(0, 153, 255), text = "4", textcolor= color.white,size = size.small)


अधिक