एसटीसी एमए एटीआर एकीकृत ट्रेंड ट्रेडिंग रणनीति

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

img

अवलोकन

यह रणनीति प्रवृत्तियों का आकलन करने और अपेक्षाकृत स्थिर प्रवृत्ति ट्रैकिंग ट्रेडिंग को लागू करने के लिए तकनीकी संकेतकों एसटीसी, मूविंग एवरेज एमए और औसत सच्ची रेंज एटीआर को जोड़ती है।

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

  1. एसटीसी संकेतक प्रवृत्ति उलट का न्याय करता है। यह धीमी रेखा को घटाकर तेजी से रेखा का उपयोग करता है, फिर द्वितीयक चिकनाई को संसाधित करता है, लगातार प्रवृत्ति संकेत बनाते हैं। खरीद संकेत तब आता है जब संकेतक 0 अक्ष के ऊपर से गुजरता है, और बिक्री संकेत 0 अक्ष के नीचे होता है।

  2. मूविंग एवरेज एमए ट्रेंड की दिशा का आकलन करता है। जब स्टॉक की कीमत एमए से ऊपर जाती है, तो यह एक अपट्रेंड का संकेत देता है, जो एक लंबी स्थिति रखने का संकेत देता है। जब कीमत एमए से नीचे जाती है, तो यह एक डाउनट्रेंड का संकेत देती है, जो एक छोटी स्थिति रखने का संकेत देती है।

  3. एटीआर संकेतक स्टॉप लॉस और ले लाभ सेट करता है। एटीआर गतिशील रूप से स्टॉप लॉस को समायोजित कर सकता है और बाजार की अस्थिरता के आधार पर लाभ अंक ले सकता है। और एटीआर ट्रेडिंग दिशा के लिए एक संकेत के रूप में कार्य करता है, अपट्रेंड में बढ़ता है और डाउनट्रेंड में गिरता है।

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

लाभ विश्लेषण

  1. यह रणनीति ट्रेडिंग संकेतों की सटीकता में सुधार करते हुए रुझानों और उलट बिंदुओं का आकलन करने के लिए कई संकेतकों को जोड़ती है।

  2. एसटीसी रिवर्स सिग्नल को कैप्चर कर सकता है और रुझानों में फंसने से बच सकता है। एमए मुख्य रुझान का पालन सुनिश्चित करने के लिए अनिश्चित रिवर्स सिग्नल को फ़िल्टर करता है।

  3. एटीआर गतिशील स्टॉप लॉस सेट करता है और बाजार की अस्थिरता के आधार पर लाभ लेता है, जिससे भारी नुकसान से बचा जाता है। और एटीआर रुझान निर्णय के लिए सहायक संकेत के रूप में कार्य करता है।

  4. कई संकेतकों के संयोजन से प्रवृत्ति को ट्रैक करने की मजबूत क्षमता बनती है। ऐतिहासिक बैकटेस्ट अपेक्षाकृत स्थिर लाभप्रदता दिखाते हैं।

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

  1. एसटीसी में समय की विलंबता होती है, जो मूल्य उलटने के लिए इष्टतम समय को याद कर सकती है।

  2. जब कीमतों में भारी उतार-चढ़ाव होता है तो एमए में देरी होती है, जिससे गलत संकेत मिल सकते हैं।

  3. एटीआर स्टॉप लॉस सेकंड के भीतर मारा जा सकता है। एटीआर गुणक ढीला किया जाना चाहिए, या अस्थायी रूप से अक्षम बड़े रुझानों के दौरान।

  4. अधिक संकेतकों का अर्थ है स्टॉप लॉस को हिट करने की अधिक संभावनाएं। अनावश्यक स्टॉप लॉस से बचने के लिए मापदंडों को समायोजित किया जाना चाहिए।

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

  1. रिवर्स के लिए तेजी से प्रतिक्रिया संयोजन खोजने के लिए एसटीसी मापदंडों को समायोजित करें।

  2. बेहतर ट्रेंड ट्रैकिंग के लिए एमए अवधि पैरामीटर को अनुकूलित करें।

  3. विभिन्न एटीआर गुणकों के परीक्षण प्रभाव।

  4. बेहतर मिलान के लिए एसटीसी को अन्य संकेतकों से बदलने का प्रयास करें।

  5. मल्टी-पैरामीटर ऑटो अनुकूलन के लिए मशीन लर्निंग एल्गोरिदम पेश करें।

  6. बड़े चक्र के रुझानों पर विचार करें और विभिन्न चरणों को अलग करें।

सारांश

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


/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 4h
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/
// © Romedius

//@version=5
strategy("My Strategy", overlay=true, margin_long=100, margin_short=100)

// STC
EEEEEE=input(12,"Length",group="STC")
BBBB=input(26,"FastLength",group="STC")
BBBBB=input(50,"SlowLength",group="STC")

AAAA(BBB, BBBB, BBBBB) =>
    fastMA = ta.ema(BBB, BBBB)
    slowMA = ta.ema(BBB, BBBBB)
    AAAA = fastMA - slowMA
    AAAA
    
AAAAA(EEEEEE, BBBB, BBBBB) => 
    //AAA=input(0.5)
    var AAA = 0.5
    var CCCCC = 0.0
    var DDD = 0.0
    var DDDDDD = 0.0
    var EEEEE = 0.0
    BBBBBB = AAAA(close,BBBB,BBBBB)     
    CCC = ta.lowest(BBBBBB, EEEEEE)
    CCCC = ta.highest(BBBBBB, EEEEEE) - CCC    
    CCCCC := (CCCC > 0 ? ((BBBBBB - CCC) / CCCC) * 100 : nz(CCCCC[1])) 
    DDD := (na(DDD[1]) ? CCCCC : DDD[1] + (AAA * (CCCCC - DDD[1]))) 
    DDDD = ta.lowest(DDD, EEEEEE) 
    DDDDD = ta.highest(DDD, EEEEEE) - DDDD     
    DDDDDD := (DDDDD > 0 ? ((DDD - DDDD) / DDDDD) * 100 : nz(DDDDDD[1])) 
    EEEEE := (na(EEEEE[1]) ? DDDDDD : EEEEE[1] + (AAA * (DDDDDD - EEEEE[1])))
    EEEEE

mAAAAA = AAAAA(EEEEEE,BBBB,BBBBB)
stc = mAAAAA > mAAAAA[1] ? true : false
stc_sig = stc == true and stc[1] == false ? 1 : stc == false and stc[1] == true ? -1 : 0
stc_long = stc_sig == 1
stc_short = stc_sig == -1
// STC end

// ATR stops
nATRPeriod = input(5,group="ATR Stops")
nATRMultip = input(3.5,group="ATR Stops")

xATR = ta.atr(nATRPeriod)
nLoss = nATRMultip * xATR

xATRTrailingStop = 0.0
xATRTrailingStop := close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), close - nLoss) : close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), close + nLoss) : close > nz(xATRTrailingStop[1], 0) ? close - nLoss : close + nLoss

pos = 0
pos := close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0) ? 1 : close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0)

atr_sig = pos == -1 ? false : true
// ATR stops end

// ma
ma_len = input(200, title="MA Length", group="Moving Average")
ma = ta.sma(close, 200)
ma_sig = close < ma ? false : true
// ma end

// strategy entries
tp_mult = input(2, title="Take Profit ATR Multiplier", group="Strategy")
sl_mult = input(1, title="Stop Loss ATR Multiplier", group="Strategy")
early_stop = input(true, title="Close position when ATR changes color")

atr_stop = if close < xATRTrailingStop
    close - (close - xATRTrailingStop) * sl_mult
else
    close + (xATRTrailingStop - close) * sl_mult

longCondition = atr_sig == true and stc_sig == 1 and ma_sig == true
shortCondition = atr_sig == false and stc_sig == -1 and ma_sig == false

if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", "Long", limit=close + xATR * tp_mult, stop=atr_stop)
else if atr_sig == false and early_stop
    strategy.close("Long")

if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", "Short", limit=close - xATR * tp_mult, stop=atr_stop)
else if atr_sig == true and early_stop
    strategy.close("Short")
    
// plot stuff
atr_color = pos == -1 ? color.red: pos == 1 ? color.green : color.blue
plot(atr_stop, title="ATR Stop", color=atr_color)

ma_color = ma_sig ? color.green : color.red
plot(ma, title="Moving Average", color=ma_color)

stc_color = stc_long ? color.green : color.red
plotshape(stc_long, style=shape.triangleup, color=stc_color, title="STC Long Signal", size=size.tiny)
plotshape(stc_short, style=shape.triangledown, color=stc_color, title="STC Short Signal", size=size.tiny)
// plot stuff end

अधिक