एसटीईएम और एमएटीसीएस संयुक्त गति व्यापार रणनीति

लेखक:चाओझांग, दिनांक: 2023-09-15 16:22:48
टैगः

इस रणनीति को STEM और MATCS Combined Momentum Trading Strategy कहा जाता है। यह ट्रेडिंग सिग्नल उत्पन्न करने के लिए सुपरट्रेंड संकेतक को MACD संकेतक के साथ जोड़ती है।

रणनीति कैसे काम करती हैः

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

व्यापार के विशिष्ट नियम:

  1. जब सुपरट्रेंड नीचे से ऊपर की ओर फ्लिप करता है, और एमएसीडी फास्ट एमए मध्यम एमए से ऊपर पार करता है, तो लंबा हो जाता है।
  2. जब सुपरट्रेंड ऊपर से नीचे की ओर पलटता है, और एमएसीडी तेजी से एमए मध्यम एमए से नीचे पार करता है, तो शॉर्ट करें।
  3. बाहर निकलने के नियम: स्टॉप लॉस या लाभ लें (वैकल्पिक) ।

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

  1. कई संकेतकों का संयोजन संकेत की सटीकता में सुधार करता है।
  2. गतिशील स्टॉप लॉस व्यक्तिगत बड़े नुकसान को सीमित कर सकता है।
  3. दोनों प्रवृत्ति का पालन और औसत प्रतिगमन क्षमता है।

इस रणनीति के जोखिमः

  1. गलत सुपरट्रेंड और एमएसीडी पैरामीटर खराब संकेत उत्पन्न कर सकते हैं।
  2. स्टॉप लॉस बहुत करीब होने से अक्सर स्टॉप आउट हो सकते हैं।
  3. शुल्क और फिसलन लाभ को प्रभावित करते हैं।

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


/*backtest
start: 2023-09-07 00:00:00
end: 2023-09-14 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/
// © IncomePipelineGenerator
//@version=4
// strategy("STRAT_STEM_MATCS_BTC", overlay=true, pyramiding = 0, default_qty_value = 20, slippage = 5)


ST_EMA_PERIOD = input(1, minval=1)
ST_EMA = ema(close, ST_EMA_PERIOD)

LENGTH = input(title="ATR_PERIOD", type=input.integer, defval=95)
ATR_TUNE = input(title="ATR_TUNE", type=input.float, step=0.1, defval=2.1)
showLabels = input(title="Show_Buy/Sell_Labels ?", type=input.bool, defval=true)
highlightState = input(title="Highlight_State ?", type=input.bool, defval=true)

ATR = ATR_TUNE * atr(LENGTH)

longStop = ST_EMA - ATR
longStopPrev = nz(longStop[1], longStop)
longStop := (close[1]) > longStopPrev ? max(longStop, longStopPrev) : longStop

shortStop = ST_EMA + ATR
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := (close[1]) < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop

dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and (close) > shortStopPrev ? 1 : dir == 1 and (close) < longStopPrev ? -1 : dir


fastLength = input(3, minval=1), medLength=input(9, minval=1), slowLength=input(12, minval=1), signalLength=input(16,minval=1)
fastMA = ema(close, fastLength), medMA = ema(close, medLength), slowMA = ema(close, slowLength)

macd = fastMA - slowMA
fmacd = fastMA - medMA
smacd = slowMA - medMA

signal = ema(macd, signalLength)
fsignal = ema(fmacd, signalLength)
ssignal = ema(smacd, signalLength)


SetStopLossShort = 0.0
SetStopLossShort := if(strategy.position_size < 0)
    StopLossShort = shortStop
    min(StopLossShort,SetStopLossShort[1])

SetStopLossLong = 0.0
SetStopLossLong := if(strategy.position_size > 0)
    StopLossLong = longStop
    max(StopLossLong,SetStopLossLong[1])


ATR_CrossOver_Period = input(5, type=input.integer, minval=1, maxval=2000)
ATR_SIGNAL_FINE_TUNE = input(0.962, type=input.float)  
ATR_CS = atr(ATR_CrossOver_Period)*ATR_SIGNAL_FINE_TUNE

StopLoss_Initial_Short = input(0.0, type=input.float) 
StopLoss_Initial_Long = input(0.0, type=input.float) 

StopLoss_Long_Adjust = input(0.0, type=input.float) 
StopLoss_Short_Adjust = input(0.0, type=input.float) 

VOLUME_CHECK = input(200)

//Custom Time Interval
fromMinute = input(defval = 0, title = "From Minute", minval = 0, maxval = 60)
fromHour = input(defval = 0, title = "From Hour", minval = 0, maxval = 24)
fromDay = input(defval = 1, title = "From Day", minval = 1)
fromMonth = input(defval = 1, title = "From Month", minval = 1)
fromYear = input(defval = 2019, title = "From Year", minval = 1900)
tillMinute = input(defval = 0, title = "Till Minute", minval = 0, maxval = 60)
tillHour = input(defval = 0, title = "Till Hour", minval = 0, maxval = 24)
tillDay = input(defval = 1, title = "Till Day", minval = 1)
tillMonth = input(defval = 1, title = "Till Month", minval = 1)
tillYear = input(defval = 2020, title = "Till Year", minval = 1900)
timestampStart = timestamp(fromYear,fromMonth,fromDay,fromHour,fromMinute)
timestampEnd = timestamp(tillYear,tillMonth,tillDay,tillHour,tillMinute)


//Custom Buy Signal Code --  This is where you design your own buy and sell signals. You now have millions of possibilites with the use of simple if/and/or statements.
if (  dir==1 and dir[1]==-1  and volume > VOLUME_CHECK and ((fsignal[1] -fsignal) <= 0) and  cross(fmacd, smacd) )
    strategy.exit("SELL")
    strategy.entry("BUY", strategy.long)
    strategy.exit("BUY_STOP","BUY", stop = close - StopLoss_Initial_Long)

//Custom Sell Signal Code
if  ( dir == -1 and dir[1] == 1 and dir[2] == 1 and dir[3] == 1 and dir[4] == 1 and  cross(fmacd, smacd) )
    strategy.exit( "BUY")
    strategy.entry("SELL", strategy.short)
    strategy.exit("SELL_STOP","SELL", stop = close + StopLoss_Initial_Short)

//Slight adjustments to ST for fine tuning
if (strategy.opentrades > 0 )
    strategy.exit("BUY_TRAIL_STOP","BUY", stop = longStop - StopLoss_Long_Adjust)
    strategy.exit("SELL_TRAIL_STOP","SELL", stop = shortStop + StopLoss_Short_Adjust)

अधिक