स्विंग ट्रेंड मूविंग एवरेज रणनीति

लेखक:चाओझांग, दिनांकः 2024-02-04 15:44:54
टैगः

img

अवलोकन

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

रणनीति तर्क

रणनीति निम्नलिखित सिद्धांतों के आधार पर तैयार की गई हैः

  1. समग्र प्रवृत्ति दिशा निर्धारित करने के लिए एक घातीय चलती औसत का प्रयोग करें। डिफ़ॉल्ट अवधि 200 बार है।
  2. पिछले 10 बार में औसत वास्तविक सीमा की गणना करें।
  3. जब समापन मूल्य मूविंग एवरेज + एवरेज ट्रू रेंज से ऊपर होता है, तो इसे अपट्रेंड के रूप में निर्धारित किया जाता है।
  4. जब समापन मूल्य मूविंग एवरेज - एवरेज ट्रू रेंज से नीचे होता है, तो इसे डाउनट्रेंड के रूप में निर्धारित किया जाता है।
  5. ऊपर की ओर बढ़ते समय लंबा और नीचे की ओर बढ़ते समय छोटा करें।
  6. डिफ़ॉल्ट रूप से, चलती औसत का उपयोग स्टॉप लॉस लाइन के रूप में किया जाता है. यह स्टॉप लॉस लाइन के रूप में चलती औसत ± औसत सच्ची रेंज का उपयोग करना भी चुन सकता है.

लाभ विश्लेषण

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

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

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

इस रणनीति में कुछ संभावित जोखिम भी हैं:

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

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

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

  1. विभिन्न प्रकार के चलती औसत का परीक्षण करें ताकि विशिष्ट स्टॉक या उत्पादों के लिए सबसे उपयुक्त ज्ञात हो सके।
  2. चलती औसत अवधि के मापदंड को अनुकूलित करना ताकि यह कारोबार किए जाने वाले स्टॉक या उत्पादों की विशेषताओं के लिए अधिक उपयुक्त हो।
  3. औसत वास्तविक रेंज पैरामीटर को अनुकूलित करें ताकि रुझानों को याद किए बिना रेंज बाजारों को फ़िल्टर करने के लिए सबसे अच्छा संयोजन मिल सके।
  4. अमान्य ब्रेकआउट से बचने के लिए वॉल्यूम नियम जोड़ें.
  5. इष्टतम समाधान निर्धारित करने के लिए विभिन्न स्टॉप लॉस विधियों का परीक्षण और तुलना करें।

निष्कर्ष

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


/*backtest
start: 2023-01-28 00:00:00
end: 2024-02-03 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/
// © Inkedlau

//@version=5
strategy('Swing Trend Strategy', overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=1000, commission_value=0.1)

use_short = input.bool(false, 'Open Short Positions?')
exit_type = input.bool(true, 'Exit trade on Moving Average Cross?')
src = input.source(close, 'Source')
len = input.int(200, 'Trend Length')
ma_type = input.string('ema', 'Moving Average Type', options=['sma', 'ema', 'rma', 'wma', 'vwma'], tooltip='Select the type of Moving Average to use to calculate the Trend')
atr_multiplier = input.float(1., 'ATR Threshold', step=0.5, tooltip='Filter the ranging market using the Average True Range')

// ----------------------- DESCRIPTION -----------------------
// THIS SCRIPT IS A TREND FOLLOWING SYSTEM THAT USES A COMBINATION OF MOVING AVERAGE AND AVERAGE TRUE RANGE
// TO SPOT THE TRENDS AND ENTER THE MARKET ACCODINGLY.
// THE MARKET IS CONSIDERED IN AN UPTREND WHEN THE PRICE CLOSES ABOVE THE MOVING AVERAGE + THE AVERAGE TRUE RANGE OF THE LAST 10 PERIODS
// THE MARKET IS CONSIDERED IN AN DOWNTREND WHEN THE PRICE CLOSES BLOW THE MOVING AVERAGE - THE AVERAGE TRUE RANGE OF THE LAST 10 PERIODS
// BY DEFAULT, THE STRATEGY WILL ENTER LONG WHEN AN UPTREND IS SPOTTED, THEN CLOSES WHEN THE PRICE CLOSES BELOW THE MOVING AVERAGE
// THE STRATEGY WILL ENTER SHORT WHEN A DOWNTREND IS SPOTTED, THEN CLOSES WHEN THE PRICE CLOSES ABOVE THE MOVING AVERAGE

// ------------------ INDICATORS CALCULATION------------------
my_ma()=>
    ma = close
    if ma_type == 'sma'
        ma := ta.sma(src, len)
    if ma_type == 'ema'
        ma := ta.ema(src, len)
    if ma_type == 'rma'
        ma := ta.rma(src, len)
    if ma_type == 'wma'
        ma := ta.wma(src, len)
    if ma_type == 'vwma'
        ma := ta.vwma(src, len)
    ma

trend = my_ma()
atr = ta.atr(10)
uptrend = trend + atr * atr_multiplier
downtrend = trend - atr * atr_multiplier

// ---------------- ENTRY AND EXIT CONDITIONS ----------------

open_long = strategy.position_size == 0 and src > uptrend
close_long = exit_type ? strategy.position_size > 0 and src < trend : strategy.position_size > 0 and src < downtrend

open_short = use_short and strategy.position_size == 0 and src < downtrend
close_short = exit_type ? strategy.position_size < 0 and src > trend : strategy.position_size < 0 and src > uptrend

strategy.entry('long', strategy.long, when=open_long)
strategy.close('long', when=close_long)

strategy.entry('short', strategy.short, when=open_short)
strategy.close('short', when=close_short)


// ------------------ PLOTTING AND COLORING ------------------
tcolor = src > uptrend ? color.green : src < downtrend ? color.red : na

ptrend = plot(trend, color=color.blue, linewidth=1)
puptrend = plot(uptrend, color=color.green, linewidth=1)
pdowntrend = plot(downtrend, color=color.red, linewidth=1)
pclose = plot(close, color=na)

fill(puptrend, pclose, color=close > uptrend ? color.green : na, transp = 90)
fill(pdowntrend, pclose, color=close < downtrend ? color.red : na, transp = 90)



अधिक