मोमेंटम स्विंग ट्रेडिंग रणनीति


निर्माण तिथि: 2023-12-15 11:00:25 अंत में संशोधित करें: 2023-12-15 11:00:25
कॉपी: 0 क्लिक्स: 679
1
ध्यान केंद्रित करना
1621
समर्थक

मोमेंटम स्विंग ट्रेडिंग रणनीति

अवलोकन

Dynamic Momentum Oscillator Trading Strategy (डीएमओ रणनीति) एक 15 मिनट की शॉर्ट-लाइन ट्रेडिंग रणनीति है जो गतिशीलता के उतार-चढ़ाव के संकेतकों पर आधारित है। यह रणनीति कई तकनीकी संकेतकों के साथ मिलकर उच्च सटीकता वाले ट्रेडिंग संकेतों को प्राप्त करती है, जो नौसिखिया व्यापारियों को खरीदने और बेचने के निर्णय लेने, जोखिम को नियंत्रित करने और मुनाफे की संभावना बढ़ाने में मदद करती है।

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

यह रणनीति सबसे पहले बाजार की मुख्य प्रवृत्ति की दिशा का निर्धारण करने के लिए डॉइनचियन चैनल का उपयोग करती है। जब कीमत इस चैनल को पार करती है तो यह एक bullish संकेत है, और यदि यह नीचे की ओर है तो यह एक bearish संकेत है। इसके बाद, रणनीति 3 में से एक हॉल मूविंग एवरेज वेरिएंट का उपयोग करती है, जो एटीआर चैनल के लिए अनुकूलित है।

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

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

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

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

अनुकूलन दिशा

डीएमओ रणनीति को निम्नलिखित आयामों से अनुकूलित किया जा सकता हैः पहला, हुल एमए के मापदंडों को समायोजित करना, चलती औसत की लंबाई को अनुकूलित करना, चिकनाई के प्रभाव और संवेदनशीलता के बीच संतुलन; दूसरा, डोइनचियन चैनल निर्णय तर्क में सुधार करना, जैसे कि चैनल मापदंडों को समायोजित करना, या अतिरिक्त शर्तों को सीमित करना; तीसरा, आधे-पूरे औसत के बजाय अन्य संकेतकों का प्रयास करना, जैसे कि ब्रिन बैंड, केडीजे, आदि, सहायक फ़िल्टरिंग प्रभाव को बढ़ाने के लिए; चौथा, विभिन्न प्रकार की विशेषताओं के अनुसार उपयुक्त व्यापारिक अंतराल निर्दिष्ट करना, जैसे कि 5 मिनट या 30 मिनट की रणनीति। इन अनुकूलन पहलों ने बाजार की स्थिति और विशेष प्रकार के आकार के आधार पर डीएमओ रणनीति को अनुकूलित करने में मदद की है, जिससे रणनीति की स्थिरता में सुधार हुआ है।

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2022-12-08 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
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/
// © kgynofomo

//@version=5
strategy(title="[Salavi] | Andy Super Pro Strategy [BTC|M15]",overlay = true, pyramiding = 1,initial_capital = 10000, default_qty_type = strategy.cash,default_qty_value = 10000)

//Doinchian Trend Ribbon
dlen = input.int(defval=30, minval=10)

dchannel(len) =>
    float hh = ta.highest(len)
    float ll = ta.lowest(len)

    int trend = 0
    trend := close > hh[1] ? 1 : close < ll[1] ? -1 : nz(trend[1])
    trend

dchannelalt(len, maintrend) =>
    float hh = ta.highest(len)
    float ll = ta.lowest(len)

    int trend = 0
    trend := close > hh[1] ? 1 : close < ll[1] ? -1 : nz(trend[1])
    maintrend == 1 ? trend == 1 ? #00FF00ff : #00FF009f : maintrend == -1 ? trend == -1 ? #FF0000ff : #FF00009f : na

maintrend = dchannel(dlen)
donchian_bull = maintrend==1
donchian_bear = maintrend==-1


//Hulls
src = input(hlc3, title='Source')
modeSwitch = input.string('Hma', title='Hull Variation', options=['Hma', 'Thma', 'Ehma'])
length = input(55, title='Length')
lengthMult = input(1.0, title='Length multiplier ')

useHtf = false
htf = '240'

switchColor = true
candleCol = false
visualSwitch = true
thicknesSwitch = 1
transpSwitch = 40

//FUNCTIONS
//HMA
HMA(_src, _length) =>
    ta.wma(2 * ta.wma(_src, _length / 2) - ta.wma(_src, _length), math.round(math.sqrt(_length)))
//EHMA    
EHMA(_src, _length) =>
    ta.ema(2 * ta.ema(_src, _length / 2) - ta.ema(_src, _length), math.round(math.sqrt(_length)))
//THMA    
THMA(_src, _length) =>
    ta.wma(ta.wma(_src, _length / 3) * 3 - ta.wma(_src, _length / 2) - ta.wma(_src, _length), _length)

//SWITCH
Mode(modeSwitch, src, len) =>
    modeSwitch == 'Hma' ? HMA(src, len) : modeSwitch == 'Ehma' ? EHMA(src, len) : modeSwitch == 'Thma' ? THMA(src, len / 2) : na

//OUT
_hull = Mode(modeSwitch, src, int(length * lengthMult))
HULL = useHtf ? request.security(syminfo.ticker, htf, _hull) : _hull
MHULL = HULL[0]
SHULL = HULL[2]

//COLOR
hullColor = switchColor ? HULL > HULL[2] ? #00ff00 : #ff0000 : #ff9800
hull_bull = HULL > HULL[2]
bull_start = hull_bull and hull_bull[1]==false
hull_bear = HULL < HULL[2]
bear_start = hull_bear and hull_bear[1]==false

barcolor(color=candleCol ? switchColor ? hullColor : na : na)

//halftrend
amplitude = input(title='Amplitude', defval=2)
channelDeviation = input(title='Channel Deviation', defval=2)
// showArrows = input(title='Show Arrows', defval=true)
// showChannels = input(title='Show Channels', defval=true)

var int trend = 0
var int nextTrend = 0
var float maxLowPrice = nz(low[1], low)
var float minHighPrice = nz(high[1], high)

var float up = 0.0
var float down = 0.0
float atrHigh = 0.0
float atrLow = 0.0
float arrowUp = na
float arrowDown = na

atr2 = ta.atr(100) / 2
dev = channelDeviation * atr2

highPrice = high[math.abs(ta.highestbars(amplitude))]
lowPrice = low[math.abs(ta.lowestbars(amplitude))]
highma = ta.sma(high, amplitude)
lowma = ta.sma(low, amplitude)

if nextTrend == 1
    maxLowPrice := math.max(lowPrice, maxLowPrice)

    if highma < maxLowPrice and close < nz(low[1], low)
        trend := 1
        nextTrend := 0
        minHighPrice := highPrice
        minHighPrice
else
    minHighPrice := math.min(highPrice, minHighPrice)

    if lowma > minHighPrice and close > nz(high[1], high)
        trend := 0
        nextTrend := 1
        maxLowPrice := lowPrice
        maxLowPrice

if trend == 0
    if not na(trend[1]) and trend[1] != 0
        up := na(down[1]) ? down : down[1]
        arrowUp := up - atr2
        arrowUp
    else
        up := na(up[1]) ? maxLowPrice : math.max(maxLowPrice, up[1])
        up
    atrHigh := up + dev
    atrLow := up - dev
    atrLow
else
    if not na(trend[1]) and trend[1] != 1
        down := na(up[1]) ? up : up[1]
        arrowDown := down + atr2
        arrowDown
    else
        down := na(down[1]) ? minHighPrice : math.min(minHighPrice, down[1])
        down
    atrHigh := down + dev
    atrLow := down - dev
    atrLow

ht = trend == 0 ? up : down

var color buyColor = color.blue
var color sellColor = color.red

htColor = trend == 0 ? buyColor : sellColor
// htPlot = plot(ht, title='HalfTrend', linewidth=2, color=htColor)

// atrHighPlot = plot(showChannels ? atrHigh : na, title='ATR High', style=plot.style_circles, color=color.new(sellColor, 0))
// atrLowPlot = plot(showChannels ? atrLow : na, title='ATR Low', style=plot.style_circles, color=color.new(buyColor, 0))

// fill(htPlot, atrHighPlot, title='ATR High Ribbon', color=color.new(sellColor, 90))
// fill(htPlot, atrLowPlot, title='ATR Low Ribbon', color=color.new(buyColor, 90))

HalfTrend_buySignal = not na(arrowUp) and trend == 0 and trend[1] == 1
HalfTrend_sellSignal = not na(arrowDown) and trend == 1 and trend[1] == 0

// plotshape(showArrows and buySignal ? atrLow : na, title='Arrow Up', style=shape.triangleup, location=location.absolute, size=size.tiny, color=color.new(buyColor, 0))
// plotshape(showArrows and sellSignal ? atrHigh : na, title='Arrow Down', style=shape.triangledown, location=location.absolute, size=size.tiny, color=color.new(sellColor, 0))




//ema
filter_ema = ta.ema(close,200)
ema_bull = close>filter_ema
ema_bear = close<filter_ema

atr_length = input.int(7)
atr = ta.atr(atr_length)
atr_rsi_length = input.int(50)
atr_rsi = ta.rsi(atr,atr_rsi_length)
atr_valid = atr_rsi>50

longCondition = bull_start and atr_valid
shortCondition = bear_start and atr_valid

Exit_long_condition = shortCondition
Exit_short_condition = longCondition

if longCondition
    strategy.entry("Andy Buy",strategy.long, limit=close,comment="Andy Buy Here")

if Exit_long_condition
    strategy.close("Andy Buy",comment="Andy Buy Out")
    // strategy.entry("Andy fandan Short",strategy.short, limit=close,comment="Andy 翻單 short Here")
    // strategy.close("Andy fandan Buy",comment="Andy short Out")


if shortCondition
    strategy.entry("Andy Short",strategy.short, limit=close,comment="Andy short Here")


// strategy.exit("STR","Long",stop=longstoploss)
if Exit_short_condition
    strategy.close("Andy Short",comment="Andy short Out")
    // strategy.entry("Andy fandan Buy",strategy.long, limit=close,comment="Andy 翻單 Buy Here")
    // strategy.close("Andy fandan Short",comment="Andy Buy Out")




inLongTrade = strategy.position_size > 0
inLongTradecolor = #58D68D
notInTrade = strategy.position_size == 0
inShortTrade = strategy.position_size < 0

// bgcolor(color = inLongTrade?color.rgb(76, 175, 79, 70):inShortTrade?color.rgb(255, 82, 82, 70):na)
plotshape(close!=0,location = location.bottom,color = inLongTrade?color.green:inShortTrade?color.red:na)


plotshape(longCondition, title='Buy', text='Andy Buy', style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), textcolor=color.new(color.white, 0), size=size.tiny)
plotshape(shortCondition, title='Sell', text='Andy Sell', style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)

Fi1 = plot(MHULL, title='MHULL', color=hullColor, linewidth=thicknesSwitch, transp=50)
Fi2 = plot(SHULL, title='SHULL', color=hullColor, linewidth=thicknesSwitch, transp=50)

fill(Fi1, Fi2, title='Band Filler', color=hullColor, transp=transpSwitch)