Cette stratégie est basée sur les signaux de négociation de l’estimateur de Faytterro. L’estimateur de Faytterro est un indicateur qui permet de juger de la tendance en calculant le taux de convergence de la dispersion des prix. La stratégie combine les signaux de négociation de l’estimateur de Faytterro, ainsi que certaines conditions supplémentaires, pour émettre des signaux d’achat et de vente de différentes tailles au point idéal.
Le cœur de cette stratégie est le Faytterro Estimator. Sa méthode de calcul est la suivante: on calcule d’abord le taux de convergence discrétionnaire des prix CR, puis on construit une fonction secondaire qui, en fixant différents facteurs, est capable de refléter les caractéristiques de la courbe de CR.
Plus précisément, la stratégie commence par calculer le coefficient de convergence de la dispersion des prix (CR).*L’arithmétique de len, dizi, remplit les valeurs de la fonction secondaire. Les coefficients de la fonction secondaire reflètent les valeurs de CR. Ensuite, en observant les deux valeurs de len + 1 + 5 et len + 1 + 4, il est possible de déterminer si la fonction secondaire présente un virage. Si un virage se produit, un signal d’achat ou de vente est émis.
Sur cette base, la stratégie impose des conditions supplémentaires, telles que la définition d’une intervalle minimum de rupture des prix, pour éviter des transactions fréquentes; la définition de signaux d’entrée de différentes tailles. Ces conditions sont conçues pour filtrer les points de négociation non souhaitables.
Cette stratégie présente les avantages suivants:
L’indicateur Faytterro Estimator, qui est sensible aux fluctuations des prix, permet de détecter les changements de tendance plus tôt.
Construire des fonctions secondaires qui reflètent les caractéristiques de la courbe CR, rechercher des signaux de virage et juger de l’efficacité de la méthode intuitive.
Les signaux d’entrée de différentes tailles permettent d’effectuer des transactions pyramidales à des points idéaux, ce qui augmente l’espace de profit.
Augmentation du réglage de la distance minimale pour filtrer efficacement les signaux et éviter les transactions invalides fréquentes.
Il est très flexible et peut être optimisé pour différentes variétés.
Les stratégies sont claires et faciles à comprendre, le code est facile à lire et facile à apprendre.
Cette stratégie comporte également des risques à prendre en compte:
L’estimateur Faytterro présente des risques pour le curve-fitting et peut être moins efficace dans certaines variétés.
Le signal peut être trop large et conduire à une erreur de jugement en se basant uniquement sur le virage de la fonction secondaire.
La fréquence des transactions pyramidales augmente le fardeau des frais administratifs.
Le grand nombre de paramètres modifiables augmente la difficulté de réglage.
Le problème de l’incapacité à gérer efficacement les erreurs de jugement pendant les périodes de fluctuation des prix.
Il n’y a pas de mécanisme de stop-loss, ce qui pourrait entraîner une augmentation des pertes.
Les solutions pour gérer les risques sont les suivantes:
Optimisation des paramètres pour différentes variétés, amélioration de la robustesse.
Il faut ajouter des filtres sur d’autres indicateurs afin d’éviter les erreurs de jugement sur la base des seules virages.
Il est nécessaire de mettre en place un arrêt de perte raisonnable et de contrôler les pertes individuelles.
Les paramètres sont ajustés automatiquement via une méthode de Big Data.
Le site web de l’agence a été créé pour permettre aux utilisateurs d’accéder aux informations sur les tremblements de terre.
La logique de l’arrêt des pertes est raisonnable.
Les orientations d’optimisation de cette stratégie sont les suivantes:
Augmentation de la logique d’arrêt des pertes pour contrôler les pertes individuelles. Il est possible de définir un arrêt mobile ou un arrêt temporel.
L’ajout d’autres combinaisons d’indicateurs évite le risque d’erreur de jugement avec un seul indicateur Faytterro Estimator. Par exemple, le filtrage en combinaison avec des indicateurs tels que MACD, KDJ.
Ajout d’un mécanisme de confirmation afin d’éviter d’être stoppé par une reprise à court terme des prix.
Optimiser les paramètres ajustables, définir des paramètres raisonnables pour les différentes variétés. Des méthodes telles que l’algorithme génétique, l’optimisation Bayesian peuvent être utilisées.
Augmentation de l’identification des tremblements de terre et évitement des transactions en période de tremblement de terre. Les indicateurs tels que l’ATR, le DMI peuvent être identifiés.
Optimisation de la logique de la pyramide pour éviter la poursuite de la chute. Par exemple, l’ajustement dynamique de la marge de mise en fonction de la force de la tendance.
Tester les paramètres de différentes périodes de temps pour trouver la meilleure période.
Cette stratégie est basée sur les signaux de négociation du Faytterro Estimator pour prendre des décisions, ajouter des jugements logiques et configurer des signaux d’entrée de différentes tailles, formant une stratégie de suivi de la tendance avec des caractéristiques pyramidales. Cette stratégie est intuitive, facile à comprendre et a une forte capacité de capture de tendance.
/*backtest
start: 2022-09-21 00:00:00
end: 2023-08-10 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/
// © faytterro
//@version=5
// strategy("Faytterro Estimator Strategy", overlay=true, pyramiding=100)
src=input(hlc3,title="source")
len=input.int(10,title="faytterro estimator lenght", maxval=500)
len2=100
len3=input.float(500,title="minumum enrty-close gap (different direction)")
len4=input.float(500,title="minumum entry-entry gap (same direction)")
cr(x, y) =>
z = 0.0
weight = 0.0
for i = 0 to y-1
z:=z + x[i]*((y-1)/2+1-math.abs(i-(y-1)/2))
z/(((y+1)/2)*(y+1)/2)
cr= cr(src,2*len-1)
width=input.int(10, title="strong entry size", minval=1)
dizi = array.new_float(500)
// var line=array.new_line()
//if barstate.islast
for i=0 to len*2
array.set(dizi,i,(i*(i-1)*(cr-2*cr[1]+cr[2])/2+i*(cr[1]-cr[2])+cr[2]))
buy = array.get(dizi,len+1+5)>array.get(dizi,len+1+4) and array.get(dizi,len+1+5)<cr[len]
sell = array.get(dizi,len+1+5)<array.get(dizi,len+1+4) and array.get(dizi,len+1+5)>cr[len]
bb=buy? hlc3 : na
ss=sell? hlc3 : na
sbuy= buy and close<(close[ta.barssince(buy or sell)])[1]-len4 and close<ta.highest(fixnan(ss),len2)-len3*3
ssell= sell and close>(close[ta.barssince(buy or sell)])[1]+len4 and close>ta.lowest(fixnan(bb),len2)+len3*3
buy:= buy and close<(close[ta.barssince(buy or sell)])[1]-len4 and close<ta.highest(fixnan(ss),len2)-len3 //and close>ta.highest(fixnan(ss),len2)-len3*3
sell:= sell and close>(close[ta.barssince(buy or sell)])[1]+len4 and close>ta.lowest(fixnan(bb),len2)+len3 //and close<ta.lowest(fixnan(bb),len2)+len3*3
alertcondition(buy or sell)
if (sbuy)
strategy.entry("strong buy", strategy.long,width)
if (ssell)
strategy.entry("strong sell", strategy.short,width)
if (buy)
strategy.entry("buy", strategy.long)
if (sell)
strategy.entry("sell", strategy.short)