La Mala Adaptive Moving Average Strategy est une stratégie de négociation quantitative basée sur l’indicateur MESA Adaptive Moving Average de John Ehlers. La stratégie utilise les ondes positives pour prendre des décisions de négociation, en achetant au bas et en vendant au haut, en permettant aux ondes positives de s’adapter à différentes variétés et environnements de marché par des paramètres d’ajustement en glissement.
Les ondes positives sont déterminées par l’ombre projetée sur l’axe de la courbe par un vecteur tournant (appelé facteur). Le vecteur tourne à 360 degrés, complétant un cycle. Le vecteur génère un signal d’achat lorsqu’il passe par un angle et un signal de vente lorsqu’il passe par un autre angle. Ainsi, les décisions de négociation sont définies par des angles dans le domaine de la fréquence et non par des caractéristiques de la forme des vagues dans le domaine du temps, ce qui rend la stratégie plus robuste et s’adapte aux différentes variétés et aux différents environnements du marché.
Plus précisément, la stratégie commence par un traitement de lissage et de détrencement des prix, puis calcule les deux fractions de l’onde positive: la fraction homogène I et la fraction transversale Q. Ces deux fractions sont superposées et ondulées par un décalage de phase, pour obtenir les informations finales Re et Im. Re et Im reflètent la fréquence de l’onde positive, et une période de cycle peut être déduite par at.
Les stratégies d’adaptation des moyennes mobiles présentent les avantages suivants:
L’utilisation des ondes de synchronisation et des phases comme signaux de négociation rend la stratégie plus robuste et n’est pas affectée par la forme des ondes de l’espace-temps.
Les cycles et les paramètres peuvent être dynamiquement ajustés pour s’adapter aux changements du marché, avec une forte capacité d’adaptation.
Les courbes MAMA et FAMA ne dépendent que des caractéristiques du prix lui-même, sans retard, et peuvent être utilisées pour capturer les changements de tendance en temps opportun.
La sensibilité de la stratégie peut être adaptée à différents styles de négociation par paramétrage.
La logique de la stratégie est claire et simple, facile à comprendre et à modifier, adaptée à la recherche et à l’enseignement.
Les stratégies d’adaptation des moyennes mobiles présentent également les risques suivants:
En raison de la dépendance à la période et à la phase de la courbe de syntonie, un signal erroné est généré lorsque le prix est anormalement déformé.
Les limites de rigidité sont fixées lors du jugement des cycles, ce qui rend les changements de cycles insuffisamment lisses.
Les effets de cellule de positionnement et de cycle font que la courbe oscille autour des points critiques, et peut manquer les meilleures entrées et sorties.
Lorsque la volatilité du marché augmente, la capacité d’adaptation des paramètres et des courbes diminue.
En tant qu’indicateur technique, les stratégies sont sujettes à de fausses percées et à des signaux erronés à des endroits techniques importants.
Ces risques peuvent être atténués par la mise en place de paramètres plus fluides, le filtrage en combinaison avec d’autres indicateurs, l’ajustement de la taille des positions, etc.
Les stratégies d’adaptation des moyennes mobiles peuvent être optimisées dans les domaines suivants:
Amélioration des méthodes de calcul des cycles et des paramètres, afin de rendre leurs variations plus fluides et naturelles. Par exemple, des méthodes statistiques peuvent être introduites pour une meilleure modélisation des prix.
Le filtrage des signaux par des indicateurs tels que la fréquence d’oscillation, le nombre de transactions, etc., améliore la précision. Il peut également être combiné avec une compréhension de base de la fiabilité du signal.
Optimisation du paramétrage et du contrôle des points de glissement, réduction des coûts de transaction et amélioration de la stabilité du système.
L’introduction de méthodes telles que l’apprentissage automatique et les algorithmes génétiques pour optimiser dynamiquement les paramètres permet aux paramètres du système d’évoluer et de se mettre à jour en permanence.
La définition de différentes entrées et sorties, combinées à des tendances et à des retournements, permet de construire un portefeuille et d’améliorer la rentabilité durable.
La stratégie de la moyenne mobile adaptative utilise l’analyse des ondes de synthèse pour générer des signaux de négociation. Grâce à des paramètres de régulation dynamique, le système est capable de s’adapter automatiquement aux changements de l’environnement du marché.
/*backtest
start: 2022-11-30 00:00:00
end: 2023-12-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dongyun
//@version=4
strategy("自适应移动平均的MESA系统", overlay=true)
fastlimit = input(0.5,'')
slowlimit = input(0.05,'')
smooth = 0.0
detrender = 0.0
I1 = 0.0
Q1 = 0.0
JI = 0.0
JQ = 0.0
I2 = 0.0
Q2 = 0.0
Re = 0.0
Im = 0.0
period = 0.0
smoothperiod = 0.0
phase = 0.0
deltaphase = 0.0
alpha = 0.0
MAMA = 0.0
FAMA = 0.0
price = 0.0
price := (high + low)/2
PI = 2 * asin(1)
if (bar_index > 5)
smooth := (4*price + 3*price[1] + 2*price[2] + price[3])/10
detrender := (.0962*smooth + .5769*nz(smooth[2]) - .5769*nz(smooth[4]) - .0962*nz(smooth[6]))*(.075*nz(period[1]) + .54)
// compute InPhase and Quadrature components
Q1 := (.0962*detrender + .5769*nz(detrender[2]) - .5769*nz(detrender[4]) - .0962*nz(detrender[6]))*(.075*nz(period[1]) + .54)
I1 := nz(detrender[3])
// advance the pulse of i1 and q1 by 90 degrees
JI := (.0962*I1 + .5769*nz(I1[2]) - .5769*nz(I1[4]) - .0962*nz(I1[6]))*(.075*nz(period[1]) + .54)
JQ := (.0962*Q1 + .5769*nz(Q1[2]) - .5769*nz(Q1[4]) - .0962*nz(Q1[6]))*(.075*nz(period[1]) + .54)
//phase addition for 3-bar averaging
I2 := I1 - JQ
Q2 := Q1 + JI
//smooth the i and q components before applying
I2 := .2*I2 + .8*nz(I2[1])
Q2 := .2*Q2 + .8*nz(Q2[1])
// hymodyne discriminator
Re := I2*I2[1] + Q2*nz(Q2[1])
Im := I2*Q2[1] + Q2*nz(I2[1])
Re := .2*Re + .8*nz(Re[1])
Im := .2*Im + .8*nz(Im[1])
if (Im != 0 and Re != 0)
period := 2 * PI/atan(Im/Re)
if (period > 1.5 * nz(period[1]))
period := 1.5*nz(period[1])
if (period < .67*nz(period[1]))
period := .67*nz(period[1])
if (period < 6)
period := 6
if (period > 50)
period := 50
period := .2*period + .8*nz(period[1])
smoothperiod := .33*period + .67*nz(smoothperiod[1])
if (I1 != 0)
phase := (180/PI) * atan(Q1/I1)
deltaphase := nz(phase[1]) - phase
if (deltaphase < 1)
deltaphase := 1
alpha := fastlimit/deltaphase
if(alpha < slowlimit)
alpha := slowlimit
MAMA := alpha*price + (1 - alpha)*nz(MAMA[1])
FAMA := .5*alpha*MAMA + (1 - .5*alpha)*nz(FAMA[1])
if (FAMA < MAMA)
strategy.entry("Long", strategy.long)
else
if (FAMA > MAMA)
strategy.entry("Short", strategy.short)