
La stratégie utilise des moyennes mobiles et des marges de dérivation adaptées à plusieurs cycles pour la prévision de la tendance et la sortie de signaux de négociation. La stratégie est appelée stratégie de prévision de la tendance adaptée à plusieurs cycles.
La logique centrale de la stratégie est divisée en deux lignes principales. La première ligne principale est de construire un système de jugement de filtrage à plusieurs cycles en utilisant une moyenne mobile adaptative nAMA de différents paramètres, la deuxième ligne principale est d’utiliser un système d’évaluation des risques d’escompte de différents paramètres pour construire un système d’évaluation des risques de plusieurs cycles.
Dans la première ligne principale, une moyenne mobile adaptative de 10 cycles et de 4,24 paramètres est définie. Dans la deuxième ligne principale, une ligne d’évaluation des risques de dérivation de 7 cycles et de 4,300 paramètres est définie. Enfin, la ligne de 10 cycles de la première ligne principale est comparée à la ligne de 31 cycles de la deuxième ligne principale, formant une transaction.
En outre, la stratégie a également un module de confirmation de la quantité. Le signal de transaction n’est valide que si le volume de transactions est supérieur à la moyenne des transactions sur 6 cycles. Cela permet de filtrer les faux signaux dans une certaine mesure.
Le plus grand avantage de cette stratégie réside dans l’utilisation d’une structure d’adaptation à plusieurs cycles, qui permet de s’adapter aux paramètres du marché et d’ajuster les cycles dynamiquement. La combinaison de cycles de paramètres appropriés peut être trouvée à la fois dans les chapitres de tendance et dans les zones de choc, ce qui améliore la capacité de capture de tendance de la stratégie.
En outre, la stratégie utilise le système d’évaluation des risques de dérivation pour un filtrage de la cohésion à plusieurs cycles, ce qui permet de contrôler efficacement le risque de transaction et d’éviter de créer des positions à des stades à haut risque. En même temps, la stratégie définit également des conditions de filtrage du prix de la quantité, afin d’éviter de produire de faux signaux lorsque la quantité est insuffisante.
Le plus grand risque de cette stratégie réside dans le fait qu’elle nécessite un jugement de synchronisation sur plusieurs lignes de cycle, ce qui rend la capacité de capture du marché à court terme moins efficace. Lorsque les lignes de cycle courtes et longues changent simultanément, il est facile de générer des signaux vagues.
En outre, les cycles de force majeure des systèmes d’évaluation des risques d’adaptation des moyennes mobiles et des dérives sont relativement courts par rapport au grand disque, et il existe une certaine latence sous un niveau plus élevé de conduite. Il est possible d’allonger le cycle de force majeure de manière appropriée pour réduire la latence.
Réduction des paramètres de la période principale pour adapter les moyennes mobiles et les courbes de dérivation à la ligne d’évaluation des risques, en les modifiant pour 5 cycles et 20 cycles, afin d’améliorer la capture des reversements de marché à court terme.
Augmentation des paramètres de cycle principal à 20 cycles et 50 cycles pour réduire le retard induit par les marchés à plus long niveau.
Optimisation des paramètres de la chaîne de négociation en une chaîne d’ATR de 0,5 fois, réduisant ainsi la possibilité de transactions bruyantes.
L’ajout d’indicateurs de validation des résultats tels que MACD améliore la fiabilité du signal.
La stratégie utilise une combinaison d’indicateurs techniques tels que les moyennes mobiles adaptables, l’évaluation des risques de dérivation et l’analyse des prix pour construire un système de décision de négociation adapté à plusieurs cycles. Par l’ajustement optimisé des paramètres, elle peut s’appliquer à différents types de marchés, identifier automatiquement les tendances et les régions. La logique de la stratégie est claire, la valeur est exploitable et constitue une méthode de quantification recommandée.
/*backtest
start: 2023-01-25 00:00:00
end: 2024-01-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Best Rabbit Strategy", shorttitle="Rabbit God",overlay=true)
Length = input(10, minval=1)
xPrice = close
xvnoise = abs(xPrice - xPrice[1])
Fastend = input(2)
Slowend = input(30)
nfastend = 2/(Fastend + 1)
nslowend = 2/(Slowend + 1)
nsignal = abs(xPrice - xPrice[Length])
nnoise = sum(xvnoise, Length)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2)
nAMA = nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1]))
Length2 = input(10, minval=1)
xPrice2 = close
xvnoise2 = abs(xPrice2 - xPrice2[1])
Fastend2 = input(4)
Slowend2 = input(24)
nfastend2 = 2/(Fastend2 + 1)
nslowend2 = 2/(Slowend2 + 1)
nsignal2 = abs(xPrice2 - xPrice2[Length2])
nnoise2 = sum(xvnoise, Length2)
nefratio2 = iff(nnoise2 != 0, nsignal2 / nnoise2, 0)
nsmooth2 = pow(nefratio2 * (nfastend2 - nslowend2) + nslowend2, 2)
nAMA2 = nz(nAMA2[1]) + nsmooth2 * (xPrice2 - nz(nAMA2[1]))
price = input(hl2)
len = input(defval=7,minval=1)
FC = input(defval=4,minval=1)
SC = input(defval=300,minval=1)
len1 = len/2
w = log(2/(SC+1))
H1 = highest(high,len1)
L1 = lowest(low,len1)
N1 = (H1-L1)/len1
H2 = highest(high,len)[len1]
L2 = lowest(low,len)[len1]
N2 = (H2-L2)/len1
H3 = highest(high,len)
L3 = lowest(low,len)
N3 = (H3-L3)/len
dimen1 = (log(N1+N2)-log(N3))/log(2)
dimen = iff(N1>0 and N2>0 and N3>0,dimen1,nz(dimen1[1]))
alpha1 = exp(w*(dimen-1))
oldalpha = alpha1>1?1:(alpha1<0.01?0.01:alpha1)
oldN = (2-oldalpha)/oldalpha
N = (((SC-FC)*(oldN-1))/(SC-1))+FC
alpha_ = 2/(N+1)
alpha = alpha_<2/(SC+1)?2/(SC+1):(alpha_>1?1:alpha_)
out = (1-alpha)*nz(out[1]) + alpha*price
price2 = input(hl2)
len2 = input(defval=31,minval=1)
FC2 = input(defval=40,minval=1)
SC2 = input(defval=300,minval=1)
len12 = len2/2
w2 = log(2/(SC2+1))
H12 = highest(high,len12)
L12 = lowest(low,len12)
N12 = (H1-L1)/len12
H22 = highest(high,len2)[len12]
L22 = lowest(low,len2)[len12]
N22 = (H22-L22)/len12
H32 = highest(high,len2)
L32 = lowest(low,len2)
N32 = (H32-L32)/len2
dimen12 = (log(N12+N22)-log(N32))/log(2)
dimen2 = iff(N12>0 and N22>0 and N32>0,dimen12,nz(dimen12[1]))
alpha12 = exp(w*(dimen2-1))
oldalpha2 = alpha12>1?1:(alpha12<0.01?0.01:alpha12)
oldN2 = (2-oldalpha2)/oldalpha2
N4 = (((SC2-FC2)*(oldN2-1))/(SC2-1))+FC2
alpha_2 = 2/(N4+1)
alpha2 = alpha_2<2/(SC2+1)?2/(SC2+1):(alpha_2>1?1:alpha_2)
out2 = (1-alpha2)*nz(out2[1]) + alpha2*price2
tf = input(title="Resolution", defval = "current")
vamp = input(title="VolumeMA", defval=6)
vam = sma(volume, vamp)
up = high[3]>high[4] and high[4]>high[5] and high[2]<high[3] and high[1]<high[2] and volume[3]>vam[3]
down = low[3]<low[4] and low[4]<low[5] and low[2]>low[3] and low[1]>low[2] and volume[3]>vam[3]
fractalup = up ? high[3] : fractalup[1]
fractaldown = down ? low[3] : fractaldown[1]
fuptf = request.security(syminfo.tickerid,tf == "current" ? timeframe.period : tf, fractalup)
fdowntf = request.security(syminfo.tickerid,tf == "current" ? timeframe.period : tf, fractaldown)
plot(fuptf, "FractalUp", color=lime, linewidth=1, style=cross, transp=0, offset =-3, join=false)
plot(fdowntf, "FractalDown", color=red, linewidth=1, style=cross, transp=0, offset=-3, join=false)
buyEntry= nAMA[0]>nAMA2[0] and out[0]>out2[0]
sellEntry= nAMA[0]<nAMA2[0] and out[0]<out2[0]
if (buyEntry)
strategy.entry("Buy", strategy.long, comment="Long Position Entry")
if (sellEntry)
strategy.entry("Sell", strategy.short, comment="Short Position Entry")