
यह रणनीति एक द्वि-दिशात्मक ट्रेडिंग रणनीति है जो उतार-चढ़ाव को ट्रैक करती है। यह औसत वास्तविक उतार-चढ़ाव एटीआर संकेतक का उपयोग करके स्टॉप-लॉस सेट करती है और प्रवृत्ति की दिशा को निर्धारित करती है कि कीमत किस दिशा में स्टॉप-लॉस को तोड़ती है। प्रवृत्ति की दिशा में बदलाव होने पर रिवर्स स्थिति खोलें।
यह रणनीति 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