Système de trading intégré Ichimoku Keltner basé sur la stratégie de moyenne mobile


Date de création: 2023-12-20 13:40:08 Dernière modification: 2023-12-20 13:40:08
Copier: 0 Nombre de clics: 745
1
Suivre
1621
Abonnés

Système de trading intégré Ichimoku Keltner basé sur la stratégie de moyenne mobile

Aperçu

Cette stratégie est intégrée à la stratégie homogène, aux diagrammes de nuages d’Ichimoku et aux indicateurs techniques des canaux Keltner, permettant le suivi des tendances et les transactions de rupture, et est applicable à la négociation d’algorithmes à haute fréquence.

Principe de stratégie

  1. Utilisez le canal Keltner pour déterminer si le cours d’une action dépasse la trajectoire ascendante ou descendante du canal, comme signal de mise en position
  2. Le nuage d’Ichimoku est utilisé en combinaison avec le canal Keltner pour déterminer la direction des tendances.
  3. La stratégie de la ligne de parité envoie un signal d’arrêt

Analyse des avantages

  1. L’intégration d’indicateurs techniques multiples, le jugement global et l’amélioration de l’exactitude des décisions
  2. Le canal Keltner a jugé que les transactions étaient trop chères pour éviter de faire de la survente.
  3. Les nuages d’Ichimoku permettent d’évaluer les grandes tendances et d’éviter les échanges négatifs
  4. Une stratégie de filtrage linéaire des vibrations pour éviter une sursensibilité

Analyse des risques

  1. Intégration multi-indicateurs, paramètres plus complexes, qui nécessitent un test minutieux
  2. Le croisement des lignes de conversion et des lignes de référence n’est pas toujours un signal de transaction fiable
  3. Le canal Keltner nécessite des paramètres adaptés aux différentes caractéristiques des actions

Direction d’optimisation

  1. Évaluer les performances des serveurs, réduire les cycles de ligne moyenne de manière appropriée et augmenter la fréquence des transactions
  2. Tester la sensibilité des différentes actions aux paramètres et définir des paramètres d’adaptation
  3. Augmenter les stratégies de stop-loss et réduire les pertes individuelles

Résumer

Cette stratégie intègre plusieurs indicateurs techniques tels que le diagramme de nuage d’Ichimoku, le canal de Keltner et la stratégie homogène, permettant le suivi de tendances et des transactions de rupture plus efficaces. Par rapport à un seul indicateur, la stratégie juge plus globalement et plus précisément, évitant ainsi certains faux signaux. Il existe également des paramètres plus complexes qui nécessitent une optimisation pour chaque action.

Code source de la stratégie
/*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))