
Il s’agit d’une stratégie de trading personnalisée qui combine l’indice de dynamique et le filtrage des entités de la ligne K. Il utilise l’indice de dynamique aléatoire, le RSI rapide et le filtrage des entités de la ligne K.
Cette stratégie utilise les trois indicateurs suivants pour évaluer les signaux de trading:
L’indice de dynamique aléatoire (SMI): il combine l’intervalle entre les entités de la ligne K et la position relative du prix de clôture pour déterminer si la dynamique des prix est forte ou faible. Il génère un signal d’achat lorsque vous traversez la ligne de délimitation au-dessus du SMI et un signal de vente lorsque vous traversez la ligne de délimitation en dessous.
RSI rapide ((ligne de 7): il juge la situation de survente des prix. Le RSI inférieur à 20 génère un signal d’achat pour les survente et supérieur à 80 génère un signal de vente pour les survente.
Filtre d’entité K-Line: Calcule la taille moyenne d’entité K-Line sur une période de 10 jours et est valide lorsque la valeur actuelle de l’entité K-Line dépasse le tiers de cette moyenne, évitant ainsi le signal d’invalidation.
Cette stratégie juge d’abord le signal de SMI et RSI, et si celui-ci répond aux exigences de signal de l’un des indicateurs, il est ensuite déterminé si le signal est valide en combinaison avec le filtre d’entité de ligne K. Si tel est le cas, un signal de transaction est généré.
Cette stratégie présente les avantages suivants:
La combinaison de plusieurs indicateurs permet de juger avec plus de précision et de fiabilité.
Ajout d’un filtre d’entité de ligne K pour éviter les signaux invalides.
Les signaux sont plus faciles à saisir lorsque la tendance est inversée, en combinaison avec les jugements de surachat et de survente.
Plus il y a de transactions dans les deux sens, plus il y a d’opportunités de profit.
La position partielle est utilisée pour éviter les pertes excessives en une seule transaction.
Cette stratégie présente aussi des risques:
L’indicateur peut générer de faux signaux qui entraînent des pertes. Les paramètres peuvent être optimisés pour réduire les faux signaux.
Certaines positions de trading ne peuvent pas tirer pleinement parti des opportunités de tendance dans chaque direction. Des gains plus élevés peuvent être obtenus en augmentant les positions de trading.
Le SMI, en tant qu’indicateur principal, est sensible aux paramètres de réglage. Un mauvais réglage peut entraîner une perte d’opportunités de négociation ou une augmentation de faux signaux.
Les transactions sont multiples, bidirectionnelles, fréquentes et coûteuses.
Cette stratégie peut être optimisée dans les directions suivantes:
Optimiser les paramètres du SMI et du RSI pour trouver la meilleure combinaison de paramètres.
L’augmentation de la position et le mécanisme de gestion de la position permettent d’obtenir des rendements plus élevés dans la tendance.
Augmenter les stratégies de stop loss et réduire le risque de pertes ponctuelles
Le nombre d’indicateurs utilisés pour évaluer la fiabilité des signaux a été réduit.
L’utilisation de contrats efficaces pour réduire les coûts de transaction.
Cette stratégie utilise les trois indicateurs techniques de filtrage des entités SMI, RSI rapide et K-Line pour réaliser une stratégie de trading personnalisée axée sur la dynamique, tout en tenant compte des avantages de la survente et de la survente. Elle présente des avantages tels que la précision du jugement, l’identification de signaux efficaces, la combinaison de survente et de survente et de survente. Il existe également une certaine sensibilité aux paramètres, le risque de ne pas tirer pleinement parti de la tendance, la fréquence des opérations.
/*backtest
start: 2023-10-23 00:00:00
end: 2023-11-22 00:00:00
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy(title = "Noro's Stochastic Strategy v1.2", shorttitle = "Stochastic str 1.2", 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")
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()