
Cette stratégie utilise l’indicateur PSAR pour déterminer la tendance des prix, l’indicateur ADX pour déterminer la force de la tendance, l’indicateur RSI pour déterminer la zone de survente et l’indicateur CMF pour déterminer le flux de fonds, pour construire une stratégie de trading quantifiée de suivi de tendance à travers les cycles. Cette stratégie se positionne rapidement lorsque le prix est déterminé à la rupture de la rupture de la rupture pour former une nouvelle direction de tendance, et suit en permanence la tendance subséquente, tout en assurant la prise des principaux gains de la tendance.
Les principales règles de cette politique sont les suivantes:
L’utilisation de l’indicateur PSAR pour déterminer si le prix est en hausse, et le passage sous le PSAR est considéré comme la fin d’une hausse et la transition vers une baisse;
L’indicateur RSI est requis au-dessus de la ligne médiane 50, pour filtrer les faux rebond qui se forment dans les zones de survente;
L’ADX a demandé une valeur supérieure à sa propre moyenne EMA, indiquant que les résultats de l’analyse des tendances sont un signe de continuité;
la demande de CMF est supérieure à zéro et est considérée comme un flux de fonds;
Un signal d’achat est généré lorsque les quatre conditions ci-dessus sont remplies. Un signal de vente est généré lorsque le RSI est inférieur à 50, l’ADX est inférieur à sa propre moyenne EMA et le CMF est inférieur à 0.
La stratégie prend en compte la direction de la tendance des prix, l’intensité de la tendance, l’état de survente et le flux de fonds vers plusieurs dimensions pour définir les règles de négociation, et établit des jugements logiques rigoureux lors de la détermination de la génération de signaux de négociation, afin de filtrer efficacement les fausses ruptures et de garantir la capture d’une tendance à forte probabilité de durabilité.
Les principaux avantages de cette stratégie sont les suivants:
La mise en place de règles de négociation combinées à plusieurs indicateurs permet de prévenir efficacement les fausses percées et d’assurer la qualité des signaux de négociation.
Identifier et suivre rapidement les tendances émergentes afin de tirer pleinement parti de leur évolution;
Le processus de configuration suit les conditions de filtrage, ce qui permet de contrôler efficacement les risques et d’assurer l’efficacité du suivi;
Les indicateurs de la force de la tendance peuvent être combinés pour éviter de se retrouver dans une impasse de reprise.
Les principaux risques associés à cette stratégie sont les suivants:
Une seule stratégie est susceptible de cumuler des risques et nécessite un ajustement approprié des positions pour contrôler l’ensemble des risques;
Le suivi des conditions de filtrage doit être suivi de près afin d’éviter une perte de coupe après l’annulation des conditions.
Cette stratégie est axée sur la ligne moyenne et longue, et le contenu à court terme est vulnérable à la volatilité et présente un risque de rupture.
Les mesures de gestion des risques correspondantes comprennent: l’optimisation des règles de gestion des positions, la mise en place d’une ligne d’alerte au risque, l’assouplissement approprié de la distance entre les lignes de stop-loss, etc.
Cette stratégie peut être améliorée de la manière suivante:
Optimiser les paramètres, qui sont actuellement subjectifs et peuvent être optimisés automatiquement par des méthodes d’apprentissage automatique;
l’ajout d’un module de gestion des positions permettant de modifier les positions en fonction de la dynamique du risque;
Augmentation de l’optimisation des mécanismes de stop-loss, tels que le stop-loss de suivi, le stop-loss de temps, le stop-loss de rupture.
Cette stratégie intègre plusieurs règles de jugement d’indicateurs, permet une localisation rapide et un suivi continu des tendances émergentes, vérifie l’efficacité de l’analyse multidimensionnelle de la combinaison des tendances et des fonds dans les transactions quantifiées. La stratégie peut être utilisée comme stratégie de base pour le suivi des tendances à travers les périodes, ou peut être construite en une stratégie de quantification linéaire à moyen et long terme stable après optimisation des paramètres et des modules.
/*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)