सुपरट्रेंड दोहरी दिशा रणनीति

लेखक:चाओझांग, दिनांक: 2023-10-08 15:02:45
टैगः

अवलोकन

यह रणनीति एटीआर संकेतक के आधार पर गणना किए गए ऊपरी और निचले बैंड का उपयोग वर्तमान प्रवृत्ति की दिशा निर्धारित करने और खरीद और बिक्री संकेत उत्पन्न करने के लिए करती है। यह ऊपरी बैंड के ऊपर कीमत तोड़ने पर लंबा और निचले बैंड के नीचे कीमत तोड़ने पर छोटा सुझाव देती है।

रणनीति तर्क

  1. एटीआर सूचक की गणना करें, जो औसत मूल्य अस्थिरता सीमा का प्रतिनिधित्व करता है।
  2. ऊपरी और निचले बैंडों की गणना एटीआर मान के गुणक के आधार पर की जाती है।
  3. बैंडों के साथ मूल्य के संबंध के आधार पर प्रवृत्ति की दिशा निर्धारित करें।
    • जब कीमत ऊपरी बैंड से ऊपर होती है, तो यह एक अपट्रेंड होता है।
    • जब कीमत निचले बैंड से नीचे होती है, तो यह गिरावट की प्रवृत्ति होती है।
  4. जब रुझान दिशा बदलता है तो खरीद और बिक्री संकेत उत्पन्न करें।
    • ऊपर के बैंड के पास खरीदारी का संकेत तब उत्पन्न होता है जब ट्रेंड डाउनट्रेंड से अपट्रेंड में बदलता है।
    • नीचे के बैंड के पास बिक्री का संकेत तब उत्पन्न होता है जब प्रवृत्ति अपट्रेंड से डाउनट्रेंड में बदल जाती है।
  5. ऊपरी/नीचे के बैंड, रुझान की दिशा और व्यापार संकेतों की कल्पना करें।

लाभ विश्लेषण

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

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

  • अनुचित एटीआर अवधि मूल्य से बैंड को अलग कर सकती है।
  • बहुत बड़ा/छोटा गुणक अधिक झूठे संकेत और विलंब संकेत का कारण बनता है।
  • रिवर्स ट्रेडिंग से नुकसान होने का कारण गलत रिवर्स टाइम होता है।
  • उसे अन्य फ़िल्टरों की आवश्यकता है ताकि उसे पीटा न जाए।

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

  • बाजार की अस्थिरता के अनुरूप एटीआर अवधि का गतिशील अनुकूलन।
  • विभिन्न उत्पादों और समय सीमाओं के लिए पैरामीटर ट्यूनिंग।
  • प्रवृत्ति सत्यापन के लिए मात्रा जैसे अन्य संकेतकों को मिलाएं।
  • पैरामीटर अनुकूलन के लिए मशीन लर्निंग का उपयोग करें।

सारांश

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


/*backtest
start: 2022-10-01 00:00:00
end: 2023-10-07 00:00:00
period: 3d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

TradeId = "RVG"

InitCapital = 1000
InitPosition = 1000
InitCommission = 0.075
InitPyramidMax = 1
CalcOnorderFills = true
CalcOnTick = true

//@version=4
// strategy("Supertrend RG", overlay = true,process_orders_on_close=true,commission_type=strategy.commission.percent,commission_value=InitCommission,
//  currency=currency.USD,initial_capital=InitCapital,default_qty_type=strategy.cash, default_qty_value=InitPosition, calc_on_order_fills=CalcOnorderFills, calc_on_every_tick=CalcOnTick,pyramiding=InitPyramidMax)

//
////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE

// From Date Inputs
fromDay = input(defval=1, title="From Day", minval=1, maxval=31)
fromMonth = input(defval=1, title="From Month", minval=1, maxval=12)
fromYear = input(defval=2018, title="From Year", minval=1970)

// To Date Inputs
toDay = input(defval=1, title="To Day", minval=1, maxval=31)
toMonth = input(defval=1, title="To Month", minval=1, maxval=12)
toYear = input(defval=2100, title="To Year", minval=1970)

// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true



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=true)
highlighting = input(title="Highlighter 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
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
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=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
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!")
alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!")
changeCond = trend != trend[1]
alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")


strategy.entry(TradeId + " Long", true, when=buySignal[1] and time_cond)
strategy.entry(TradeId + " Short", false, when=sellSignal[1] and time_cond)   




अधिक