मुक्त बैंड दोलन ट्रैकिंग रणनीति


निर्माण तिथि: 2024-02-04 10:28:24 अंत में संशोधित करें: 2024-02-04 10:28:24
कॉपी: 0 क्लिक्स: 614
1
ध्यान केंद्रित करना
1617
समर्थक

मुक्त बैंड दोलन ट्रैकिंग रणनीति

अवलोकन

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

रणनीति सिद्धांत

यह रणनीति एटीआर सूचक के एन-पीरियड एटीआर को एक गुणांक के साथ गणना करने के लिए उपयोग की जाती है। इसकी गणना के लिए सूत्र इस प्रकार हैः

长线止损 = 最高价 - ATR * 系数
短线止损 = 最低价 + ATR * 系数

जब कीमत बढ़ जाती है तो लंबी लाइन के स्टॉपलॉस को तोड़ने के लिए अधिक करें, और जब कीमत कम हो जाती है तो छोटी लाइन के स्टॉपलॉस को तोड़ने के लिए शून्य करें। अधिक करने के बाद, स्टॉपलॉस को स्थानांतरित करने के लिए कीमतों के उतार-चढ़ाव को वास्तविक समय में ट्रैक किया जाएगा।

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

श्रेष्ठता विश्लेषण

इस रणनीति का सबसे बड़ा लाभ यह है कि यह स्वचालित रूप से स्टॉप लॉस को समायोजित कर सकता है और कीमतों की प्रवृत्ति को पकड़ने के साथ-साथ जोखिम को नियंत्रित कर सकता है। इसके विशिष्ट फायदे इस प्रकार हैंः

  1. एटीआर सूचक के आधार पर फ्लोटिंग स्टॉप सेट करें, जो बाजार की अस्थिरता के आधार पर स्टॉप की सीमा को समायोजित कर सकता है, जिससे एकल नुकसान को प्रभावी ढंग से नियंत्रित किया जा सके।

  2. एक ब्रेक-आउट तरीके से सिग्नल उत्पन्न करने के लिए, कुछ शोर को मिटा दिया जा सकता है, जिससे टॉप-अप और टॉप-अप से बचा जा सकता है।

  3. वास्तविक समय में स्टॉप लाइन को ट्रैक करें, स्टॉप को बहुत ढीला होने से रोकें, और अधिक मुनाफे को लॉक करें।

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

इस रणनीति में कुछ जोखिम भी हैं, जो मुख्य रूप से स्टॉप लॉस सेटिंग्स और सिग्नल उत्पन्न करने के तरीके पर केंद्रित हैं। विशिष्ट जोखिम बिंदु इस प्रकार हैंः

  1. गलत एटीआर चक्र और गुणांक के कारण स्टॉप लॉस बहुत चौड़ा या बहुत संकीर्ण हो सकता है।

  2. इस प्रकार के संकेतों को तोड़ने से प्रवृत्ति के शुरुआती अवसरों को याद किया जा सकता है।

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

प्रतिरोध मुख्य रूप से पैरामीटर को समायोजित करने के लिए होता है ताकि स्टॉप लॉस अधिक उचित हो, या अन्य संकेतकों को ट्रेंड और सिग्नल का आकलन करने में सहायता मिल सके।

अनुकूलन दिशा

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

  1. जोखिम को और अधिक नियंत्रित करने के लिए एक दूसरे स्तर का स्टॉपलॉस सेट करें

  2. अन्य संकेतकों के साथ प्रवृत्ति का आकलन करने के लिए, सिग्नल की गुणवत्ता में सुधार करना।

  3. एक मोबाइल स्टॉप रणनीति जोड़ें और प्रवृत्ति आगे बढ़ने पर लाभप्रदता बढ़ाएं।

  4. एटीआर चक्र और कारक मापदंडों का अनुकूलन करें ताकि स्टॉप लॉस वास्तविक मूल्य उतार-चढ़ाव के करीब हो।

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
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/
// © melihtuna
//@version=4
strategy("Chandelier Exit - Strategy",shorttitle="CE-STG" , overlay=true, default_qty_type=strategy.cash, default_qty_value=10000, initial_capital=10000, currency=currency.USD, commission_value=0.03, commission_type=strategy.commission.percent)

length = input(title="ATR Period", type=input.integer, defval=22)
mult = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
showLabels = input(title="Show Buy/Sell Labels ?", type=input.bool, defval=false)
useClose = input(title="Use Close Price for Extremums ?", type=input.bool, defval=true)
highlightState = input(title="Highlight State ?", type=input.bool, defval=true)

atr = mult * atr(length)

longStop = (useClose ? highest(close, length) : highest(length)) - atr
longStopPrev = nz(longStop[1], longStop) 
longStop := close[1] > longStopPrev ? max(longStop, longStopPrev) : longStop

shortStop = (useClose ? lowest(close, length) : lowest(length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop

var int dir = 1
dir := close > shortStopPrev ? 1 : close < longStopPrev ? -1 : dir

var color longColor = color.green
var color shortColor = color.red

longStopPlot = plot(dir == 1 ? longStop : na, title="Long Stop", style=plot.style_linebr, linewidth=2, color=longColor)
buySignal = dir == 1 and dir[1] == -1
plotshape(buySignal ? longStop : na, title="Long Stop Start", location=location.absolute, style=shape.circle, size=size.tiny, color=longColor, transp=0)
plotshape(buySignal and showLabels ? longStop : na, title="Buy Label", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=longColor, textcolor=color.white, transp=0)

shortStopPlot = plot(dir == 1 ? na : shortStop, title="Short Stop", style=plot.style_linebr, linewidth=2, color=shortColor)
sellSignal = dir == -1 and dir[1] == 1
plotshape(sellSignal ? shortStop : na, title="Short Stop Start", location=location.absolute, style=shape.circle, size=size.tiny, color=shortColor, transp=0)
plotshape(sellSignal and showLabels ? shortStop : na, title="Sell Label", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=shortColor, textcolor=color.white, transp=0)

midPricePlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0, display=display.none, editable=false)

longFillColor = highlightState ? (dir == 1 ? longColor : na) : na
shortFillColor = highlightState ? (dir == -1 ? shortColor : na) : na
fill(midPricePlot, longStopPlot, title="Long State Filling", color=longFillColor)
fill(midPricePlot, shortStopPlot, title="Short State Filling", color=shortFillColor)


long_short = input(true, "Long-Short",type=input.bool, group="Strategy Settings")

start     = input(timestamp("2019-01-01"), "Date", type=input.time, group="Strategy Settings")
finish    = input(timestamp("2025-01-01"), "Date", type=input.time, group="Strategy Settings")   
window()  => true

slRatio=input(5, "Manuel Stop Loss Ratio", type=input.float, minval=0, group="Strategy Settings")
tpRatio=input(20, "Take Profit Ratio", type=input.float, minval=0, group="Strategy Settings")
tsStartRatio=input(10, "Trailing Stop Start Ratio", type=input.float, minval=0, group="Strategy Settings")
tsRatio=input(5, "Trailing Stop Ratio", type=input.float, minval=1, group="Strategy Settings")

lastBuyPrice = strategy.position_avg_price

diffHiPriceRatio = (high-lastBuyPrice)/lastBuyPrice*100
diffLoPriceRatio = (close-lastBuyPrice)/lastBuyPrice*100
posHiRatio=0.0
posHiRatio:= strategy.position_size > 0 ? diffHiPriceRatio > posHiRatio[1] ? diffHiPriceRatio : posHiRatio[1] : 0

s_diffHiPriceRatio = (low-lastBuyPrice)/lastBuyPrice*100
s_diffLoPriceRatio = (close-lastBuyPrice)/lastBuyPrice*100
s_posHiRatio=0.0
s_posHiRatio:= strategy.position_size < 0 ? s_diffLoPriceRatio < s_posHiRatio[1] ? s_diffLoPriceRatio : s_posHiRatio[1] : 0

strategy.entry("LONG", strategy.long, when = window() and buySignal)
strategy.close("LONG", when = window() and sellSignal)
strategy.close("LONG", when = diffLoPriceRatio<(slRatio*(-1)), comment="STOP-LONG")
strategy.close("LONG", when = diffHiPriceRatio>tpRatio, comment="TAKE-PROFIT-LONG")
strategy.close("LONG", when = ((posHiRatio[1]>tsStartRatio) and (posHiRatio[1]-diffHiPriceRatio)>tsRatio), comment="TRAILING-STOP-LONG")

if long_short
    strategy.entry("SHORT", strategy.short, when = window() and sellSignal)
    strategy.close("SHORT", when = window() and buySignal)
    strategy.close("SHORT", when = s_diffLoPriceRatio>(slRatio), comment="STOP-SHORT")
    strategy.close("SHORT", when = s_diffHiPriceRatio<(tpRatio*(-1)), comment="TAKE-PROFIT-SHORT")
    strategy.close("SHORT", when = ((s_posHiRatio[1]*(-1)>tsStartRatio) and ((s_posHiRatio[1]-s_diffLoPriceRatio))*(-1)>tsRatio), comment="TRAILING-STOP-SHORT")