Hallo,
Dieser Oszillator ist ein toller Oszillator, aber ich habe Probleme damit.
Das Ende der Signallinie, die durch die letzte Kerze berechnet wird, wird nicht angezeigt, also zeigt er immer rot zum jetzigen Zeitpunkt. Wenn ich den Oszillator zurücksetze, zeigt er für einen Moment mit dem Ende der Signallinie gute Werte an, schaltet dann aber wieder auf rot um (auch wenn er eigentlich grün anzeigen müsste).
Was sollte ich tun, um dieses Problem zu beheben?
Ich habe versucht, ihn neu zu debuggen, aber das hat nicht geholfen.
Grüßt,
InfiniteDesign
Vielen herzlichen Dank für diesen großartigen Indikator.
Ich fand die vorherige Version genauso interessant und nützlich wie die neue, oder sogar noch mehr.
Könnten Sie bitte den alten Indikator auch auf mq5 portieren? Ich würde es sehr zu schätzen wissen, wenn das möglich wäre.
Prost und vielen Dank im Voraus!
Hallo,
Dieser Oszillator ist ein toller Oszillator, aber ich habe Probleme damit.
Das Ende der Signallinie, die durch die letzte Kerze berechnet wird, wird nicht angezeigt, also zeigt er immer rot zum jetzigen Zeitpunkt. Wenn ich den Oszillator zurücksetze, zeigt er für einen Moment mit dem Ende der Signallinie gute Werte an, schaltet dann aber wieder auf rot um (auch wenn er eigentlich grün anzeigen müsste).
Was sollte ich tun, um dieses Problem zu beheben?
Ich habe versucht, ihn neu zu debuggen, aber das hat nicht geholfen.
Grüßt,
InfiniteDesign
Ich habe versucht, ein Signal aus diesem Indikator zu erstellen, aber es ist mir nicht gelungen...
Kann mir jemand helfen?
//+------------------------------------------------------------------+ //|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 ist in der Datei ExpertSignal #property tester_indicator "CenterOfGravity.ex5" // Assistentenbeschreibung Start //+------------------------------------------------------------------+ //| Beschreibung der Klasse| //| Titel=Signale des Schwerpunkts| //| Typ=SignalAdvanced| //| Name=Mein_COG| //| Kurzname=CG| //| Klasse=COG| //| Seite=Nicht benötigt| //| Parameter=Period_,int,10,Indikator Mittelungszeitraum | //| Parameter=Glättungsperiode,int,3,Glättungsperiode der Signalleitung | //| Parameter=MA_Methode_,ENUM_MA_METHOD,MODE_EMA,Signalmethode | //| Parameter=AngewandterPreis,int,1,Preiskonstante | //+------------------------------------------------------------------+ // Beschreibung des Assistenten Ende //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ class COG : public CExpertSignal { private: CiCustom m_COG; // Der Indikator als Objekt //--- Konfigurierbare Modulparameter int m_Period_; // Mittelungszeitraum des Indikators int m_SmoothPeriod; // Glättungszeitraum der Signalleitung ENUM_MA_METHOD m_MA_Method_; // Mittelungsmethode für Signalleitungen int m_AppliedPrice; // Preiskonstante public: COG(void); ~COG(void); //--- Überprüfung der Korrektheit der Eingabedaten bool ValidationSettings(); //--- Erstellen von Indikatoren und Zeitreihen für das Modul der Signale bool InitIndicators(CIndicators *indicators); //--- Zugang zu Indikatordaten double CG(const int index) const { return(m_COG.GetData(0,index)); } double Signal(const int index) const { return(m_COG.GetData(1,index)); } //--- Überprüfung der Kauf- und Verkaufsbedingungen virtual int LongCondition(); virtual int ShortCondition(); //--- Methoden zur Einstellung 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: //--- Indikator erstellen bool CreateCOG(CIndicators *indicators); }; //+------------------------------------------------------------------+ //| Konstruktor| //+------------------------------------------------------------------+ COG::COG(void) : m_Period_(10), // Mittelungszeitraum des Indikators m_SmoothPeriod(3), // Glättungszeitraum der Signalleitung m_MA_Method_(MODE_EMA), // Mittelungsmethode für Signalleitungen m_AppliedPrice(1) // Preiskonstante { } //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ COG::~COG() { } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Prüft die Eingabeparameter und gibt true zurück, wenn alles in Ordnung ist. //+------------------------------------------------------------------+ bool COG:: ValidationSettings() { //--- Aufruf der Basisklassenmethode if(!CExpertSignal::ValidationSettings()) return(false); //--- Perioden prüfen, Anzahl der Balken für die Berechnung des MA >=1 if(m_Period_<1) { PrintFormat("Incorrect value set for one of the period! Period_=%d", m_Period_); return false; } //--- Perioden prüfen, Anzahl der Balken für die Berechnung des MA >=1 if(m_SmoothPeriod<1) { PrintFormat("Incorrect value set for one of the period! m_SmoothPeriod=%d", m_SmoothPeriod); return false; } //--- Der Typ der schnellen MA-Glättung muss einer der vier Werte der Aufzählung sein 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 muss gültig sein if(m_AppliedPrice<1 || m_AppliedPrice>11) { PrintFormat("Invalid type of Price!"); return false; } //--- Alle Prüfungen sind abgeschlossen, alles ist in Ordnung return true; } //+------------------------------------------------------------------+ //| Erstellt Indikatoren| //| Eingabe: ein Zeiger auf eine Sammlung von Indikatoren //| Ausgabe: true bei Erfolg, sonst false | //+------------------------------------------------------------------+ bool COG::InitIndicators(CIndicators *indicators) { //--- Standardprüfung der Sammlung von Indikatoren auf NULL if(indicators==NULL) return(false); //--- Initialisierung von Indikatoren und Zeitreihen in zusätzlichen Filtern if(!CExpertSignal::InitIndicators(indicators)) return(false); //--- Erstellung unserer Indikatoren if(!CreateCOG(indicators)) return(false); //--- Erreicht diesen Teil, also war die Funktion erfolgreich, Rückgabe true return(true); } //+------------------------------------------------------------------+ //| Erzeugt den Indikator "COG".| //+------------------------------------------------------------------+ bool COG::CreateCOG(CIndicators *indicators) { //--- Überprüfung des Zeigers if(indicators==NULL) return(false); //--- Hinzufügen eines Objekts zur Sammlung if(!indicators.Add(GetPointer(m_COG))) { printf(__FUNCTION__+": Error adding an object of the COG"); return(false); } //--- Einstellung der Parameter des 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_; // Zeitraum parameters[2].type=TYPE_INT; parameters[2].integer_value=m_SmoothPeriod; // Glättungszeitraum der Signalleitung parameters[3].type=TYPE_INT; parameters[3].integer_value=m_MA_Method_; // Mittelungsmethode für Signalleitungen parameters[4].type=TYPE_INT; parameters[4].integer_value=m_AppliedPrice; // Preiskonstante //--- Objektinitialisierung if(!m_COG.Create(m_symbol.Name(),0,IND_CUSTOM,5,parameters)) { printf(__FUNCTION__+": Error initializing the object of the COG"); return(false); } //--- Anzahl der Puffer if(!m_COG.NumBuffers(2)) return(false); //--- Erreicht diesen Teil, also war die Funktion erfolgreich, Rückgabe true return(true); } //+------------------------------------------------------------------+ //| Gibt die Stärke des Kaufsignals zurück| //+------------------------------------------------------------------+ int COG::LongCondition() { int signal=0; //--- Bei Betrieb mit Ticks idx=0, bei Betrieb mit geformten Balken idx=1 int idx=StartIndex(); //--- Werte der COGs beim letzten gebildeten Balken double last_fast_value=CG(idx); double last_slow_value=Signal(idx); //--- Werte der COGs am vorletzten gebildeten Balken double prev_fast_value=CG(idx+1); double prev_slow_value=Signal(idx+1); //---wenn CG > Signal && CG-1 < Signal-1 if((last_fast_value>last_slow_value) && (prev_fast_value<prev_slow_value)) { signal=100; // Es gibt ein Signal zum Kauf } //--- Rückgabe des Signalwertes return(signal); } //+------------------------------------------------------------------+ //| Gibt die Stärke des Verkaufssignals zurück| //+------------------------------------------------------------------+ int COG::ShortCondition() { int signal=0; //--- Bei Betrieb mit Ticks idx=0, bei Betrieb mit geformten Balken idx=1 int idx=StartIndex(); //--- Werte der COGs beim letzten gebildeten Balken double last_fast_value=CG(idx); double last_slow_value=Signal(idx); //--- Werte der COGs am vorletzten gebildeten Balken double prev_fast_value=CG(idx+1); double prev_slow_value=Signal(idx+1); //---wenn CG < Signal && CG-1 > Signal-1 if((last_fast_value<last_slow_value) && (prev_fast_value>prev_slow_value)) { signal=100; // Es gibt ein Signal zum Verkauf } //--- Rückgabe des Signalwertes return(signal); }
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.


"Center of Gravity" von J. F. Ehlers:
Der "Center of Gravity" (Gravitätszentrum) ist ein Oszillator, der von John Ehlers entwickelt und im Magazin "Stocks & Commodities" (Mai, 2002) veröffentlicht wurde.
Autor: Nikolay Kositsin