गतिशील चलती औसत क्रॉसओवर कॉम्बो रणनीति

लेखक:चाओझांग, दिनांकः 2024-02-05 10:23:10
टैगः

img

अवलोकन

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

रणनीति तर्क

बाजार की अस्थिरता की गणना करें

पिछले 14 दिनों की बाजार अस्थिरता को मापने के लिए एटीआर संकेतक का प्रयोग करें। फिर औसत अस्थिरता प्राप्त करने के लिए 100-दिवसीय एसएमए फ़िल्टर लागू करें।

बाजार के चरणों का निर्धारण करें

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

ईएमए/एसएमए क्रॉसओवर

फास्ट ईएमए अवधि 10 दिन की है। स्लो एसएमए अवधि 30 दिन की है। एक खरीद संकेत तब उत्पन्न होता है जब फास्ट ईएमए धीमी एसएमए से ऊपर पार करता है।

एमएसीडी

12, 26, 9 मापदंडों के साथ एमएसीडी की गणना करें। एक सकारात्मक एमएसीडी हिस्टोग्राम खरीद संकेत देता है।

बोलिंगर बैंड

20 दिन के मानक विचलन चैनल की गणना करें. यदि चैनल चौड़ाई अपने आप में 20 दिन के एसएमए से छोटी है, तो यह समेकन कर रहा है.

प्रवेश नियम

अस्थिरः क्रॉसओवर या एमएसीडी पॉजिटिव होने पर बैंड के भीतर मूल्य के साथ लॉन्ग दर्ज करें।

ट्रेंडिंगः क्रॉसओवर या एमएसीडी पॉजिटिव होने पर लॉन्ग दर्ज करें।

समेकनः क्रॉसओवर और निचले बैंड से ऊपर की कीमत पर लॉन्ग दर्ज करें।

बाहर निकलने के नियम

सामान्यः जब एमएसीडी 2 बार के लिए नकारात्मक हो और कीमत 2 दिन गिर जाए तो बाहर निकलें।

अस्थिरताः स्टॉकआरएसआई ओवरबॉट होने पर प्लस एक्जिट।

समेकनः जब कीमत ऊपरी बैंड से नीचे हो तो प्लस एक्जिट।

लाभ

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

  1. कम व्यक्तिपरक हस्तक्षेपों के साथ व्यवस्थित संचालन।

  2. अनुकूलनशील मापदंडों को बाजार की स्थितियों के आधार पर समायोजित किया गया।

  3. कई संकेतकों के संयोजन के साथ उच्च संकेत सटीकता।

  4. बोलिंगर बैंड्स ऑटो स्टॉप लॉस के साथ कम जोखिम।

  5. झूठे संकेतों से बचने के लिए सभी गोल स्थिति फ़िल्टरिंग।

  6. गतिशील स्टॉप लॉस और ट्रेंड का पालन करने के लिए लाभ लें।

जोखिम

मुख्य जोखिम हैंः

  1. अमान्य रणनीति यदि अनुचित पैरामीटर ट्यूनिंग. अनुकूलन का सुझाव दिया.

  2. अचानक घटनाओं के कारण मॉडल विफलता. तर्क अद्यतन की सिफारिश की.

  3. व्यापार लागत से संकुचित लाभ मार्जिन। कम कमीशन ब्रोकर की सलाह दी।

  4. कई मॉड्यूलों के साथ अधिक जटिलता।

सुधार

अनुकूलन के संभावित दिशाएं:

  1. बाजार के माहौल का आकलन करने के मापदंडों में सुधार।

  2. स्वचालित पैरामीटर अनुकूलन के लिए मशीन लर्निंग का परिचय दें।

  3. घटनाओं का पता लगाने के लिए पाठ विश्लेषण जोड़ें.

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

  5. बेहतर लाभ के लिए ट्रेलिंग स्टॉप रणनीति लागू करें।

निष्कर्ष

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


/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Improved Custom Strategy", shorttitle="ICS", overlay=true)

// Volatility
volatility = ta.atr(14)
avg_volatility_sma = ta.sma(volatility, 100)
avg_volatility = na(avg_volatility_sma) ? 0 : avg_volatility_sma

// Market Phase detection
long_term_ma = ta.sma(close, 200)
distance_from_long_term_ma = close - long_term_ma
var bool isTrending = math.abs(distance_from_long_term_ma) > 1.5 * avg_volatility and not na(distance_from_long_term_ma)
var bool isVolatile = volatility > 1.5 * avg_volatility

// EMA/MA Crossover
fast_length = 10
slow_length = 30
fast_ma = ta.ema(close, fast_length)
slow_ma = ta.sma(close, slow_length)
crossover_signal = ta.crossover(fast_ma, slow_ma)

// MACD
[macdLine, signalLine, macdHistogram] = ta.macd(close, 12, 26, 9)
macd_signal = crossover_signal or (macdHistogram > 0)

// Bollinger Bands
source = close
basis = ta.sma(source, 20)
upper = basis + 2 * ta.stdev(source, 20)
lower = basis - 2 * ta.stdev(source, 20)
isConsolidating = (upper - lower) < ta.sma(upper - lower, 20)

// StockRSI
length = 14
K = 100 * (close - ta.lowest(close, length)) / (ta.highest(close, length) - ta.lowest(close, length))
D = ta.sma(K, 3)
overbought = 75
oversold = 25

var float potential_SL = na
var float potential_TP = na
var bool buy_condition = na
var bool sell_condition = na

// Buy and Sell Control Variables
var bool hasBought = false
var bool hasSold = true

// Previous values tracking
prev_macdHistogram = macdHistogram[1]
prev_close = close[1]

// Modify sell_condition with the new criteria
if isVolatile
    buy_condition := not hasBought and crossover_signal or macd_signal and (close > lower) and (close < upper)
    sell_condition := hasBought and (macdHistogram < 0 and prev_macdHistogram < 0) and (close < prev_close and prev_close < close[2])
    potential_SL := close - 0.5 * volatility
    potential_TP := close + volatility

if isTrending
    buy_condition := not hasBought and crossover_signal or macd_signal
    sell_condition := hasBought and (macdHistogram < 0 and prev_macdHistogram < 0) and (close < prev_close and prev_close < close[2])
    potential_SL := close - volatility
    potential_TP := close + 2 * volatility

if isConsolidating
    buy_condition := not hasBought and crossover_signal and (close > lower)
    sell_condition := hasBought and (close < upper) and (macdHistogram < 0 and prev_macdHistogram < 0) and (close < prev_close and prev_close < close[2])
    potential_SL := close - 0.5 * volatility
    potential_TP := close + volatility

// Update the hasBought and hasSold flags
if buy_condition
    hasBought := true
    hasSold := false

if sell_condition
    hasBought := false
    hasSold := true

// Strategy Entry and Exit
if buy_condition
    strategy.entry("BUY", strategy.long, stop=potential_SL, limit=potential_TP)
    strategy.exit("SELL_TS", from_entry="BUY", trail_price=close, trail_offset=close * 0.05)

if sell_condition
    strategy.close("BUY")
    
// Visualization
plotshape(series=buy_condition, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small)
plotshape(series=sell_condition, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)

plot(long_term_ma, color=color.gray, title="200-Day MA", linewidth=1)
plot(potential_SL, title="SL Level", color=color.red, linewidth=1, style=plot.style_linebr)
plot(potential_TP, title="TP Level", color=color.green, linewidth=1, style=plot.style_linebr)

bgcolor(isVolatile ? color.new(color.purple, 90) : isTrending ? color.new(color.blue, 90) : isConsolidating ? color.new(color.orange, 90) : na)


अधिक