
इस रणनीति में ईएमए, ट्रेंड ट्रैकिंग रणनीति टीटीएस और शफ्ट ट्रेंडिंग चक्र एसटीसी के तीनों संकेतकों के लाभों का उपयोग किया गया है, जिससे एक मजबूत शॉर्ट-लाइन ट्रेंड ट्रैकिंग रणनीति तैयार की गई है। विशेष रूप से, रणनीति एक साथ यह निर्धारित करेगी कि क्या तीनों संकेतकों के पॉलीहाउस सिग्नल एक समान हैं, यदि वे एक समान हैं, तो एक व्यापार संकेत उत्पन्न होता है; यदि वे एक समान नहीं हैं, तो कोई खरीद-बिक्री नहीं की जाती है। यह कुछ झूठे संकेतों को फ़िल्टर कर सकता है, जिससे रणनीति अधिक विश्वसनीय हो जाती है।
इस रणनीति में मुख्य रूप से तीन भाग होते हैंः ईएमए चिकनाई सूचक, टीटीएस रुझान ट्रैकिंग रणनीति और एसटीसी शफ्ट रुझान चक्र सूचक।
सबसे पहले, ईएमए सूचकांक की 200 चक्र की चलती औसत की गणना करें, यह निर्धारित करने के लिए कि क्या कीमतें ईएमए लाइन से नीचे या ऊपर हैं, ईएमए सूचकांक एक खाली सिग्नल देता है यदि कीमतें लाइन से नीचे हैं; -1; यदि कीमतें लाइन से ऊपर हैं, तो ईएमए सूचकांक एक मल्टीहेड सिग्नल देता हैः
दूसरा, टीटीएस ट्रेंड ट्रैकिंग रणनीति के लिए प्रासंगिक पैरामीटर की गणना करें, और कीमत के आधार पर ट्रेंड की दिशा का आकलन करें। यदि कीमत ट्रैक तोड़ती है, तो एक मल्टीहेड सिग्नल उत्पन्न करें; यदि कीमत ट्रैक तोड़ती है, तो एक खाली सिग्नल उत्पन्न करें।
अंत में, शुफ्टर ट्रेंडिंग चक्र एसटीसी सूचक की गणना करें, जो मूल्य केंद्र के परिवर्तन की प्रवृत्ति को दर्शाता है। यदि एसटीसी सूचक बढ़ता है, तो एक मल्टीहेड सिग्नल उत्पन्न होता है; यदि एसटीसी सूचक गिरता है, तो एक खाली हेड सिग्नल उत्पन्न होता है।
तीन सूचकांकों के निर्णय संकेत प्राप्त करने के बाद, रणनीति यह तय करती है कि वे संगत हैं या नहीं। केवल जब तीन सूचकांकों के निर्णय संकेत सभी संगत होते हैं, तो एक वास्तविक व्यापार संकेत उत्पन्न होता है। यह कुछ झूठे संकेतों को प्रभावी ढंग से फ़िल्टर कर सकता है और रणनीति को अधिक विश्वसनीय बना सकता है।
यदि ट्रेडिंग सिग्नल उत्पन्न करने के लिए निर्धारित किया जाता है, तो एक अधिक या कम करने का आदेश दिया जाता है, और स्टॉप-स्टॉप-लॉस सेट किया जाता है।
इस रणनीति में तीन अलग-अलग प्रकार के सूचकांकों का उपयोग किया गया है, जो बाजार के रुझानों की दिशा को प्रभावी ढंग से निर्धारित करते हैं।
तीन सूचक निर्णय संकेतों की एकरूपता का उपयोग करके, झूठे संकेतों को फ़िल्टर करने से अनावश्यक लेनदेन को कम किया जा सकता है, जिससे रणनीति अधिक विश्वसनीय हो सकती है।
एक उचित स्टॉप-स्टॉप-लॉस सेट करें, जो मुनाफे को लॉक कर सकता है और नुकसान को बढ़ाने से रोक सकता है।
चयनित मापदंडों को अनुकूलित किया गया है ताकि वे अधिकांश स्टॉक और विदेशी मुद्रा किस्मों के लिए उपयुक्त हो सकें।
लेनदेन का तर्क स्पष्ट और संक्षिप्त है, इसे समझना और संशोधित करना आसान है।
तीन सूचकांकों के बीच असंगत निर्णय, dimers के साथ, व्यापार के अवसरों को याद करना आसान है। निर्णय नियम को अनुकूलित करने पर विचार किया जा सकता है।
एसटीसी संकेतक पैरामीटर के लिए अधिक संवेदनशील हैं, विभिन्न किस्मों को पैरामीटर को समायोजित करने की आवश्यकता होती है।
मंदी की स्थिति में, स्टॉप लॉस को तोड़ दिया जा सकता है, जिससे बड़े नुकसान हो सकते हैं। वास्तविक समय में स्टॉप लॉस को अनुकूलित करने पर विचार किया जा सकता है।
इस प्रकार, यदि कोई व्यक्ति किसी व्यक्ति को एक ही स्थान पर रखता है, तो उसे एक ही स्थान पर रखा जाता है, और यदि कोई व्यक्ति किसी व्यक्ति को एक ही स्थान पर रखता है, तो उसे जेल में डाल दिया जाता है।
अधिक संकेतकों के संयोजन का परीक्षण कर सकते हैं, अधिक मजबूत निर्णय नियम की तलाश कर सकते हैं। उदाहरण के लिए, आरएसआई संकेतकों को शामिल करना।
एसटीसी सूचक के सूचक मापदंडों को अनुकूलित करें ताकि वे विभिन्न किस्मों के लिए अधिक उपयुक्त हों। अनुकूलित मापदंडों के अनुकूलन मॉड्यूल को जोड़ा गया है।
एक अनुकूली स्टॉप लॉस मॉड्यूल जोड़ा गया है, जो वास्तविक समय में स्टॉप लॉस को अनुकूलित करने के लिए अनुकूलित किया जा सकता है।
समतल मॉड्यूल को बढ़ाएं, यह निर्धारित करने के लिए कि क्या यह क्षैतिज संरेखण में प्रवेश कर रहा है, और जेल से बचें।
उच्च आवृत्ति लेनदेन के लिए एल्गोरिदम का अनुकूलन, सिस्टम विलंबता को कम करना, और सफलता की दर को बढ़ाना।
इस रणनीति में ईएमए, टीटीएस और एसटीसी के तीन संकेतक शामिल हैं, जो बाजार की प्रवृत्ति की दिशा को निर्धारित करते हैं, और निर्णय नियम को तीनों के अनुरूप होने पर व्यापार संकेत उत्पन्न करते हैं, ताकि झूठे संकेतों को प्रभावी ढंग से फ़िल्टर किया जा सके। रणनीति में अनुकूलन के लिए बहुत जगह है, और अधिक संकेतक संयोजन का परीक्षण करके, अनुकूलन एल्गोरिदम जोड़ने, उच्च आवृत्ति व्यापार मॉड्यूल का अनुकूलन करने आदि के माध्यम से रणनीति को और अधिक मजबूत किया जा सकता है। प्रवृत्ति को ट्रैक करने की प्रक्रिया में रणनीति के प्रदर्शन को और अधिक मजबूत करना। सरल औसत रेखा जैसे पारंपरिक रणनीतियों की तुलना में, यह रणनीति बाजार को अधिक बुद्धिमान रूप से निर्धारित कर सकती है, जबकि प्रवृत्ति को पकड़ने के लिए और जितना संभव हो सके से बचने के लिए।
/*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")