Stratégie de suivi des tendances forte et croisée sur plusieurs indicateurs

Auteur:ChaoZhang est là., Date: 2023-11-13 16h59: 12
Les étiquettes:

img

Résumé

Cette stratégie intègre plusieurs indicateurs de dynamique forte, y compris RSI, MF, CCI et Stoch RSI pour identifier et suivre les fortes tendances à travers des croisements d'indicateurs. Elle calcule d'abord plusieurs indicateurs de cycle, puis prend la valeur moyenne. Lorsque tous les indicateurs franchissent le seuil fort, un signal d'achat est généré. Lorsque les indicateurs tombent en dessous du seuil faible, un signal de vente est généré pour capturer les points de basculement de la tendance et suivre les fortes tendances.

La logique de la stratégie

Cette stratégie calcule quatre indicateurs de dynamique forts - RSI, MF, CCI et Stoch RSI. RSI juge la force en calculant les variations de prix sur une période. MF considère également le rapport des hausses et des baisses. CCI juge les niveaux de surachat / survente en calculant l'écart par rapport à la moyenne mobile.

La stratégie définit 50 comme niveau neutre pour les indicateurs. Lorsque les lignes RSI, MF, CCI, Stoch RSI K et D franchissent toutes au-dessus de 50, un signal d'achat est généré, indiquant une forte tendance haussière. Lorsque les indicateurs tombent en dessous de 50, un signal de vente est généré, suggérant une tendance latérale ou à la baisse. Après l'entrée, un stop loss large est défini pour suivre la forte tendance.

L'avantage de cette stratégie est que les indicateurs sont complets, contenant plusieurs méthodes pour mesurer la dynamique des prix et peuvent se vérifier mutuellement pour éviter un désalignement.

Les avantages

  1. Indicateurs complets, y compris les indices de volatilité, les indices de volatilité monétaires, les indices de volatilité CCI et les indices de volatilité de Stoch pour un jugement et une vérification de l'élan fort, améliorant ainsi la précision.

  2. En prenant la valeur moyenne des indicateurs, le bruit est filtré et les signaux sont plus fiables.

  3. L'utilisation d'un croisement de plusieurs indicateurs comme calendrier d'entrée permet d'identifier efficacement les points de tournant de la tendance.

  4. La large plage de stop loss permet de suivre la forte tendance des rendements excédentaires.

  5. La logique de la stratégie est claire et facile à comprendre, les paramètres sont raisonnables pour le trading en direct.

Les risques

  1. Risque d'inversion de tendance forte: les inversions soudaines peuvent entraîner l'arrêt des pertes.

  2. Risque de fluctuations dans la tendance: le prix peut avoir de gros retards pendant les tendances haussières, ce qui nécessite des plages d'arrêt-perte raisonnables.

  3. Risque sur les marchés baissiers: la stratégie vise principalement à suivre les fortes tendances, peut être moins performante sur les marchés baissiers.

  4. Risque d'optimisation des paramètres: les paramètres des indicateurs doivent être testés et optimisés pour différents produits, faute de quoi les performances peuvent en souffrir.

  5. Les risques peuvent être gérés par un stop-loss approprié, des tests de paramètres, un ajustement de position, etc.

Directions d'optimisation

  1. Testez différentes combinaisons de paramètres pour trouver les cycles optimaux pour l'indice RSI, l'indice CCI, etc. pour des produits spécifiques.

  2. Introduire plus de types d'indicateurs comme les indicateurs de volatilité, les indicateurs de volume pour enrichir la logique.

  3. Ajustez automatiquement la taille des positions en fonction des conditions du marché.

  4. Adopter un stop loss dynamique basé sur les niveaux de fluctuation du marché.

  5. Explorez les possibilités de croisement par étapes, effectuez des transactions basées sur des indicateurs de premier niveau, puis suivez les tendances avec des indicateurs de deuxième niveau.

Conclusion

Cette stratégie identifie et suit les fortes tendances par croisement de RSI, MF, CCI, Stoch RSI et d'autres indicateurs de dynamique forts. Les indicateurs complets et complémentaires avec calcul de la valeur moyenne filtrent efficacement les faux signaux. Le timing d'entrée de croisement de l'indicateur est fiable et une large plage de stop loss permet un suivi persistant de la tendance. Mais les risques d'inversion nécessitent des précautions et l'optimisation des paramètres est importante.


/*backtest
start: 2022-11-06 00:00:00
end: 2023-11-12 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/
// © SoftKill21

//@version=4

strategy(title="something", initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.03, pyramiding=1  )

length = input(title="Length", type=input.integer, defval=100, minval=1, maxval=2000)
src = hlc3
upper = sum(volume * (change(src) <= 0 ? 0 : src), length)
lower = sum(volume * (change(src) >= 0 ? 0 : src), length)
_rsi(upper, lower) =>
    if lower == 0
        100
    if upper == 0
        0
	100.0 - (100.0 / (1.0 + upper / lower))
mf = _rsi(upper, lower)

up = rma(max(change(src), 0), length)
down = rma(-min(change(src), 0), length)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi, "RSI", color=#8E1599)

plot(mf, "MF", color=#459915)
hline(50, title="zap", color=#c0c0c0)



ma = sma(src, length)
cci = (src - ma) / (0.015 * dev(src, length))
//plot(cci, "CCI", color=#996A15)


smoothK = input(1, "K", minval=1)
smoothD = input(1, "D", minval=1)

rsi1 = rsi(src, length)
k = sma(stoch(rsi1, rsi1, rsi1, length), smoothK)
d = sma(k, smoothD)
plot(k, "K", color=#0094FF)
plot(d, "D", color=#FF6A00)

avg = (rsi + mf + cci + k + d)/5

long = rsi > 50 and mf > 50 and cci >50 and (k > 50 or d>50)
short= rsi<49 and mf<49 and cci<0 and (k<50 or d<50)

// long= avg > 100
// short=avg<0

plot(avg)

strategy.entry('long',1,when=long)
strategy.close("long",when=short)
//strategy.entry('short',0,when=short)
//strategy.close("short",when=exitshort)



Plus de