Système de négociation intégré Ichimoku Keltner basé sur une stratégie de moyenne mobile

Auteur:ChaoZhang est là., Date: 2023-12-20 à 13h40
Les étiquettes:

img

Résumé

Cette stratégie intègre une stratégie de moyenne mobile, des graphiques de nuages Ichimoku et des indicateurs techniques du canal Keltner pour atteindre le suivi de tendance et le trading de percée, ce qui convient au trading algorithmique à haute fréquence.

Principe de stratégie

  1. Utilisez le canal Keltner pour juger si le prix de l'action dépasse les rails supérieur et inférieur du canal comme signal d'ouverture de positions
  2. Les graphiques de nuages Ichimoku jugent la direction de la tendance et l'utilisation avec le canal Keltner
  3. La stratégie de moyenne mobile envoie des signaux de clôture

Analyse des avantages

  1. Intégrer plusieurs indicateurs techniques pour un jugement complet afin d'améliorer la précision des décisions
  2. Le canal Keltner évalue les conditions de surachat et de survente pour éviter de poursuivre les hauts et d' éliminer les bas lors de l' ouverture de positions
  3. Les graphiques de nuages Ichimoku jugent les principales tendances pour éviter de négocier contre la tendance
  4. La stratégie des moyennes mobiles filtre les chocs et prévient une sensibilité excessive

Analyse des risques

  1. L'intégration de plusieurs indicateurs rend les paramètres plus complexes et nécessite des tests minutieux
  2. L'intersection de la ligne de conversion et de la ligne de base des graphiques des nuages n'est pas toujours un signal commercial fiable
  3. Le canal de Keltner doit ajuster les paramètres pour s'adapter aux caractéristiques des différents stocks

Directions d'optimisation

  1. Évaluer les performances des serveurs et raccourcir de manière appropriée les cycles de moyenne mobile pour augmenter la fréquence des transactions
  2. Tester la sensibilité des différents stocks aux paramètres et définir des paramètres adaptatifs
  3. Améliorer la stratégie de stop loss pour réduire les pertes uniques

Résumé

Cette stratégie intègre les graphiques de nuage Ichimoku, les canaux Keltner et les stratégies moyennes mobiles avec plusieurs indicateurs techniques pour atteindre un suivi des tendances et un trading de percée efficace. Par rapport à un seul indicateur, le jugement de cette stratégie est plus complet et précis, évitant certains faux signaux.


/*backtest
start: 2023-11-19 00:00:00
end: 2023-12-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// Author: Persio Flexa
// Description: Ichimoku Clouds with Keltner Channel, perfect for margin trading 
strategy("Ichimoku Keltner Strategy", overlay=true) 

// -- Keltner ------------------------------------------------------------------
source = close

useTrueRange = input(true)
length = input(18, minval=1) 
mult = input(1.8)

ma = sma(source, length)
range = useTrueRange ? tr : high - low
rangema = sma(range, length)
upper = ma + rangema * mult
lower = ma - rangema * mult

plot(ma, title="BASE", color=orange,transp=85)
plot(upper, title="UPPER", color=red)
plot(lower, title="LOWER", color=green)

//crossUpper = crossover(source, upper)
//crossLower = crossunder(source, lower)
crossUpper = source > upper
crossLower = source  < lower

bprice = 0.0
bprice := crossUpper ? high+syminfo.mintick : nz(bprice[1])

sprice = 0.0
sprice := crossLower ? low -syminfo.mintick : nz(sprice[1]) 

crossBcond = false
crossBcond := crossUpper ? true 
 : na(crossBcond[1]) ? false : crossBcond[1]

crossScond = false
crossScond := crossLower ? true 
 : na(crossScond[1]) ? false : crossScond[1]

cancelBcond = crossBcond and (source < ma or high >= bprice )
cancelScond = crossScond and (source > ma or low <= sprice )

// ---------------------------------------------------------------------


// -- Ichimoku

ATRlength = input(200, minval=1)
ATRMult = input(2.272, minval=1)

ATR = rma(tr(true), ATRlength)

len = input(26, minval=1, title="EMA Length")
src = input(close, title="Source")
out = ema(src, len)

emaup = out+(ATR*ATRMult)
emadw = out-(ATR*ATRMult)

conversionPeriods = input(15, minval=1),
basePeriods = input(35, minval=1)
laggingSpan2Periods = input(52, minval=1),
displacement = input(26, minval=1)

donchian(len) => avg(lowest(len), highest(len))

conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

p1 = plot(leadLine1, offset = displacement, color=green,transp=85, title="Lead 1")
p2 = plot(leadLine2, offset = displacement, color=red,transp=85, title="Lead 2")
fill(p1, p2,silver) 

longCond    = crossover(conversionLine, baseLine)
shortCond   = crossunder(conversionLine, baseLine)
// -------------------------------------------------------------------------

if (crossUpper and (conversionLine > baseLine))
    strategy.entry("long", strategy.long, stop=bprice, comment="LONG")

if (crossLower and (conversionLine < baseLine))
    strategy.entry("short", strategy.short, stop=sprice, comment="SHORT")
    
strategy.close("long", when = (shortCond and source < lower))
strategy.close("short", when = (longCond and source > upper))

Plus de