Bonjour à tous,
J’aimerai créer deux screeners (j’espère être clair dans ma demande)
Un screener sur base de l’indicateur GMMA de Daryl Guppy qui détecte le rapprochement ( la compression ) des moyens mobiles exponentiels courtes 3,5,8,10,12,15 et Moyens mobiles exponentiels longues 30,35,40,45,50,60. Ceci sur quelques jours.
Un autre screener sur les croissements de ces des moyens mobiles exponentiels courtes 3,5,8,10,12,15 et Moyens mobiles exponentiels longues 30,35,40,45,50,60. ( Les moyens mobiles courtes croissent les moyens mobiles longues )
N’étant pas très doué en programmation ou plutôt débutant, j’en appel à votre aide.
Merci pour vos réponses.
Bien à vous
Phyxius
Bonsoir, le moteur de recherche du site retourne ce sujet parmi d’autres: https://www.prorealcode.com/topic/screener-avec-lindicateur-guppy/
qui semble être une base de départ sous forme d’indicateur. Resterait à définir exactement les compressions et/ou les croisements pour créer les conditions des screeners, et remplacer la dernière ligne “return” par une ligne screener sur les conditions exactes.
On me souffle dans l’oreillette: “Pour le croisement on prend la plus longue des courtes et la plus longue des longues“, à tester:
a = close
//c1 = ExponentialAverage[3](a)
//c2 = ExponentialAverage[5](a)
//c3 = ExponentialAverage[8](a)
//c4 = ExponentialAverage[10](a)
//c5 = ExponentialAverage[12](a)
c6 = ExponentialAverage[15](a)
//c7 = ExponentialAverage[30](a)
//c8 = ExponentialAverage[35](a)
//c9 = ExponentialAverage[40](a)
//c10 = ExponentialAverage[45](a)
//c11 = ExponentialAverage[50](a)
c12 = ExponentialAverage[60](a)
croisement = (c6 crosses over c12) or (c6 crosses under c12)
screener[croisement]
Bonjour
Merci pour ta réponse Noobywan super, j’ai regardé, super pour l’indicateur et le croissement des moyens mobiles, je vais faire des tests avec ce screener.
Pour la compression, le rapprochement des moyens mobiles exponentiels courtes 3,5,8,10,12,15 et Moyens mobiles exponentiels longues 30,35,40,45,50,60 sur quelques jours, sur quoi dois-je partir ?
Pour détecter quand les moyens mobiles exponentiels courtes 3,5,8,10,12,15 sont très très proche les une des autres, et la même chose pour les Moyens mobiles exponentiels longues 30,35,40,45,50,60.
Merci pour vos réponses.
Bien à vous
Phyxius
J’ ai écrit celui ci qui donne un bon backtest sur le DAX en Daily mais le code plus lourd et je suis pas sur que tout s’exécute correctement
// Définition des paramètres du code //
DEFPARAM CumulateOrders = False
// Empêche le système de placer de nouveaux ordres sur les jours de la semaine spécifiés
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
// Moyennes Mobiles Court Terme //
Indic1 = ExponentialAverage[3]
Indic2 = ExponentialAverage[5]
Indic3= ExponentialAverage[8]
Indic4 = ExponentialAverage[10]
Indic5 = ExponentialAverage[12]
Indic6 = ExponentialAverage[15]
// Moyennes Mobiles Long Terme //
Indic8 = ExponentialAverage[30]
Indic9 = ExponentialAverage[35]
Indic10 = ExponentialAverage[40]
Indic11 = ExponentialAverage[45]
Indic12 = ExponentialAverage[50]
Indic14 = ExponentialAverage[60]
// Conditions pour ouvrir une position acheteuse
indicator15 = Stochastic[21,3](close)
indicator16 = Average[3](Stochastic[21,3](close))
indicator17 = Stochastic[5,3](close)
indicator18 = Average[2](Stochastic[5,3](close))
c1 = (indicator15 > indicator16)
c3 = (indicator17 > indicator18)
c5 = Indic1> Indic2 and Indic2> Indic3 and Indic3> Indic4 and Indic4> Indic5 and Indic5> Indic6
c7 = Indic8> Indic9 and Indic9> Indic10 and Indic10> Indic11 and Indic11> Indic12 and Indic12> Indic14
//c9 = Indic6 crosses over Indic14
// Conditions d'Achat //
IF c1 and c3 and c5 and not daysForbiddenEntry THEN
BUY 1 CONTRACT AT MARKET
// Stops et objectifs
SET TARGET PPROFIT 481
SET STOP PTRAILING 41
ENDIF
// Conditions pour ouvrir une position vendeuse //
c2 = (indicator15 < indicator16)
c4 = (indicator17 < indicator18)
c6 = Indic1< Indic2 and Indic2< Indic3 and Indic3< Indic4 and Indic4< Indic5 and Indic5< Indic6
c8 = Indic8< Indic9 and Indic9< Indic10 and Indic10< Indic11 and Indic11< Indic12 and Indic12< Indic14
c10 = Indic6 crosses under Indic14
// Conditions de Vente //
IF c2 and c4 and c6 and not daysForbiddenEntry THEN
SELLSHORT 1 CONTRACT AT MARKET
// Stop et objectifs //
SET TARGET PPROFIT 311
SET STOP pTRAILING 30
ENDIF
L’indicateur type guppy n’est rien de plus qu’un ensemble de plusieurs EMA comme vous le constatez, donc pourquoi devoir utiliser toutes ces EMA alors que les conditions recherchées ne sont basées que sur les deux plus proches ou éloignées.
Pour le resserrement de 2 EMA, tu peux tester ce code, on règle la quantité de période au début de celui-ci pour tester le rapprochement en pourcentage :
//reserrement de MA en pourcentage sur x périodes
period = 5
percentage = 0.25
a = exponentialaverage[15]
c = exponentialaverage[60]
upper = max(a,c)
lower = min(a,c)
d = ((upper - lower) / close) *100
e = summation[period](d <= percentage)=period
SCREENER[e]
Merci Xavier, Merci Nicolas pour vos réponses.