गतिशील प्रवृत्ति ट्रैकिंग अनुकूलन रणनीति


निर्माण तिथि: 2024-01-12 11:20:04 अंत में संशोधित करें: 2024-01-12 11:20:04
कॉपी: 2 क्लिक्स: 551
1
ध्यान केंद्रित करना
1617
समर्थक

गतिशील प्रवृत्ति ट्रैकिंग अनुकूलन रणनीति

अवलोकन

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

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

  1. मूल्य प्रवृत्तियों के लिए सीएमओ सूचकांक की गणना
  2. मूल्य परिवर्तन की प्रवृत्ति को दर्शाने के लिए परिवर्तन दर Var की गणना करें
  3. परिवर्तन दर के आधार पर समर्थन रेखाएं
  4. गणना अनुकूलित स्टॉप लाइनों longStop और shortStop
  5. जब कीमत समर्थन रेखा को तोड़ती है तो ट्रेडिंग सिग्नल उत्पन्न करें

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

  1. सीएमओ सूचकांक का उपयोग करके मूल्य रुझानों का आकलन करें और झूठी सफलताओं से बचें
  2. समर्थन रेखा स्पष्ट रूप से प्रवृत्ति की दिशा का आकलन करती है
  3. अनुकूलित स्टॉप लॉस लाइन अधिक मुनाफे को लॉक कर सकती है
  4. ट्रेडिंग सिग्नल सरल, स्पष्ट और आसानी से ट्रैक किए जाते हैं

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

  1. सीएमओ सूचकांक में देरी, कीमतों के मोड़ से चूक सकता है
  2. समर्थन लाइनों को तोड़ने से झूठे संकेत हो सकते हैं
  3. स्टॉप लॉस रेंज का अनुचित अनुकूलन अधिक नुकसान का कारण बन सकता है

जोखिम समाधान:

  1. सीएमओ मापदंडों को उचित रूप से समायोजित करें और कम करें
  2. अन्य संकेतकों के साथ मिलकर झूठे संकेतों को फ़िल्टर करना
  3. परीक्षण उपयुक्त स्टॉप लॉस अनुकूलन अनुपात निर्धारित करने के लिए

अनुकूलन दिशा

  1. अधिक संकेतक संयोजन, फ़िल्टर झूठे संकेत
  2. एआई स्वचालित रूप से स्टॉप-लॉस रेंज का अनुकूलन करता है
  3. स्वचालित रूप से लेन-देन की मात्रा को समायोजित करें

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2024-01-04 00:00:00
end: 2024-01-11 00:00:00
period: 45m
basePeriod: 5m
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("Optimized Trend Tracker - Strategy Version", shorttitle="OTT-Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=10000, currency=currency.USD, commission_value=0.1, commission_type=strategy.commission.percent)

src = input(close, title="Source")
pds=input(1, "OTT Period", minval=1)
percent=input(0.1, "OTT Percent", type=input.float, step=0.1, minval=0)
condition = input(title="Condition", defval="Support Line Crossing Signals", options=["Price/OTT Crossing Signals", "Support Line Crossing Signals"])
showsupport = input(title="Show Support Line?", type=input.bool, defval=true)
highlight = input(title="Show OTT Color Changes?", type=input.bool, defval=true)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloing = input(title="Barcolor On/Off ?", type=input.bool, defval=true)
showlabels = input(title="Show OTT BUY/SELl Labels?", type=input.bool, defval=false)

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2020, title = "From Year", minval = 2017)
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 = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

alpha=2/(pds+1)
ud1=src>src[1] ? src-src[1] : src
dd1=src<src[1] ? src[1]-src : src
UD=sum(ud1,9)
DD=sum(dd1,9)
CMO=(UD-DD)/(UD+DD)
k= abs(CMO)
Var=0.0
Var:=(alpha*k*src)+(1-alpha*k)*nz(Var[1])
fark=Var*percent*0.01
longStop = Var - fark
longStopPrev = nz(longStop[1], longStop)
longStop := Var > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop =  Var + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := Var < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop
dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and Var > shortStopPrev ? 1 : dir == 1 and Var < longStopPrev ? -1 : dir
MT = dir==1 ? longStop: shortStop
OTT=Var>MT ? MT*(200+percent)/200 : MT*(200-percent)/200 
plot(showsupport ? Var : na, color=#0585E1, linewidth=2, title="Support Line")
OTTC = highlight ? OTT[2] > OTT[3] ? color.green : color.red : #B800D9 
pALL=plot(nz(OTT[2]), color=OTTC, linewidth=2, title="OTT", transp=0)

buySignalk = window() and crossover(Var, OTT[2])
sellSignallk = window() and crossunder(Var, OTT[2])
buySignalc = window() and crossover(src, OTT[2])
sellSignallc = window() and crossunder(src, OTT[2])

plotshape(condition == "Support Line Crossing Signals" ? showlabels and buySignalk ? OTT*0.995 : na : showlabels and buySignalc ? OTT*0.995 : na, title="BUY", text="BUY", location=location.belowbar, style=shape.labelup, size=size.tiny, color=#0F18BF, textcolor=color.white, transp=0)
plotshape(condition == "Support Line Crossing Signals" ? showlabels and sellSignallk ? OTT*1.005 : na : showlabels and sellSignallc ? OTT*1.005 : na, title="SELL", text="SELL", location=location.abovebar, style=shape.labeldown, size=size.tiny, color=#0F18BF, textcolor=color.white, transp=0)
  
ottBuyColor=#77DD77
ottSellColor=#FF0000
vColor = strategy.position_size > 0 ? ottBuyColor : ottSellColor

if condition == "Support Line Crossing Signals"
    strategy.entry("BUY", true, 1, when = buySignalk)
    strategy.entry("SELL", false, 1, when = sellSignallk)
else
    strategy.entry("BUY", true, 1, when = buySignalc)
    strategy.entry("SELL", false, 1, when = sellSignallc)

mPlot = plot(close, title="", style=plot.style_circles, linewidth=0,display=display.none)

longFillColor = highlighting ? (Var>OTT ? color.green : na) : na
shortFillColor = highlighting ? (Var<OTT ? color.red : na) : na
fill(mPlot, pALL, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, pALL, title="DownTrend Highligter", color=shortFillColor)

barcolor(barcoloing ? vColor : na)