ईएमए ट्रेंड ट्रैकिंग ऑसिलेशन को दबाने की रणनीति

लेखक:चाओझांग, दिनांकः 2023-12-12 15:52:37
टैगः

img

अवलोकन

यह रणनीति तीन संकेतकों के लाभों को जोड़ती हैः ईएमए, ट्रेंड ट्रैकिंग रणनीति (टीटीएस) और शाफ ट्रेंड साइकिल (एसटीसी) एक मजबूत अल्पकालिक ट्रेंड ट्रैकिंग रणनीति बनाने के लिए। विशेष रूप से, रणनीति यह तय करेगी कि क्या तीन संकेतकों के खरीद और बिक्री संकेत सुसंगत हैं। यदि वे सुसंगत हैं, तो ट्रेडिंग सिग्नल उत्पन्न होंगे; अन्यथा कोई ट्रेड नहीं किया जाएगा। यह कुछ झूठे संकेतों को फ़िल्टर करता है और रणनीति को अधिक विश्वसनीय बनाता है।

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

इस रणनीति के तीन मुख्य भाग हैंः ईएमए सूचक, टीटीएस ट्रेंड ट्रैकिंग रणनीति और एसटीसी सूचक।

सबसे पहले 200-पीरियड ईएमए घातीय चलती औसत रेखा की गणना की जाती है। यदि मूल्य इस ईएमए रेखा से नीचे है, तो ईएमए संकेतक एक बिक्री संकेत देता हैः -1; यदि मूल्य रेखा से ऊपर है, तो ईएमए संकेतक एक खरीद संकेत देता हैः 1.

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

अंत में, शाफ ट्रेंड साइकिल (STC) संकेतक की गणना की जाती है, जो मूल्य समेकन के परिवर्तन की प्रवृत्ति को दर्शाता है। यदि STC संकेतक बढ़ता है, तो यह एक खरीद संकेत उत्पन्न करता है 1; यदि STC संकेतक गिरता है, तो यह एक बिक्री संकेत उत्पन्न करता है -1.

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

एक बार ट्रेडिंग सिग्नल उत्पन्न करने का निर्णय लेने के बाद, लंबी या छोटी स्थिति खोली जाएगी और स्टॉप-प्रॉफिट/स्टॉप-लॉस बिंदु निर्धारित किए जाएंगे।

लाभ

  1. रणनीति में तीन प्रकार के विभिन्न प्रकार के संकेतकों का संयोजन किया गया है ताकि प्रभावी ढंग से बाजार की प्रवृत्ति की दिशा निर्धारित की जा सके।

  2. झूठे संकेतों को फ़िल्टर करने के लिए तीन संकेतकों से निर्णय संकेतों की स्थिरता का उपयोग करना अनावश्यक ट्रेडों को कम कर सकता है और रणनीति को अधिक विश्वसनीय बना सकता है।

  3. उचित स्टॉप-प्रॉफिट/स्टॉप-लॉस बिंदु निर्धारित करने से मुनाफे को लॉक किया जा सकता है और घाटे का विस्तार होने से रोका जा सकता है।

  4. अनुकूलित मापदंड अधिकांश शेयरों और विदेशी मुद्रा उत्पादों के लिए उपयुक्त हैं।

  5. सरल और समझने में आसान व्यापारिक तर्क।

जोखिम

  1. सूचक निर्णयों के बीच असंगतता व्यापार के अवसरों के नुकसान का कारण बन सकती है। निर्णय के नियमों को और अनुकूलित किया जा सकता है।

  2. एसटीसी संकेतक मापदंडों के प्रति संवेदनशील है। विभिन्न उत्पादों को मापदंडों को समायोजित करने की आवश्यकता होती है।

  3. डाउनट्रेंड में, स्टॉप लॉस में घुसपैठ हो सकती है, जिससे भारी नुकसान होता है। अनुकूलन स्टॉप लॉस पर विचार किया जा सकता है।

  4. साइडवेज समेकन को प्रभावी ढंग से पहचाना नहीं जा सकता है, जिससे जाल स्थितियां बनती हैं।

सुधार

  1. अधिक संकेतकों के संयोजनों का परीक्षण करें ताकि अधिक सख्त निर्णय नियम मिल सकें, उदाहरण के लिए आरएसआई संकेतक जोड़ें।

  2. विभिन्न उत्पादों में बेहतर अनुकूलन के लिए एसटीसी मापदंडों का अनुकूलन करें। अनुकूलन मापदंड अनुकूलन मॉड्यूल जोड़ें।

  3. गतिशील रूप से स्टॉप लॉस बिंदुओं को अनुकूलित करने के लिए अनुकूलन स्टॉप लॉस मॉड्यूल को बढ़ाएं।

  4. पक्षीय सीमाओं की पहचान करने और जाल से बचने के लिए स्थिति बंद करने के मॉड्यूल को बढ़ाएं।

  5. उच्च आवृत्ति व्यापार के लिए एल्गोरिदम का अनुकूलन करना, विलंबता को कम करना और आदेश पूर्ति दरों में सुधार करना।

निष्कर्ष

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


/*backtest
start: 2022-12-05 00:00:00
end: 2023-04-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/
// © ajahanbin1374

//@version=5
strategy(title = "EMA + TTS + STC", shorttitle = "EMA + TTS + STC", overlay = true, calc_on_order_fills=false, calc_on_every_tick = false, initial_capital = 100, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, commission_value = 0.01)

////////////////////////////////////////////////////////////
// Strategy entry
////////////////////////////////////////////////////////////
profit = input.float(defval = 0.1, minval = 0.0, title="Profit %", step=0.01, group = "Strategy") * 0.01

////////////////////////////////////////////////////////////
// Emponential Moving Average
////////////////////////////////////////////////////////////
ema = ta.ema(close, 200)
posEma = close < ema ? -1 : 1

////////////////////////////////////////////////////////////
// Trend Trader Strategy
////////////////////////////////////////////////////////////
Length = input.int(21, minval=1, group="Trend Trader Strategy")
Multiplier = input.float(3, minval=0.000001, group="Trend Trader Strategy")
avgTR = ta.wma(ta.atr(1), Length)
highestC = ta.highest(Length)
lowestC = ta.lowest(Length)
hiLimit = highestC[1] - avgTR[1] * Multiplier
loLimit = lowestC[1] + avgTR[1] * Multiplier
ret = 0.0
posTts = 0.0
ret:= close > hiLimit and close > loLimit ? hiLimit :
         close < loLimit and close < hiLimit ? loLimit : nz(ret[1], close)
posTts:=  close > ret ? 1 :close < ret ? -1 : nz(posTts[1], 0)


////////////////////////////////////////////////////////////
// Schaff Trend Cycle (STC)
////////////////////////////////////////////////////////////
EEEEEE = input.int(12, 'Length', group ="Schaff Trend Cycle")
BBBB = input.int(26, 'FastLength', group ="Schaff Trend Cycle")
BBBBB = input.int(50, 'SlowLength', group ="Schaff Trend Cycle")

AAAA(BBB, BBBB, BBBBB) =>
    fastMA = ta.ema(BBB, BBBB)
    slowMA = ta.ema(BBB, BBBBB)
    AAAA = fastMA - slowMA
    AAAA

AAAAA(EEEEEE, BBBB, BBBBB) =>
    AAA = input.float(0.5, group ="Schaff Trend Cycle")
    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)
mColor = mAAAAA > mAAAAA[1] ? color.new(color.green, 20) : color.new(color.red, 20)
posStc = mAAAAA > mAAAAA[1] ? 1 : -1

////////////////////////////////////////////////////////////
// Strategy entry
////////////////////////////////////////////////////////////
pos = posEma == 1 and posTts == 1 and posStc == 1 ? 1 : posEma == -1 and posTts == -1 and posStc == -1 ? -1 : 0

currentPostition = strategy.position_size > 0 ? 1 : strategy.position_size < 0 ? -1 : 0
noOpenPosition = strategy.position_size == 0

signal = pos != pos[1] and pos == 1 and noOpenPosition ? 1 : pos != pos[1] and pos == -1 and noOpenPosition ? -1 : 0

stopPriceForLong = math.min(close * (1 - profit), low[1] * 0.9998, low[2] * 0.9998)
limitPriceForLong = close + (close - stopPriceForLong)
stopPriceForShort = math.max(close * (1 + profit), high[1] * 1.0002, high[2] * 1.0002)
limitPriceForShort = close - (stopPriceForShort - close)

if signal == 1
    strategy.entry(id="L", direction=strategy.long)
    strategy.exit(id='EL', from_entry='L', limit=limitPriceForLong, stop=stopPriceForLong)
if signal == -1
    strategy.entry(id="S", direction=strategy.short)
    strategy.exit(id='ES', from_entry='S', limit=limitPriceForShort, stop=stopPriceForShort)

////////////////////////////////////////////////////////////
// Plots - Debuger
////////////////////////////////////////////////////////////
plotchar(signal, title='singal', char = '')
plotchar(posEma, title='posEma', char = '')
plotchar(posTts, title='posTts', char = '')
plotchar(pos, title='pos', char = '')
plotchar(currentPostition, title = 'currentPostition', char='')
plotchar(stopPriceForLong, title = "stopPriceForLong", char ='')
plotchar(limitPriceForLong, title = 'limitPriceForLong', char='')
plotchar(stopPriceForShort, title = "stopPriceForShort", char ='')
plotchar(limitPriceForShort, title = 'limitPriceForShort', char='')

////////////////////////////////////////////////////////////
// Plots
////////////////////////////////////////////////////////////
plot(ret, color=color.new(color.black, 0), title='Trend Trader Strategy')
plotchar(mAAAAA, color=mColor, title='STC', location = location.bottom, char='-', size=size.normal)
plot(series = ema, title = "ema")


अधिक