मोमेंटम स्विंग ट्रेडिंग रणनीति

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

img

अवलोकन

यह एक दैनिक अंतराल स्विंग ट्रेडिंग रणनीति है जो एटीआर स्टॉप का उपयोग करके गति तकनीक पर आधारित है। इसे स्थिर से कोरी होंग द्वारा बनाया गया था।

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

रणनीति तर्क

कोड पहले बैकटेस्टिंग समय सीमा सेट करता है।

इसके बाद सूचक खंड में निम्नलिखित सूचक गणना की जाती है:

  • atr(): स्टॉप लॉस के लिए ATR की गणना करें;
  • max_/min_: पिछले बार की उच्चतम/निम्नतम कीमत;
  • is_uptrend: यह पता लगाएं कि क्या यह ऊपर की ओर है;
  • प्रवेशः स्टॉप लॉस लाइन;

प्रवृत्ति का आकलन करने का मुख्य तर्क हैः

यदि बंद पिछले डाउनसाइड स्टॉप लॉस लाइन से ऊपर है, तो इसे अपट्रेंड माना जाता है; यदि बंद पिछले अपसाइड स्टॉप लॉस लाइन से नीचे है, तो इसे डाउनट्रेंड माना जाता है।

जब रुझान बदलता है, तो स्टॉप लॉस लाइन की स्थिति को समायोजित करें।

विशेष रूप से, एक अपट्रेंड में, स्टॉप लॉस लाइन को पिछले बार की उच्चतम कीमत घटाकर एटीआर मूल्य पर सेट किया जाता है; एक डाउनट्रेंड में, स्टॉप लॉस लाइन को पिछले बार की सबसे कम कीमत प्लस एटीआर मूल्य पर सेट किया जाता है।

यह स्टॉप लॉस के बाद रुझान का एहसास करता है।

ट्रेडिंग नियम अनुभाग में, जब मूल्य स्टॉप लॉस लाइन को तोड़ता है तो लंबी/लघु स्थिति खोलें।

लाभ विश्लेषण

इस रणनीति के फायदे:

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

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

कुछ जोखिम भी हैं:

  1. गलत एटीआर पैरामीटर के कारण स्टॉप लॉस बहुत ढीला या बहुत तंग हो सकता है।
  2. विभिन्न रुझानों में भयंकर विप्सॉव हो सकते हैं, जिससे लगातार स्टॉप लॉस हो सकता है।
  3. उच्च व्यापारिक आवृत्ति, उच्च कमीशन।

कुछ अनुकूलनः

  1. इष्टतम खोजने के लिए विभिन्न एटीआर मापदंडों का परीक्षण करें।
  2. एटीआर के ऊपर अस्थिरता मेट्रिक्स को जोड़कर स्टॉप लॉस को अनुकूलित करें।
  3. चंचल बाजारों के दौरान अनावश्यक ट्रेडों से बचने के लिए ट्रेंड फिल्टर जोड़ें।

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

इस रणनीति को अनुकूलित करने के लिए कुछ दिशाएंः

  1. इष्टतम खोजने के लिए विभिन्न एटीआर मापदंडों का परीक्षण करें। कई मापदंड सेटों का बैकटेस्ट करें और रिटर्न/जोखिम अनुपात का मूल्यांकन करें।

  2. एटीआर के ऊपर अस्थिरता मीट्रिक को जोड़कर स्टॉप लॉस को अनुकूलित करें। अस्थिरता मीट्रिक जोड़ें, अस्थिरता बढ़ने की अवधि के दौरान स्टॉप लॉस को ठीक से आराम दें।

  3. चंचल बाजार के दौरान ट्रेडों से बचने के लिए ट्रेंड फिल्टर जोड़ें। ट्रेंड जजमेंट इंडिकेटर जोड़ें, केवल ट्रेंड स्पष्ट होने पर ही ट्रेड करें।

  4. स्थिति आकार निर्धारण तंत्र जोड़ें. खाता उपयोग अनुपात, लगातार स्टॉप लॉस समय आदि के आधार पर स्थिति आकार समायोजित करें.

  5. ओवरनाइट गैप जोखिम नियंत्रण जोड़ें। ओवरनाइट गैप जोखिम से बचने के लिए बाजार बंद होने से पहले सक्रिय रूप से नुकसान में कटौती करें।

निष्कर्ष

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

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


/*backtest
start: 2023-01-29 00:00:00
end: 2024-02-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("BTC Swinger", overlay=true, commission_value = 0.25, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)

/////////////////////////////////////////////////////////////
//START - SET DATE RANGE

// === BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2010, title = "From Year")
ToMonth   = input(defval = 12, title = "To Month", minval = 1)
ToDay     = input(defval = 31, title = "To Day", minval = 1)
ToYear    = input(defval = 2020, title = "To Year")

startDate = time > timestamp(FromYear, FromMonth, FromDay, 1, 1)
endDate = time < timestamp(ToYear, ToMonth, ToDay, 23, 59)
withinTimeRange = true

/////////////////////////////////////////////////////////////
//END - SET DATE RANGE



/////////////////////////////////////////////////////////////
//START - INDICATORS

length = input(3)
mult = input(1, minval = 0.01)
atr_ = atr(length)
max1 = max(nz(max_[1]), close)
min1 = min(nz(min_[1]), close)
is_uptrend_prev = nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend = close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ = is_trend_changed ? close : max1
min_ = is_trend_changed ? close : min1
vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? yellow : red, style=circles, linewidth=2)

/////////////////////////////////////////////////////////////
//END - INDICATORS



/////////////////////////////////////////////////////////////
//START - TRADING RULES
direction = input(defval=1, title = "Strategy Direction", minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

condition1 = close > vstop and withinTimeRange
condition2 = close < vstop and withinTimeRange

strategy.entry("BUY", strategy.long, when = condition1)
strategy.entry("SELL", strategy.short, when = condition2)

/////////////////////////////////////////////////////////////
//END - TRADING RULES

अधिक