औसत रिवर्स और ट्रेंड फॉलोइंग को जोड़ने वाली मात्रात्मक रणनीति

लेखक:चाओझांग, दिनांक: 2023-09-14 20:45:20
टैगः

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

I. रणनीतिक तर्क

रणनीति मुख्य रूप से सरल चलती औसत और आरएसआई संकेतक का उपयोग ट्रेडिंग संकेत उत्पन्न करने के लिए करती हैः

  1. जब कीमत 200-अवधि SMA से नीचे होती है, तो यह वर्तमान बाजार को डाउनट्रेंड के रूप में आंकता है।

  2. जब आरएसआई 20 से नीचे होता है, तो यह प्रति-प्रवृत्ति औसत प्रतिगमन ट्रेड लेता है।

  3. जब कीमत 200-अवधि SMA से ऊपर होती है, तो यह वर्तमान बाजार को अपट्रेंड के रूप में आंकता है।

  4. जब कीमत एसएमए से ऊपर जाती है, तो ट्रेंड-फॉलो-ट्रेड की आवश्यकता होती है।

  5. जब आरएसआई 80 से अधिक हो जाता है या कीमत एक निश्चित प्रतिशत से एसएमए से नीचे गिर जाती है तो बाहर निकलना शुरू हो जाता है।

  6. औसत रिवर्स और ट्रेंड फॉलो के लिए स्थिति आकार अलग से समायोजित किया जा सकता है।

यह रणनीति औसत प्रतिगमन और प्रवृत्ति-अनुसरण तकनीकों को जोड़ती है और उन्हें विभिन्न बाजार चरणों में लागू करती है।

II. रणनीति के फायदे

इसके मुख्य लाभ इस प्रकार हैंः

  1. दो तकनीकों को मिलाकर रणनीति अनुकूलन क्षमता में सुधार होता है।

  2. यह ट्रेंडिंग और रेंजिंग मार्केट में ट्रेडिंग के अवसर पा सकता है।

  3. जोखिमों को स्थिति आकार को समायोजित करके नियंत्रित किया जा सकता है।

  4. सरल पैरामीटर सेटिंग्स इसे लागू करना आसान बनाती हैं।

III. संभावित जोखिम

हालांकि, जोखिम निम्नलिखित हैंः

  1. एसएमए और आरएसआई जैसे संकेतक झूठे ब्रेकआउट के लिए संवेदनशील हैं।

  2. दो मोडों के बीच स्विच करने में देरी हो सकती है।

  3. दीर्घकालिक लाभ के लिए कुछ कटौती को सहन करना पड़ता है।

IV. सारांश

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


/*backtest
start: 2022-09-07 00:00:00
end: 2023-04-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © I11L

//@version=5
strategy("Mean Reversion and Trendfollowing", overlay=true, pyramiding=1, default_qty_value=100000, initial_capital=100000, default_qty_type=strategy.cash, process_orders_on_close=false, calc_on_every_tick=false)

// Input for the starting date
start_date = input(timestamp("1 Feb 2000 12:00"), title="Starting Date")
enableMeanReversion = input.bool(true)
enableTrendfollowing = input.bool(true)
trendPositionFactor = input.float(1)
meanReversionPositionFactor = input.float(0.5)

// Convert the input string to a timestamp
start_ts = timestamp(year(start_date), month(start_date), dayofmonth(start_date), 0, 0)

// Check if the current bar's time is greater than or equal to the start timestamp
start_condition = time >= start_ts

var tradeOrigin = ""

sma200 = ta.sma(close,200)
rsi2 = ta.rsi(close,2)

isMeanReversionMode = close < sma200 or not(enableTrendfollowing)
isTrendfollowingMode = close > sma200 or not(enableMeanReversion)

isRsiBuy = rsi2 < 20 and enableMeanReversion
isRsiClose = rsi2 > 80 and enableMeanReversion

isSmaBuy = close > sma200 and enableTrendfollowing
isSmaClose = close < sma200 * 0.95 and enableTrendfollowing

isBuy = (isMeanReversionMode and isRsiBuy) or (isTrendfollowingMode and isSmaBuy)

positionSizeFactor = isSmaBuy ? trendPositionFactor : meanReversionPositionFactor

// Only execute the strategy after the starting date
if (start_condition)
    if (isBuy and strategy.opentrades == 0)
        tradeOrigin := isSmaBuy ? "SMA" : "RSI"
        strategy.entry("My Long Entry Id", strategy.long, qty=(strategy.equity / close) * positionSizeFactor, comment=str.tostring(positionSizeFactor))
    isClose = tradeOrigin == "SMA" ? isSmaClose : isRsiClose
    if (isClose)
        strategy.exit("Exit", limit = close)

plot(sma200)
plot(sma200 * 0.95, color=color.orange)

अधिक