दो-दिशात्मक अस्थिरता निगलने की रणनीति

लेखक:चाओझांग, दिनांकः 2023-11-21 12:04:19
टैगः

img

अवलोकन

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

रणनीति तर्क

रणनीति अस्थिरता की गणना करने के लिए 3-दिवसीय एटीआर का उपयोग करती है। एक गुणांक से गुणा एटीआर मूल्य को स्टॉप लॉस स्तर के रूप में उपयोग किया जाता है। जब कीमत स्टॉप लॉस स्तर से ऊपर होती है, तो यह इसे एक अपट्रेंड के रूप में आंकता है और जब कीमत स्टॉप लॉस स्तर से नीचे गिरती है तो लंबी स्थिति को बंद कर देता है। जब कीमत स्टॉप लॉस स्तर से नीचे होती है, तो यह इसे एक डाउनट्रेंड के रूप में आंकता है और जब कीमत स्टॉप लॉस स्तर से ऊपर उठती है तो शॉर्ट स्थिति को बंद कर देती है। यह रुझान बदलने पर रिवर्स स्थिति खोलती है। रुझान के दौरान स्टॉप लॉस स्तर को अनुकूलित किया जाता है और रुझान बदलने पर रीसेट किया जाता है।

लाभ विश्लेषण

  • बाजार की अस्थिरता को गतिशील रूप से ट्रैक करने और स्टॉप लॉस की संभावना को कम करने के लिए एटीआर का उपयोग करता है
  • बाजार में उतार-चढ़ाव से द्विदिश व्यापार लाभ
  • उच्च जीत दर के लिए रुझान परिवर्तनों में जल्दी रिवर्स पद खोलता है

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

  • अत्यधिक अस्थिरता के कारण एटीआर में देरी होने पर स्टॉप लॉस विफल हो सकता है
  • लंबी पोजीशनों के लिए गैप जोखिम मौजूद है
  • अक्सर छोटे मुनाफे का व्यापार कर सकता है

जोखिमों को कम करने के लिए: व्यापक स्टॉप स्तरों के लिए एटीआर गुणांक बढ़ाएं, व्यापार की आवृत्ति को सीमित करें, न्यूनतम लाभ लेने के स्तर निर्धारित करें, आदि।

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

  • रुझान परिवर्तन संकेतों के लिए अन्य संकेतकों का संयोजन करें
  • एटीआर मापदंडों को अनुकूलित करें
  • व्यापार आकार नियंत्रण जोड़ें

सारांश

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


/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("BCH Swinger v1", 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 = 2017, title = "From Year")
ToMonth   = input(defval = 10, title = "To Month", minval = 1)
ToDay     = input(defval = 01, 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

अधिक