L'oscillateur de parabole à la recherche de stratégies de hauts et de bas

Auteur:ChaoZhang est là., Date: 2024-02-20 16:01:12 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie identifie les hauts et les bas prix en calculant les moyennes mobiles et les variations sur différentes périodes de temps pour déterminer la tendance et la volatilité.

La logique de la stratégie

La logique de base de cette stratégie est de calculer les moyennes mobiles et les variances sur différentes périodes de temps récentes. Plus précisément, elle calcule les moyennes mobiles de 5 jours, 4 jours et 3 jours (ma, mb, mc) et les variances (da, db, dc). Elle compare ensuite les tailles et sélectionne la période avec la plus grande variance pour représenter la tendance actuelle. Enfin, elle multiplie la variance au carré de la période représentative par sa moyenne mobile pour produire la courbe finale wg.

Ainsi, lorsque le prix évolue à la hausse ou à la baisse, la période représentative et sa variance changeront de façon significative, ce qui entraînera un changement marqué de l'évolution des prix, permettant d'identifier les hauts et les bas.

Analyse des avantages

Cette idée de juger des changements de tendance sur la base de différentes périodes est efficace et peut identifier clairement les points d'inflexion des prix.

Le calcul de la moyenne mobile et de la variance est également simple et efficace.

Analyse des risques

Les périodes utilisées dans cette stratégie sont courtes. À moyen et long terme, le jugement peut ne pas être suffisamment précis et complet. Les fluctuations de prix à court terme peuvent entraîner des erreurs de jugement.

En outre, la pondération des moyennes mobiles et des variances affecte les résultats du jugement.

Directions d'optimisation

Plus de périodes de durée différente pourraient être ajoutées pour former une combinaison afin de rendre l'arrêt plus complet, par exemple 10 jours, 20 jours à moyen et à long terme.

Des régimes de pondération différents pourraient également être testés pour rendre le réglage de la pondération plus flexible.

En outre, d'autres indicateurs pourraient être intégrés, comme le volume anormal des transactions, afin d'éviter d'être induit en erreur par le trading d'arbitrage.

Conclusion

La logique générale de cette stratégie est claire et facile à comprendre, en utilisant des moyennes mobiles et des variances pour juger de la tendance et de la volatilité des prix, puis en les combinant pour produire une courbe qui peut clairement identifier les hauts et les bas. Un tel jugement combiné à plusieurs périodes peut capturer efficacement les caractéristiques du marché à court et à long terme, améliorant ainsi la précision de la détection des points d'inflexion.


/*backtest
start: 2024-02-12 00:00:00
end: 2024-02-19 00:00:00
period: 12h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("x²", overlay=false)


a1=(close[2]-close[3])/1
a2=(close[1]-close[3])/4
a3=(close[0]-close[3])/9

b1=(close[3]-close[4])/1
b2=(close[2]-close[4])/4
b3=(close[1]-close[4])/9
b4=(close[0]-close[4])/16

c1=(close[4]-close[5])/1
c2=(close[3]-close[5])/4
c3=(close[2]-close[5])/9
c4=(close[1]-close[5])/16
c5=(close[0]-close[5])/25

ma=(a1+a2+a3)/3
da=(a1-ma)*(a1-ma)
da:=da+(a2-ma)*(a2-ma)
da:=da+(a3-ma)*(a3-ma)
da:=sqrt(da)
da:=min(2, da)
da:=1-da/2
da:=max(0.001, da)


mb=(b1+b2+b3+b4)/4
db=(b1-mb)*(b1-mb)
db:=db+(b2-mb)*(b2-mb)
db:=db+(b3-mb)*(b3-mb)
db:=db+(b4-mb)*(b4-mb)
db:=sqrt(db)
db:=min(2, db)
db:=1-db/2
db:=max(0.001, db)

mc=(c1+c2+c3+c4+c5)/5
dc=(c1-mc)*(c1-mc)
dc:=dc+(c2-mc)*(c2-mc)
dc:=dc+(c3-mc)*(c3-mc)
dc:=dc+(c4-mc)*(c4-mc)
dc:=dc+(c5-mc)*(c5-mc)
dc:=sqrt(dc)
dc:=min(2, dc)
dc:=1-dc/2
dc:=max(0.001, dc)



g=close
if(da>db and da>dc)
    g:=da*da*ma
else
    if(db > da and db > dc)
        g:=db*db*mb
    else
        g:=dc*dc*mc

wg=wma(g, 2)
plot(wg)
plot(0, color=black)


longCondition = true //crossover(sma(close, 14), sma(close, 28))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = true //crossunder(sma(close, 14), sma(close, 28))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)

Plus de