Stratégie de négociation adaptative basée sur des indicateurs de dynamique

Auteur:ChaoZhang est là., Date: 2024-01-05 11:43:25 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie est une stratégie de négociation d'actions adaptative basée sur des indicateurs de dynamique. Elle intègre des bandes de Bollinger, des canaux de Keltner et un indicateur de pression des prix pour obtenir un jugement de tendance, une identification du point de rupture et une sortie stop-loss pour le trading automatisé.

Principe de stratégie

Le noyau de cette stratégie est de construire un canal de prix à travers les bandes de Bollinger et les canaux de Keltner et d'identifier les signaux de négociation lorsque le prix traverse le canal. Il prendra une position longue lorsque le prix traverse le canal et prendra une position courte lorsque le prix traverse le canal. En outre, lorsque le prix est pressé dans le canal, la stratégie déterminera la direction de l'opération en fonction de la valeur positive et négative de l'indicateur de pression des prix.

Plus précisément, les bandes de Bollinger calculent l'écart type du prix pour tracer le rail supérieur et inférieur; les canaux de Keltner tracent le rail supérieur et inférieur en fonction de la fourchette moyenne de prix ± volatilité moyenne. Lorsque la fusion des canaux se produit entre les deux, on considère que le marché entre en consolidation en attendant la prochaine rupture.

En résumé, cette stratégie intègre plusieurs indicateurs pour juger du mouvement des prix et former une logique claire longue et courte, qui peut filtrer efficacement les fausses ruptures et identifier les opportunités de négociation à forte probabilité.

Les avantages de la stratégie

  1. Intégre plusieurs indicateurs avec une forte capacité de jugement.

  2. La différence d'indicateur sert de condition auxiliaire pour éviter les transactions inutiles.

  3. Le canal de stop loss adaptatif, gère efficacement les risques. Le canal sert de position de stop loss, qui peut s'ajuster automatiquement en fonction des fluctuations du marché pour réduire les pertes.

  4. Avec seulement quelques paramètres clés, il est facile de tester, d'optimiser et d'intégrer dans des systèmes de trading automatisés.

Risques liés à la stratégie

  1. Transition fréquente de long à court lorsque le marché fluctue fortement, ce qui entraîne un nombre accru de transactions.

  2. Des paramètres d'indicateur incorrects peuvent manquer de bonnes opportunités de trading.

  3. S'applique uniquement aux actions dont la direction est claire, ne convient pas aux marchés extrêmement volatils.

Directions d'optimisation

  1. Augmenter le module de contrôle de position pour optimiser l'efficacité de l'utilisation du capital.

  2. Améliorer le modèle d'apprentissage automatique pour ajuster dynamiquement les paramètres des indicateurs, permettant aux indicateurs de s'adapter automatiquement à différents cycles et stocks.

  3. Améliorer la stratégie d'arrêt des pertes en introduisant plus d'indicateurs auxiliaires pour déterminer le moment de l'arrêt des pertes.

Conclusion

Cette stratégie intègre les bandes de Bollinger, les canaux de Keltner et l'indicateur de pression des prix pour former une logique claire pour le système de jugement et de contrôle des risques. Elle combine le jugement de tendance et les opérations de rupture, peut s'adapter automatiquement aux conditions du marché et identifier les opportunités de trading à forte probabilité.


/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © juliopetronilo

//@version=4
strategy("DMI/ADX/Squeeze Robot", shorttitle="DMI/ADX/SQZ", overlay=true)

// Squeeze Momentum Indicator
length = input(20, title="BB Length")
mult = input(2.0, title="BB MultFactor")
lengthKC = input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
useTrueRange = input(true, title="Use TrueRange (KC)")

source = close
basis = sma(source, length)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

ma = sma(source, lengthKC)
rangeKC = useTrueRange ? tr : (high - low)
rangema = sma(rangeKC, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC

sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz = not (sqzOn or sqzOff)

val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)), sma(close, lengthKC)), lengthKC, 0)

// DMI/ADX Plot
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
keyLevel = input(23, title="Key Level for ADX")

dirmov(len) =>
    up = change(high)
    down = -change(low)
    truerange = rma(tr, len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
    [plus, minus]

adx(dilen, adxlen) =>
    [plus, minus] = dirmov(dilen)
    sum = plus + minus
    adx_val = abs(plus - minus) / (sum == 0 ? 1 : sum) * 100
    [adx_val, plus, minus]

[sig, up, down] = adx(dilen, adxlen)

// Estrategia de Trading
strategy.entry("Buy", strategy.long, when=sqzOn and crossover(up, down) and crossover(val, 0))
strategy.entry("Sell", strategy.short, when=sqzOn and crossunder(up, down) and crossunder(val, 0))
strategy.close("Buy", when=sqzOff)
strategy.close("Sell", when=sqzOff)

// Plot de los indicadores
plot(val, color=color.blue, style=plot.style_histogram, linewidth=4)
plot(0, color=noSqz ? color.blue : sqzOn ? color.black : color.rgb(236, 238, 247), style=plot.style_cross, linewidth=2)
plot(up, color=color.blue, title="+DI")
plot(down, color=color.gray, title="-DI")
plot(keyLevel, color=color.white, title="Key Level")



Plus de