Stratégie de percée quantitative des prix de négociation

Auteur:ChaoZhang est là., Date: 2023-12-22 à 12h42h15
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie de trading quantitative à court terme basée sur la moyenne mobile simple (SMA), la moyenne mobile exponentielle (EMA), les canaux Keltner, l'indicateur MACD et l'oscillateur stochastique.

Principe de stratégie

La stratégie utilise une SMA de 25 périodes, une EMA de 200 périodes pour construire des lignes de moyenne mobile doubles.

L'indicateur MACD génère des signaux de trading avec sa ligne rapide, sa ligne lente et son histogramme. L'oscillateur stochastique forme également des signaux longs et courts avec la croix dorée et la croix morte de sa ligne %K et de sa ligne %D.

Plus précisément, lorsque le prix de clôture est supérieur à la fois à la SMA et à l'EMA, et à l'intérieur des canaux Keltner, l'histogramme MACD est négatif et le stochastique %K est inférieur à 50, un signal d'entrée long est déclenché.

Les avantages de la stratégie

  1. L'utilisation d'une moyenne mobile double combinée à un indicateur de canal peut filtrer efficacement les fausses ruptures.
  2. L'intégration de signaux provenant de plusieurs indicateurs techniques peut améliorer la fiabilité.
  3. Des règles longues/courtes claires facilitent l'efficacité de l'exécution programmatique.
  4. Convient pour les stratégies de négociation quantitative à haute fréquence.

Risques stratégiques et optimisation

  1. En tant que stratégie de négociation à court terme, elle comporte des risques de fréquence de négociation élevés.
  2. Il n'existe pas de mécanisme de stop loss, ce qui entraîne des risques de pertes importants.
  3. Considérez l'ajout d'indicateurs de volatilité pour optimiser les conditions d'entrée et de stop loss.
  4. Différentes périodes de paramètres peuvent être testées pour trouver des combinaisons optimales.

Conclusion

Cette stratégie intègre quatre indicateurs techniques couramment utilisés - moyennes mobiles, canal, MACD et stochastique. Elle détermine long/short en fonction de la percée des prix, une stratégie de trading quantitative à court terme typique.


/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 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/
// © exlux99

//@version=5
strategy(title="Scalping Trading System Crypto and Stocks", overlay=true)
src = input(low, title="Source")

//sma and ema
len = input.int(25, minval=1, title="Length SMA" , group="Moving Averages")
len2 = input.int(200, minval=1, title="Length EMA", group="Moving Averages")

out = ta.sma(src, len)
out2 = ta.ema(src, len2)


//keltner
lengthk = input.int(10, minval=1, title="Length Keltner Channel",group="Keltner")
mult = input(2.0, "Multiplier",group="Keltner")
BandsStyle = input.string("Average True Range", options = ["Average True Range", "True Range", "Range"], title="Bands Style",group="Keltner")
atrlength = input(14, "ATR Length",group="Keltner")

ma = ta.sma(src, lengthk)
rangema = BandsStyle == "True Range" ? ta.tr(true) : BandsStyle == "Average True Range" ? ta.atr(atrlength) : ta.rma(high - low, lengthk)
upper = ma + rangema * mult
lower = ma - rangema * mult

//stoch
periodK = input.int(10, title="%K Length", minval=1,group="Stochastic")
smoothK = input.int(1, title="%K Smoothing", minval=1,group="Stochastic")
periodD = input.int(1, title="%D Smoothing", minval=1,group="Stochastic")
k = ta.sma(ta.stoch(close, high, low, periodK), smoothK)
d = ta.sma(k, periodD)

//macd 1
fast_length = input(title="Fast Length MACD", defval=4,group="MACD Fast")
slow_length = input(title="Slow Length MACD", defval=34,group="MACD Fast")
signal_length = input.int(title="Signal Smoothing MACD",  minval = 1, maxval = 50, defval = 5,group="MACD Fast")
sma_source = input.string(title="Oscillator MA Type MACD",  defval="EMA", options=["SMA", "EMA"],group="MACD Fast")
sma_signal = input.string(title="Signal Line MA Type MACD", defval="EMA", options=["SMA", "EMA"],group="MACD Fast")

fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal




long= close > out and close < upper and close > lower and hist < 0 and k < 50 and close > out2 

short= close < out and close < upper and close > lower and hist > 0 and k > 50 and close < out2 

strategy.entry("long",strategy.long,when= long)

strategy.entry("short",strategy.short,when=short)


Plus de