Bonjour,
Cet oscillateur est très bien, mais j'ai des problèmes avec lui.
La fin de la ligne de signal, qui est calculée par la dernière bougie n'est pas affichée, donc il affiche toujours du rouge à l'heure actuelle. Lorsque je réinitialise l'oscillateur, il affiche de bonnes valeurs pendant un moment avec la fin de la ligne de signal, mais il repasse ensuite au rouge, (même s'il doit afficher le vert).
Que dois-je faire pour éliminer ce problème ?
J'ai essayé de le redéboguer mais cela n'a pas aidé.
Salutations,
InfiniteDesign
Quelles sont les meilleures valeurs pour les paramètres de cet indicateur ?
Merci beaucoup pour cet excellent indicateur.
J'ai trouvé la version précédente aussi intéressante et utile que la nouvelle, voire même plus...
Pourriez-vous, s'il vous plaît, porter l'ancienne version sur mq5 également ? J'apprécierais grandement que cela soit fait.
Merci d'avance !
Bonjour,
Cet oscillateur est très bien, mais j'ai des problèmes avec lui.
La fin de la ligne de signal, qui est calculée par la dernière bougie n'est pas affichée, donc il affiche toujours du rouge à l'heure actuelle. Lorsque je réinitialise l'oscillateur, il affiche de bonnes valeurs pendant un moment avec la fin de la ligne de signal, mais il repasse ensuite au rouge, (même s'il doit afficher le vert).
Que dois-je faire pour éliminer ce problème ?
J'ai essayé de le redéboguer mais cela n'a pas aidé.
Salutations,
InfiniteDesign
J'ai essayé de créer un signal à partir de cet indicateur, mais je n'y suis pas parvenu...
Une aide ?
//+------------------------------------------------------------------+ //|COG.mqh | //|Bruno Pio | //| http ://www.mql5.com //+------------------------------------------------------------------+ #property copyright "Bruno Pio" #property link "http://www.mql5.com" #property version "1.00" #include "..\ExpertSignal.mqh" // CExpertSignal se trouve dans le fichier ExpertSignal #property tester_indicator "CenterOfGravity.ex5" // description de l'assistant début //+------------------------------------------------------------------+ //| Description de la classe| //| Titre=Signaux du centre de gravité| //| Type=SignalAdvanced| //| Nom=Mon_COG| //| Nom court=CG| //| Classe=COG| //| Page=Non nécessaire| //| Paramètre=Période_,int,10,Période de calcul de la moyenne de l'indicateur. //| Paramètre=SmoothPeriod,int,3,Période de lissage de la ligne de signal | //| Paramètre=MA_Method_,ENUM_MA_METHOD,MODE_EMA,Méthode de signal | //| Paramètre=PrixAppliqué,int,1,Constante de prix | //+------------------------------------------------------------------+ // description de l'assistant end //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ class COG : public CExpertSignal { private: CiCustom m_COG; // L'indicateur en tant qu'objet //--- Paramètres configurables du module int m_Period_; // Période de calcul de la moyenne de l'indicateur int m_SmoothPeriod; // Période de lissage de la ligne de signal ENUM_MA_METHOD m_MA_Method_; // Méthode de calcul de la moyenne de la ligne de signal int m_AppliedPrice; // Constante de prix public: COG(void); ~COG(void); //--- Vérification de l'exactitude des données d'entrée bool ValidationSettings(); //--- Création d'indicateurs et de séries temporelles pour le module de signaux bool InitIndicators(CIndicators *indicators); //--- Accès aux données de l'indicateur double CG(const int index) const { return(m_COG.GetData(0,index)); } double Signal(const int index) const { return(m_COG.GetData(1,index)); } //--- Vérification des conditions d'achat et de vente virtual int LongCondition(); virtual int ShortCondition(); //--- Méthodes de paramétrage void Period_(int value) { m_Period_=value; } void SmoothPeriod(int value) { m_SmoothPeriod=value; } void MA_Method_(ENUM_MA_METHOD value) { m_MA_Method_=value; } void AppliedPrice(int value) { m_AppliedPrice=value; } protected: //--- Création d'un indicateur bool CreateCOG(CIndicators *indicators); }; //+------------------------------------------------------------------+ //| Constructeur| //+------------------------------------------------------------------+ COG::COG(void) : m_Period_(10), // Période de calcul de la moyenne de l'indicateur m_SmoothPeriod(3), // Période de lissage de la ligne de signal m_MA_Method_(MODE_EMA), // Méthode de calcul de la moyenne de la ligne de signal m_AppliedPrice(1) // Constante de prix { } //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ COG::~COG() { } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Vérifie les paramètres d'entrée et renvoie true si tout est OK | //+------------------------------------------------------------------+ bool COG:: ValidationSettings() { //--- Appeler la méthode de la classe de base if(!CExpertSignal::ValidationSettings()) return(false); //--- Périodes de contrôle, nombre de barres pour le calcul du MA >=1 if(m_Period_<1) { PrintFormat("Incorrect value set for one of the period! Period_=%d", m_Period_); return false; } //--- Périodes de contrôle, nombre de barres pour le calcul du MA >=1 if(m_SmoothPeriod<1) { PrintFormat("Incorrect value set for one of the period! m_SmoothPeriod=%d", m_SmoothPeriod); return false; } //--- Le type de lissage Fast MA doit être l'une des quatre valeurs de l'énumération if(m_MA_Method_!=MODE_SMA && m_MA_Method_!=MODE_EMA && m_MA_Method_!=MODE_SMMA && m_MA_Method_!=MODE_LWMA) { PrintFormat("Invalid type of smoothing of the fast MA!"); return false; } //--- m_AppliedPrice doit être valide if(m_AppliedPrice<1 || m_AppliedPrice>11) { PrintFormat("Invalid type of Price!"); return false; } //--- Toutes les vérifications sont terminées, tout va bien return true; } //+------------------------------------------------------------------+ //| Crée des indicateurs| //| Entrée : un pointeur vers une collection d'indicateurs. //| Sortie : true si succès, sinon false | //+------------------------------------------------------------------+ bool COG::InitIndicators(CIndicators *indicators) { //--- Contrôle standard de la collection d'indicateurs pour NULL if(indicators==NULL) return(false); //--- Initialisation des indicateurs et des séries temporelles dans les filtres supplémentaires if(!CExpertSignal::InitIndicators(indicators)) return(false); //--- Création de nos indicateurs if(!CreateCOG(indicators)) return(false); //--- Cette partie a été atteinte, la fonction a donc réussi, renvoyer vrai return(true); } //+------------------------------------------------------------------+ //| Crée l'indicateur "COG".| //+------------------------------------------------------------------+ bool COG::CreateCOG(CIndicators *indicators) { //--- Vérification du pointeur if(indicators==NULL) return(false); //--- Ajout d'un objet à la collection if(!indicators.Add(GetPointer(m_COG))) { printf(__FUNCTION__+": Error adding an object of the COG"); return(false); } //--- Paramètres de réglage du COG MqlParam parameters[5]; //--- parameters[0].type=TYPE_STRING; parameters[0].string_value="CenterOfGravity.ex5"; parameters[1].type=TYPE_INT; parameters[1].integer_value=m_Period_; // Période parameters[2].type=TYPE_INT; parameters[2].integer_value=m_SmoothPeriod; // Période de lissage de la ligne de signal parameters[3].type=TYPE_INT; parameters[3].integer_value=m_MA_Method_; // Méthode de calcul de la moyenne de la ligne de signal parameters[4].type=TYPE_INT; parameters[4].integer_value=m_AppliedPrice; // Constante de prix //--- Initialisation de l'objet if(!m_COG.Create(m_symbol.Name(),0,IND_CUSTOM,5,parameters)) { printf(__FUNCTION__+": Error initializing the object of the COG"); return(false); } //--- Nombre de tampons if(!m_COG.NumBuffers(2)) return(false); //--- Cette partie a été atteinte, la fonction a donc réussi, renvoyer vrai return(true); } //+------------------------------------------------------------------+ //| Renvoie la force du signal d'achat| //+------------------------------------------------------------------+ int COG::LongCondition() { int signal=0; //--- Pour le fonctionnement avec des ticks idx=0, pour le fonctionnement avec des barres formées idx=1 int idx=StartIndex(); //--- Valeurs des COG à la dernière barre formée double last_fast_value=CG(idx); double last_slow_value=Signal(idx); //--- Valeurs des COG à l'avant-dernière barre formée double prev_fast_value=CG(idx+1); double prev_slow_value=Signal(idx+1); //---Si CG > Signal && CG-1 < Signal-1 if((last_fast_value>last_slow_value) && (prev_fast_value<prev_slow_value)) { signal=100; // Il y a un signal d'achat } //--- Retourner la valeur du signal return(signal); } //+------------------------------------------------------------------+ //| Renvoie la force du signal de vente| //+------------------------------------------------------------------+ int COG::ShortCondition() { int signal=0; //--- Pour le fonctionnement avec des ticks idx=0, pour le fonctionnement avec des barres formées idx=1 int idx=StartIndex(); //--- Valeurs des COG à la dernière barre formée double last_fast_value=CG(idx); double last_slow_value=Signal(idx); //--- Valeurs des COG à l'avant-dernière barre formée double prev_fast_value=CG(idx+1); double prev_slow_value=Signal(idx+1); //---Si CG < Signal && CG-1 > Signal-1 if((last_fast_value<last_slow_value) && (prev_fast_value>prev_slow_value)) { signal=100; // Il y a un signal de vente } //--- Retourner la valeur du signal return(signal); }
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation


Centre de gravité Ehlers - Centre de gravité J. F. Ehlers:
Le centre de gravité est un oscillateur mis au point par John Ehlers et présenté dans le numéro de mai 2002 de Stocks & Commodities.
Author: Nikolay Kositsin