Stratégie de négociation algorithmique à court terme à plusieurs indicateurs

Auteur:ChaoZhang est là., Date: 14 septembre 2023 à 19 h 46 min 55 s
Les étiquettes:

Cet article présente en détail une stratégie de trading algorithmique à court terme combinant plusieurs indicateurs.

I. Logique stratégique

Le noyau de cette stratégie est l'utilisation d'une combinaison d'indicateurs multiples, notamment:

(1) Système de moyenne mobile double: Calcule une moyenne mobile Hull rapide et une moyenne mobile Hull lente et juge la tendance en fonction de leur croisement.

(2) Système Ichimoku: Calcule la conversion et les lignes de base entre autres, et détermine la tendance et les niveaux de support/résistance basés sur le nuage Ichimoku.

(3) Canal de Donchian: Construit un canal en utilisant les prix les plus élevés et les plus bas pour identifier les écarts de prix.

(4) MACD: Calcule le MACD et la ligne de signal, effectuant des transactions en fonction de leur croisement.

Ce n'est que lorsque ces indicateurs parviendront à un consensus sur le jugement de tendance que des signaux commerciaux fiables seront générés.

Prenez des positions longues lorsque le Hull MA rapide traverse au-dessus du Hull MA lent, ET les lignes Ichimoku traversent au-dessus du nuage, ET le canal Donchian éclate, ET le MACD traverse au-dessus de la ligne de signal.

Les prix de clôture des barres quotidiennes sont également intégrés pour éviter d'être pris au piège dans les renversements.

En outre, la stratégie contient une logique de stop loss et de prise de profit pour contrôler le risque et la récompense pour chaque transaction.

II. Avantages de la stratégie

Le plus grand avantage de cette stratégie est la complémentarité des combinaisons d'indicateurs, ce qui améliore la qualité du signal.

Deuxièmement, la combinaison de plusieurs délais est également un avantage important: le jugement auxiliaire des barres quotidiennes peut filtrer le risque d'être piégé dans des cycles à court terme.

Enfin, le mécanisme de stop loss et de take profit assure également des risques contrôlables par transaction.

III. Risques potentiels

En dépit de la bonne conception de la stratégie, il convient également de noter les risques commerciaux:

Tout d'abord, la combinaison de plusieurs indicateurs augmente la difficulté d'optimisation.

Deuxièmement, les stop-loss peuvent être touchés par des mouvements de tendance forts, ce qui entraîne des pertes inutiles.

Enfin, les jugements sur plusieurs délais peuvent également introduire des situations déroutantes difficiles à déchiffrer.

Dans l'ensemble, la stratégie combine des indicateurs de manière scientifique et peut devenir un système de trading algorithmique à court terme efficace grâce à des tests et à l'optimisation des paramètres.

IV. Résumé

En résumé, cet article a présenté en détail une stratégie de trading algorithmique à court terme combinant plusieurs indicateurs. Il utilise une combinaison de moyennes mobiles doubles, Ichimoku, Donchian Channel, MACD et plus encore pour améliorer la qualité du signal. Il utilise également une analyse multi-temporelle et une logique stop loss / take profit pour contrôler les risques. Avec l'optimisation, cette stratégie peut devenir un système efficace pour le trading systématique à court terme.


/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// Any timeFrame ok but good on 15 minute & 60 minute , Ichimoku + Daily-Candle_cross(DT) + HULL-MA_cross + MacD combination 420 special blend
strategy("Custom 15m strat",overlay=true)
keh=input(title="Double HullMA",defval=14, minval=1)
dt = input(defval=0.0010, title="Decision Threshold (0.001)", step=0.0001)`
SL = input(defval=-500.00, title="Stop Loss in $", step=1)
TP = input(defval=25000.00, title="Target Point in $", step=1)
ot=1
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(close[1],round(keh/2))
nma1=wma(close[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
d=n1>n2?red:green
confidence=(security(syminfo.tickerid, 'D', close)-security(syminfo.tickerid, 'D', close[1]))/security(syminfo.tickerid, 'D', close[1])
conversionPeriods = input(9, minval=1, title="Conversion Line Periods")
basePeriods = input(26, minval=1, title="Base Line Periods")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods")
displacement = input(26, minval=1, title="Displacement")
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
LS=close, offset = -displacement
MACD_Length = input(9)
MACD_fastLength = input(12)
MACD_slowLength = input(26)
MACD = ema(close, MACD_fastLength) - ema(close, MACD_slowLength) //macd
aMACD = ema(MACD, MACD_Length) //signal
closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closeshort)
    strategy.close("Short")
longCondition = n1>n2 and strategy.opentrades<ot and confidence>dt and close>n2 and leadLine1>leadLine2 and open<LS and MACD>aMACD
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and strategy.opentrades<ot and confidence<dt and close<n2 and leadLine1<leadLine2 and open>LS and MACD<aMACD
if (shortCondition)
    strategy.entry("Short",strategy.short)

a1=plot(n1,color=c)
a2=plot(n2,color=c)
plot(cross(n1, n2) ? n1 : na, style = circles, color=b, linewidth = 4)
plot(cross(n1, n2) ? n1 : na, style = line, color=d, linewidth = 4)
plot(conversionLine, color=#0496ff, title="Conversion Line")
plot(baseLine, color=#991515, title="Base Line")
//plot(longCondition == true ? 4000:4100,title="long")
plot(close, offset = -displacement, color=#459915, title="Lagging Span")
p1=plot (leadLine1, offset = displacement, color=green,  title="Lead 1")
p2=plot (leadLine2, offset = displacement, color=red,  title="Lead 2")
fill(p1, p2, color = leadLine1 > leadLine2 ? green : red)
// remove the "//" from before the plot script if want to see the indicators on chart

Plus de