सुपरट्रेंड पर आधारित दीर्घकालिक ट्रेडिंग रणनीति

लेखक:चाओझांग, दिनांक: 2023-09-20 17:14:33
टैगः

अवलोकन

यह रणनीति सुपरट्रेंड संकेतक का उपयोग करके लंबे अवसरों की पहचान करती है। यह लंबी प्रविष्टि के लिए गतिशील समर्थन स्तरों को निर्धारित करने के लिए एटीआर और एक गुणक का उपयोग करती है। फोकस लंबी ट्रेडों पर है।

रणनीति तर्क

  1. ऊपरी और निचले बैंड की गणना एटीआर अवधि, गुणक के आधार पर की जाती है। ऊपरी बैंड को तोड़ने से ऊपर की ओर रुझान होता है, निचले बैंड को तोड़ने से नीचे की ओर रुझान होता है।

  2. वर्तमान रुझान को ट्रैक किया जाता है, अपट्रेंड के लिए 1 और डाउनट्रेंड के लिए -1 के साथ। ऊपरी बैंड से ऊपर की कीमत नीचे से ऊपर की ओर रुझान को बदलती है, खरीद संकेत उत्पन्न करती है। नीचे के बैंड से नीचे की ओर स्विच करता है, बिक्री संकेत उत्पन्न करता है।

  3. एक चलती औसत को ट्रेंड फ़िल्टर के रूप में जोड़ा जाता है। केवल तभी खरीदें जब कीमत ऊपरी बैंड से ऊपर टूटने पर एमए से ऊपर हो। केवल तभी बेचें जब कीमत निचले बैंड से नीचे टूटने पर एमए से नीचे हो। इससे नकली ब्रेकआउट से बचा जाता है।

  4. दृश्य सहायक निर्णय लेने में सहायता के लिए रुझानों, संकेतों आदि को उजागर करते हैं।

लाभ विश्लेषण

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

  1. सुपरट्रेंड गतिशील रूप से मूल्य परिवर्तनों को ट्रैक करता है और समय पर रुझान में बदलाव को दर्शाता है।

  2. एटीआर स्टॉप लॉस बाजार की अस्थिरता के आधार पर स्टॉप को समायोजित करता है, जिससे मुनाफे को लॉक करने में मदद मिलती है।

  3. एमए फिल्टर विभिन्न बाजारों में शोर से झूठे संकेतों को समाप्त करता है।

  4. विजुअल डिजाइन रणनीतिक यांत्रिकी और बाजार की स्थिति को सहज रूप से प्रस्तुत करता है।

  5. केवल ट्रेडिंग रुझान के उलट-फेर से ही यह दीर्घकालिक होल्डिंग के लिए उपयुक्त है।

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

मुख्य जोखिम हैंः

  1. सुपरट्रेंड मापदंडों के प्रति संवेदनशील है. बार-बार बैंड समायोजन से ओवर ट्रेडिंग हो सकती है.

  2. अस्थिर बाजारों में, स्टॉप को अक्सर ट्रिगर किया जा सकता है।

  3. व्यापारिक लागतों पर विचार नहीं किया जाता है। छोटे खातों पर अधिक प्रभाव पड़ता है।

  4. कोई स्टॉप लॉस का अर्थ है उच्च ड्रॉडाउन जोखिम।

  5. ट्रेंड फिल्टर कुछ अवसरों को याद कर सकता है।

जोखिमों को निम्न द्वारा कम किया जा सकता हैः

  1. कम बैंड समायोजन आवृत्ति के लिए एटीआर मापदंडों का अनुकूलन।

  2. उच्च आवृत्ति वाले मामूली स्विंग से रोकने के लिए समकक्ष बार फ़िल्टरिंग जोड़ना।

  3. लाभ की रक्षा के लिए स्टॉप लॉस और ले लाभ को लागू करना।

  4. संतुलन फ़िल्टरिंग प्रभाव के लिए चलती औसत अवधि को समायोजित करना।

  5. व्यापार लागत प्रभाव को कम करने के लिए धन प्रबंधन को अनुकूलित करना।

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

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

  1. विभिन्न मूल्य स्रोतों जैसे कि करीब, उच्च आदि का परीक्षण करें।

  2. अन्य गतिशील स्टॉप लॉस संकेतक जैसे चैंडिलर एक्जिट का प्रयास करें।

  3. पूंजी उपयोग को अनुकूलित करने के लिए स्थिति आकार जोड़ें।

  4. प्रविष्टियों को परिष्कृत करने के लिए अस्थिरता संकेतकों को शामिल करें।

  5. जोखिमों को नियंत्रित करने के लिए स्टॉप लॉस लागू करें और लाभ लें।

  6. विभिन्न बाजारों के लिए मापदंडों को समायोजित करें।

  7. पैरामीटर अनुकूलन के लिए मशीन सीखने का अन्वेषण करें।

  8. फ़िल्टर की सटीकता में सुधार के लिए अन्य संकेतकों को मिलाएं।

निष्कर्ष

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


/*backtest
start: 2020-09-13 00:00:00
end: 2023-09-19 00:00:00
period: 3d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("SuperTrend Long Strategy", overlay=true, initial_capital=50000, currency=currency.USD, default_qty_type=strategy.cash, default_qty_value=50000)

Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR = input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true)

atr2 = sma(tr, Periods)
atr = changeATR ? atr(Periods) : atr2

up = src - (Multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up

dn = src + (Multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn

trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Moving Average as Trend Filter
periodes_ma = input(title="Moving Average Period", type=input.integer, defval=20)
src_ma = input(title="Moving Average Source", type=input.source, defval=close)
ma = sma(src_ma, periodes_ma)

upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1 and close > ma
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0))

dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1 and close < ma
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0))

mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.new(color.green, 70) : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.new(color.red, 70) : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)

FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 999)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 999)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       

window()  => time >= start and time <= finish ? true : false

longCondition = buySignal
if (longCondition)
    strategy.entry("BUY", strategy.long, when = window())

shortCondition = sellSignal
if (shortCondition)
    strategy.close("BUY")
    strategy.entry("SELL", strategy.short, when = window())

buy1 = barssince(buySignal)
sell1 = barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(barcoloring ? color1 : na)


अधिक