Stratégie de trading personnalisée

Auteur:ChaoZhang est là., Date: 2023-11-23 15:18:27 Je vous en prie.
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie de trading personnalisée qui combine des indicateurs de dynamique et le filtrage des entités de chandeliers. Il utilise de manière complète trois indicateurs techniques - indice de dynamique stochastique, RSI rapide et filtrage des entités de chandeliers pour mettre en œuvre une stratégie basée sur la percée de l'élan tout en tenant compte des conditions de surachat et de survente.

Logique de négociation

La stratégie utilise les trois indicateurs suivants pour le jugement des signaux de négociation:

  1. Indice de dynamique stochastique (SMI): Il combine l'espacement entre les entités de chandelier et la position relative du prix de clôture pour juger de la force ou de la faiblesse de la dynamique des prix. Il génère un signal d'achat lorsque SMI traverse au-dessus de la ligne limite et un signal de vente lorsqu'il traverse en dessous de la ligne limite.

  2. Rapide RSI (ligne de 7 jours): Il juge les conditions de surachat et de survente des prix.

  3. Filtre de l'entité du chandelier: Calcule la taille moyenne de l'entité du chandelier au cours des 10 derniers jours.

La stratégie juge d'abord les signaux du SMI et du RSI. Si l'une ou l'autre des exigences du signal d'indicateur est remplie, il faut combiner le filtre d'entité du chandelier pour déterminer si ce signal est valide et générer un signal de trading s'il est valide.

Analyse des avantages

La stratégie présente les avantages suivants:

  1. Le jugement est plus précis et plus fiable avec la combinaison de plusieurs indicateurs.

  2. L'ajout du filtre d'entité de chandelier évite les signaux non valides.

  3. En combinant les conditions de surachat/survente, il est plus facile de capter les signaux aux points d'inversion de tendance.

  4. Augmentation des opportunités de profit avec des opérations à long/à court à double sens.

  5. La négociation de positions partielles permet d'éviter des pertes uniques excessives.

Analyse des risques

La stratégie comporte également certains risques:

  1. L'optimisation des paramètres peut réduire les faux signaux.

  2. Le trading de positions partielles ne peut pas exploiter pleinement les opportunités de tendance dans chaque direction.

  3. En tant qu'indicateur principal, le SMI est sensible aux paramètres.

  4. Le commerce fréquent avec une stratégie bidirectionnelle augmente les coûts de transaction.

Directions d'optimisation

La stratégie peut être encore optimisée dans les aspects suivants:

  1. Optimiser les paramètres pour le SMI et le RSI afin de trouver les meilleures combinaisons de paramètres.

  2. Améliorer les mécanismes de dimensionnement des positions et de gestion des positions afin d'obtenir des rendements plus élevés pendant les tendances.

  3. Ajouter des stratégies de stop loss pour réduire le risque de perte unique.

  4. Combiner plus d'indicateurs pour juger de la fiabilité du signal et réduire les faux signaux.

  5. Adopter des contrats efficaces pour réduire les coûts de transaction.

Conclusion

La stratégie utilise de manière complète les indicateurs de filtrage des entités SMI, RSI rapide et chandelier pour mettre en œuvre une stratégie de trading personnalisée basée sur l'élan, suracheté / survendu. Elle présente des avantages tels qu'un jugement précis, l'identification de signaux valides, une combinaison de conditions de surachat / survente et de négociation bidirectionnelle, mais aussi des risques tels que la sensibilité des paramètres, l'incapacité de capitaliser pleinement les tendances et les opérations fréquentes. En optimisant continuellement les paramètres, en augmentant la taille des positions et la gestion des pertes d'arrêt, en réduisant les faux signaux, etc., la stratégie peut atteindre de meilleures performances commerciales.


/*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()

Plus de