Cette stratégie combine le PSAR pour juger des tendances des prix, l'ADX pour juger de la force de la tendance, le RSI pour localiser les zones de surachat et de survente et le CMF pour juger des flux de fonds pour construire une stratégie de négociation quantitative suivant la tendance intradienne à travers les cycles. Il peut rapidement localiser de nouvelles directions de tendance lorsque les prix sortent de la consolidation et forment de nouvelles tendances, et continue à suivre les tendances par la suite. Tout en s'assurant que les principaux gains de tendance sont capturés, des conditions de filtrage sont également définies pendant le processus pour réduire les risques de détention.
Les principales règles d'évaluation de cette stratégie sont les suivantes:
Utilisez l'indicateur PSAR pour juger si les prix sont en tendance haussière.
Exiger que le RSI soit supérieur au point médian de 50 pour filtrer les fausses ruptures survenant dans les zones de survente.
Exiger que l'ADX soit au-dessus de sa ligne EMA, ce qui indique un signal durable dans l'analyse des tendances.
Exiger que la CMF soit supérieure à 0, en jugeant de l'augmentation des fonds entrant.
Les signaux d'achat sont générés lorsque les quatre conditions ci-dessus sont remplies. Les conditions de vente se produisent lorsque le PSAR dépasse les prix, que le RSI tombe en dessous de 50, que l'ADX tombe en dessous de son EMA et que le CMF devient inférieur à 0.
Cette stratégie prend en considération la direction de la tendance des prix, la force de la tendance, l'état de surachat/survente et les flux de fonds lors de l'établissement des règles de négociation.
Les principaux avantages de cette stratégie sont les suivants:
La combinaison de plusieurs indicateurs dans l'établissement de règles de négociation peut prévenir efficacement les fausses ruptures et assurer la qualité du signal.
La localisation et le suivi rapides des tendances émergentes permettent d'obtenir la plupart des profits de la tendance.
La mise en place de conditions de filtrage des procédés permet de contrôler efficacement les risques et d'assurer l'efficacité du suivi.
En tenant compte de la force de la tendance, il est possible d'éviter les embouteillages de la fourchette de négociation.
Les principaux risques de cette stratégie sont les suivants:
L'accumulation d'une seule stratégie comporte des risques de portefeuille, ce qui nécessite une dimensionnement appropriée des positions.
Surveillez attentivement les changements d'état de filtrage pendant le suivi afin d'éviter les pertes lors de l'annulation.
Cette stratégie à moyen et à long terme peut être perturbée à court terme par des fluctuations et comporte des risques de stop loss.
Les mesures de gestion des risques correspondantes comprennent: l'optimisation des règles de dimensionnement des positions, la définition de lignes d'alerte au risque et l'élargissement des distances d'arrêt, etc.
Les espaces d'optimisation comprennent:
Optimisation des paramètres par apprentissage automatique en fonction des paramètres subjectifs actuels.
Ajouter un module de dimensionnement des positions qui dimensionne dynamiquement en fonction des risques.
Améliorer les mécanismes d'arrêt, par exemple les arrêts de retard, les arrêts de temps ou les arrêts de rupture.
Cette stratégie combinant des indicateurs s'est avérée efficace pour localiser et suivre rapidement les tendances naissantes, en validant le trading quantitatif basé sur de multiples dimensions comme les tendances et les fonds.
/*backtest start: 2023-11-14 00:00:00 end: 2023-12-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("psar+ adx + cmf + rsi Strategy", overlay=true,initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent , commission_value=0.1 ) start = input(1.02) increment = input(1.02) maximum = input(1.2) var bool uptrend = na var float EP = na var float SAR = na var float AF = start var float nextBarSAR = na if bar_index > 0 firstTrendBar = false SAR := nextBarSAR if bar_index == 1 float prevSAR = na float prevEP = na lowPrev = low[1] highPrev = high[1] closeCur = close closePrev = close[1] if closeCur > closePrev uptrend := true EP := high prevSAR := lowPrev prevEP := high else uptrend := false EP := low prevSAR := highPrev prevEP := low firstTrendBar := true SAR := prevSAR + start * (prevEP - prevSAR) if uptrend if SAR > low firstTrendBar := true uptrend := false SAR := max(EP, high) EP := low AF := start else if SAR < high firstTrendBar := true uptrend := true SAR := min(EP, low) EP := high AF := start if not firstTrendBar if uptrend if high > EP EP := high AF := min(AF + increment, maximum) else if low < EP EP := low AF := min(AF + increment, maximum) if uptrend SAR := min(SAR, low[1]) if bar_index > 1 SAR := min(SAR, low[2]) else SAR := max(SAR, high[1]) if bar_index > 1 SAR := max(SAR, high[2]) nextBarSAR := SAR + AF * (EP - SAR) //rsi strat length = input( 50 ) middle_RSI=input(49) price = close vrsi = rsi(price, length) //cmf lengthCMF = input(20, minval=1) ad = close==high and close==low or high==low ? 0 : ((2*close-low-high)/(high-low))*volume mf = sum(ad, lengthCMF) / sum(volume, lengthCMF) //ADX adxlen = input(14, title="ADX Smoothing") dilen = input(14, title="DI Length") dirmov(len) => up = change(high) down = -change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = rma(tr, len) plus = fixnan(100 * rma(plusDM, len) / truerange) minus = fixnan(100 * rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) sig = adx(dilen, adxlen) ema_length=input(10) ema_sig= ema(sig,ema_length) long = not uptrend and vrsi > middle_RSI and sig > ema_sig and mf>0 short= uptrend and vrsi < middle_RSI and sig<ema_sig and mf<0 strategy.entry("long",1,when=long) strategy.close('long',when=short)