
प्रवृत्ति-अनुसरण खरीद और बिक्री रणनीति एक सरल प्रवृत्ति-अनुसरण ट्रेडिंग रणनीति है। इस रणनीति का मूल विचार यह है कि प्रवृत्ति की दिशा को चलती औसत के आधार पर निर्धारित किया जाए और प्रवृत्ति में उतार-चढ़ाव के दौरान खरीदा और बेचा जाए।
यह रणनीति सरल चलती औसत एसएमए का उपयोग करके प्रवृत्ति की दिशा का निर्धारण करती है। एक उछाल प्रवृत्ति में, जब K लाइन कम होती है, तो रणनीति पिछले K लाइन के उच्चतम बिंदु को तोड़ने पर अधिक करती है; एक गिरावट प्रवृत्ति में, जब K लाइन उच्च होती है, तो रणनीति पिछले K लाइन के निचले बिंदु को तोड़ने पर शून्य करती है।
इस रणनीति में Blanchflower के इष्टतम संकेतकों%K और%D का भी उपयोग किया जाता है। इस रणनीति में%K के%D पार करने पर विपरीत दिशा में व्यापार किया जाता है। इसके अलावा, यह रणनीति MACD और सिग्नल वक्र को फ़िल्टर शर्तों के रूप में उपयोग करती है और केवल तभी ट्रेडों को निष्पादित करती है जब MACD और सिग्नल ट्रेंड की दिशा से मेल खाते हैं।
इस रणनीति को केवल अधिक, केवल शून्य या एक साथ अधिक शून्य किया जा सकता है। प्रारंभ तिथि को मापने के लिए महीने और वर्ष की शुरुआत के रूप में सेट किया जा सकता है। सभी पैरामीटर जैसे कि चलती औसत अवधि, K अवधि, D अवधि, MACD पैरामीटर आदि को अनुकूलित किया जा सकता है।
इस रणनीति में मुख्य रूप से निम्नलिखित जोखिम हैं:
इस रणनीति को निम्नलिखित पहलुओं से अनुकूलित किया जा सकता हैः
ट्रेंड ट्रैकिंग खरीद और बिक्री रणनीति की समग्र सोच स्पष्ट और सरल है, यह ट्रेंड की दिशा को चलती औसत के माध्यम से निर्धारित करती है, और ट्रेडिंग अवसरों को ट्रेंड में बंद करने के लिए संकेतक फ़िल्टर का उपयोग करती है। यह रणनीति पैरामीटर अनुकूलन के माध्यम से अच्छी तरह से काम कर सकती है, लेकिन फिर भी इसे कम करने के लिए संयोजन कोड पैकेजिंग की आवश्यकता होती है। इसके अलावा, जोखिम को नियंत्रित करने के लिए उचित अनुकूलन भी महत्वपूर्ण है। कुल मिलाकर, यह रणनीति एक दिन के भीतर व्यापार रणनीति के रूप में अधिक व्यावहारिक है।
/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Higher High / Lower Low Strategy", overlay=true)
// Getting inputs
longOnly = input(true, title="Long or Short Only")
useMACD = input(true, title="Use MACD Filter")
useSignal = input(true, title="Use Signal Filter")
//Filter backtest month and year
startMonth = input(10, minval=1, maxval=12, title="Month")
startYear = input(2020, minval=2000, maxval=2100, title="Year")
//Filter funtion inputs
periodA = input(20, minval=1, title="Period SMA")
periodK = input(5, minval=1, title="Period %K")
fast_length = input(title="Period Fast", type=input.integer, defval=5)
slow_length = input(title="Period Slow", type=input.integer, defval=20)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 30)
//Calculations
smoothD = 3 //input(3, minval=1, title="Smooth %D")
smoothK = 2 //input(2, minval=1, title="Smooth %K")
ma50 = sma(close, periodA)
k = sma(stoch(close, high, low, periodK), smoothK) - 50
d = sma(k, smoothD)
macd = ema(close,fast_length) - ema(close,slow_length)
signal = ema(macd,signal_length)
hist = macd - signal
if (not na(k) and not na(d) and not na(macd) and not na(signal) and longOnly and month>=startMonth and year>=startYear)// if(k > k[1] and k[2] >= k[1] and (ma50 > ma50[1]) and (not useK or k[1] <= -threshold_k) and (not useMACD or macd > macd[1]) and (not useSignal or signal > signal[1]) and (not useHHLL or close >= high[1]) and (not useD or d <= -threshold_d))
if(high[2] >= high[1] and high > high[1] and (ma50 > ma50[1]) and (not useMACD or macd > macd[1]) and (not useSignal or signal > signal[1]))
strategy.order("HH_LE", strategy.long, when=strategy.position_size == 0, comment="HH_LE")
if (k < k[1])
strategy.order("HH_SX", strategy.short, when=strategy.position_size != 0, comment="HH_SX")
if (not na(k) and not na(d) and not na(macd) and not na(signal) and not longOnly and month>=startMonth and year>=startYear)
if(low[2] <= low[1] and low < low[1] and (ma50 < ma50[1]) and (not useMACD or macd < macd[1]) and (not useSignal or signal < signal[1]))
strategy.order("HH_SE", strategy.short, when=strategy.position_size == 0, comment="HH_SE")
if (k > k[1])
strategy.order("HH_LX", strategy.long, when=strategy.position_size != 0, comment="HH_LX")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)