
दोहरी चलती औसत क्रॉसओवर प्रवृत्ति रणनीति एक प्रवृत्ति ट्रैकिंग रणनीति है जो तेजी से चलती औसत और धीमी गति से चलती औसत के क्रॉसओवर का उपयोग करके एक खरीद या बिक्री संकेत बनाता है। यह रणनीति एक मजबूत प्रवृत्ति ट्रैकिंग क्षमता के साथ प्रवृत्ति की दिशा निर्धारित करने के लिए कई संकेतकों जैसे कि एमएसीडी, आरएसआई आदि को एक साथ जोड़ती है।
यह रणनीति मुख्य रूप से निम्नलिखित मापदंडों पर आधारित हैः
तेज़ चलती औसत और धीमी चलती औसतः तेज़ रेखा पर धीमी रेखा के माध्यम से एक खरीद संकेत और तेज़ रेखा के नीचे धीमी रेखा के माध्यम से एक बेचने का संकेत।
MACD: जब MACD लाइन सिग्नल लाइन से ऊपर होती है और MACD न्यूनतम बढ़ जाती है तो एक बहुमुखी संकेत होता है।
आरएसआईः आरएसआई 50 से ऊपर है और 50 से नीचे है।
माप ऑस्सिलेटर (एओ): जब एओ पर 0 अक्ष के माध्यम से एक खरीद संकेत है, तो एओ के नीचे 0 अक्ष के माध्यम से एक बेचने का संकेत है।
दिन के स्तर पर तीन चलती औसतः दिन के स्तर पर एक छोटी अवधि की चलती औसत पर एक लंबी अवधि की चलती औसत एक खरीद संकेत है।
यह रणनीति कई समय चक्रों और कई संकेतकों को एकीकृत करती है, जो खरीद और बेचने के निर्णय की तर्क बनाती है। जब कई संकेतक एक साथ खरीद संकेत देते हैं तो खरीद निर्देश उत्पन्न करते हैं, और जब कई संकेतक एक साथ बेचने के संकेत देते हैं तो बिक्री निर्देश उत्पन्न करते हैं, जिससे प्रवृत्ति पर नज़र रखी जा सके।
इस रणनीति के कुछ फायदे हैंः
बहु-सूचक संयोजन निर्णय, गलत संकेतों से बचें, निर्णय की सटीकता में सुधार करें।
कई समय-चक्रों के आंकड़ों के संयोजन के साथ, एक बड़े स्तर पर प्रवृत्ति की दिशा की पहचान की जा सकती है।
सूचक पैरामीटर अनुकूलित, पैरामीटर ट्यूनिंग, बेहतर रिटर्न दर के साथ।
जोखिम को नियंत्रित करने के लिए चलती रोक का उपयोग करें और नुकसान को रोकने के लिए।
स्वचालित ट्रेंड ट्रैकिंग, मानव हस्तक्षेप के बिना, कम परिचालन लागत
इस रणनीति में कुछ जोखिम भी हैं:
अस्थिर स्थिति में अधिक अमान्य व्यापारिक संकेत उत्पन्न हो सकते हैं। अमान्य संकेतों को सूचकांक मापदंडों को अनुकूलित करके कम किया जा सकता है।
एक आकस्मिक घटना के कारण एक त्वरित वापसी हो सकती है। नुकसान को नियंत्रित करने के लिए एक मोबाइल स्टॉप-लॉस सेट किया जा सकता है।
मल्टी-स्पेस सिग्नल निर्धारण नियम जटिल हैं, और पैरामीटर अनुकूलन को बहुत सारे ऐतिहासिक डेटा का समर्थन करने की आवश्यकता है।
अनुचित ट्रैक स्टॉप सेटिंग्स के कारण समय से पहले स्टॉप हो सकता है। इष्टतम पैरामीटर निर्धारित करने के लिए बार-बार परीक्षण की आवश्यकता होती है।
इस रणनीति को निम्नलिखित दिशाओं में अनुकूलित किया जा सकता हैः
अधिक स्थिर और सटीक व्यापारिक संकेतों की तलाश में अधिक संकेतकों के संयोजन का परीक्षण करें। जैसे कि अस्थिरता दर सूचक, ओबीवी सूचक आदि।
सूचक मापदंडों का अनुकूलन करें, शून्य लेनदेन की संख्या को कम करें। मशीन सीखने और आनुवंशिक एल्गोरिदम का उपयोग करके स्वचालित रूप से अनुकूलन मापदंडों को ढूंढें।
मॉडल एकीकरण तकनीक को जोड़ना, और अधिक स्वतंत्र रणनीतिक मॉडल निर्णयों को एकीकृत करना। स्थिरता में सुधार।
उच्च आवृत्ति स्तर पर प्रवेश करें, कम आवृत्ति स्तर पर बाहर निकलें।
वायु नियंत्रण मॉड्यूल की मात्रा में वृद्धि, एकल-हानि अनुपात, अधिकतम वापसी अनुपात आदि पर सख्त नियंत्रण।
गतिशील औसत द्वि-संकेतक क्रॉस-फ्लोर रणनीति तेजी से चलती औसत और धीमी गति से चलती औसत के क्रॉस-फ्लोर के माध्यम से व्यापार संकेतों का गठन करती है, और एमएसीडी, आरएसआई आदि जैसे कई संकेतकों के साथ मिलकर प्रवृत्ति की दिशा का आकलन करती है, जिससे स्वचालित प्रवृत्ति का पालन किया जा सकता है। इस रणनीति में अनुकूलन की अधिक जगह है, और अधिक संकेतकों, पैरामीटर को समायोजित करने और मॉडल एकीकरण जैसे तरीकों को पेश करके बेहतर रणनीति प्रभाव प्राप्त करने की उम्मीद है।
/*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)