यह रणनीति द्विआधारी यादृच्छिक गतिशीलता संकेतकों (एसएमआई और आरएसआई) का उपयोग करती है, जो कि मार्टिंगेल और शारीरिक फ़िल्टर के साथ ट्रेडिंग सिग्नल को छानने के लिए है, जिसका उद्देश्य मध्य-लघु रेखा प्रवृत्ति को पकड़ना और मूल्य उतार-चढ़ाव को ट्रैक करना है।
यह रणनीति दो यादृच्छिक गतिशीलता संकेतकों, एसएमआई और आरएसआई का उपयोग करके ओवरबोर्डिंग का निर्णय करती है। एसएमआई की गणना के-लाइन वास्तविक मूल्य अंतर और समापन मूल्य की चलती औसत द्वारा की जाती है, जिससे उलटा बिंदुओं की प्रभावी पहचान की जा सकती है। आरएसआई को ओवरबोर्डिंग की तुलना के माध्यम से ओवरबोर्डिंग की पहचान की जा सकती है। रणनीति एसएमआई से कम -50 और आरएसआई से कम 20 पर ओवरबोर्ड करती है; एसएमआई से अधिक 50 और आरएसआई से अधिक 80 पर ओवरबोर्ड करती है।
फ़िल्टर झूठे तोड़ने के लिए, रणनीति भी 10 चक्र शरीर के समानांतर के 1⁄3 के रूप में तोड़ने के लिए फ़िल्टर शर्तों का उपयोग करता है. जब इकाई समानांतर के 1⁄3 तोड़ता है, तो तोड़ने को प्रभावी माना जाता है।
इसके अलावा, रणनीति एक वैकल्पिक मार्टिंगेल रणनीति का उपयोग करती है, जो कि पहले के नुकसान को वापस लेने की उम्मीद में घाटे के कारोबार पर अनुपातिक बढ़त है।
बैकटेस्ट फ़ंक्शन प्रारंभ और समाप्ति समय दर्ज करके रणनीति प्रभावशीलता को मापता है।
यह रणनीति द्वि-यादृच्छिक संकेतकों और फ़िल्टरों का एक समग्र उपयोग करती है, जो टर्नओवर को प्रभावी ढंग से पहचानती है, मध्य-लघु-रेखा रुझानों को पकड़ती है, और कीमतों के उतार-चढ़ाव को ट्रैक करती है।
एसएमआई और आरएसआई मापदंडों का अनुकूलन करके, पीछा करने वाले उच्च और नीचे की संभावना को कम करें। मार्टिंगेल रणनीति का उचित उपयोग करें, बढ़त अनुपात और आवृत्ति को नियंत्रित करें। बाजार की स्थिति के आधार पर फ़िल्टर को चालू करने का विकल्प चुनें, फ़िल्टर वैध संकेतों की संभावना को कम करें।
इस रणनीति के व्यापक उपयोग दोहरे यादृच्छिक सूचक को पकड़ने के पलटाव बिंदु, सहायक फिल्टर और मार्टिंगेल के लिए व्यापार संकेतों के छानने और पीछा करने के लिए, प्रभावी रूप से पहचान कर सकते हैं और लघु रेखा प्रवृत्ति, कीमतों में उतार-चढ़ाव को ट्रैक करने के लिए, उच्च लाभ की तलाश में निवेशकों के लिए उपयुक्त है। का उपयोग करते समय सूचक के बाद के जोखिम पर ध्यान देना चाहिए और बाजार में उतार-चढ़ाव, पैरामीटर अनुकूलन और स्टॉप-लॉस के माध्यम से जोखिम को नियंत्रित कर सकते हैं।
/*backtest
start: 2022-09-30 00:00:00
end: 2023-10-06 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
// strategy(title = "CS Basic Scripts - Stochastic Special (Strategy)", shorttitle = "Stochastic Special", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
usesmi = input(true, defval = true, title = "Use SMI Strategy")
usersi = input(true, defval = true, title = "Use RSI Strategy")
usebod = input(true, defval = true, title = "Use Body-Filter")
a = input(5, "SMI Percent K Length")
b = input(3, "SMI Percent D Length")
limit = input(50, defval = 50, minval = 1, maxval = 100, title = "SMI Limit")
//Backtesting Input Range
fromyear = input(2017, defval = 2017, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//Fast RSI
fastup = rma(max(change(close), 0), 7)
fastdown = rma(-min(change(close), 0), 7)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
//Stochastic Momentum Index
ll = lowest (low, a)
hh = highest (high, a)
diff = hh - ll
rdiff = close - (hh+ll)/2
avgrel = ema(ema(rdiff,b),b)
avgdiff = ema(ema(diff,b),b)
SMI = avgdiff != 0 ? (avgrel/(avgdiff/2)*100) : 0
SMIsignal = ema(SMI,b)
//Lines
plot(SMI, color = blue, linewidth = 3, title = "Stochastic Momentum Index")
plot(SMIsignal, color = red, linewidth = 3, title = "SMI Signal Line")
plot(limit, color = black, title = "Over Bought")
plot(-1 * limit, color = black, title = "Over Sold")
plot(0, color = blue, title = "Zero Line")
//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 3 or usebod == false
//Signals
up1 = SMI < -1 * limit and close < open and body and usesmi
dn1 = SMI > limit and close > open and body and usesmi
up2 = fastrsi < 20 and close < open and body and usersi
dn2 = fastrsi > 80 and close > open and body and usersi
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body
//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]
if up1 or up2
if strategy.position_size < 0
strategy.close_all()
strategy.entry("long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if dn1 or dn2
if strategy.position_size > 0
strategy.close_all()
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
strategy.close_all()