Göstergeler: Ehlers Ağırlık Merkezi - Ağırlık Merkezi J. F. Ehlers

 

Ehlers Ağırlık Merkezi - Ağırlık Merkezi J. F. Ehlers:

Ağırlık Merkezi, John Ehlers tarafından geliştirilen ve Stocks & Commodities'in Mayıs 2002 sayısında yer alan bir osilatördür.

Ehlers Ağırlık Merkezi - Ağırlık Merkezi J. F. Ehlers

Author: Nikolay Kositsin

 
Yararlı! ...Renk değişimi için kriterleri bilmek istiyorum.
 

Merhaba,

Bu osilatör harika bir osilatör, ancak bununla ilgili sorunlarım var.

Son mum tarafından hesaplanan sinyal hattının sonu gösterilmez, bu nedenle şu anda her zaman kırmızı gösterir. Osilatörü sıfırladığımda, sinyal hattının sonu ile bir an için iyi değerler gösteriyor, ancak daha sonra kırmızıya geri dönüyor (yeşil göstermesi gerekse bile).

Bu sorunu ortadan kaldırmak için ne yapmalıyım?

Yeniden hata ayıklamayı denedim ama işe yaramadı.

Selamlar,

InfiniteDesign

 
Ona göre mehor ve sembol ve zaman dilimi ile çalışan bu gösterge.
Bu göstergenin parametreleri için en iyi değerler nelerdir?
 

Bu harika gösterge için çok çok teşekkürler.

Önceki sürümü yenisi kadar ilginç ve kullanışlı buldum, hatta daha da fazla.

Lütfen eskisini de mq5'e taşıyabilir misiniz? Yapılabilirse çok memnun olurum.


Şerefe ve şimdiden teşekkürler !!!

 
Bu gösterge deterministik değildir. Aynı veri noktalarını farklı zamanlarda iki kez sorarsanız farklı yanıtlar alırsınız. Geçerli zamana yaklaştıkça sapma daha büyüktür. Tutarsızlık 3,7 x 10^-04 kadar büyük olabilir.
 
InfiniteDesign:

Merhaba,

Bu osilatör harika bir osilatör, ancak bununla ilgili sorunlarım var.

Son mum tarafından hesaplanan sinyal hattının sonu gösterilmez, bu nedenle şu anda her zaman kırmızı gösterir. Osilatörü sıfırladığımda, sinyal hattının sonu ile bir an için iyi değerler gösteriyor, ancak daha sonra kırmızıya geri dönüyor (yeşil göstermesi gerekse bile).

Bu sorunu ortadan kaldırmak için ne yapmalıyım?

Yeniden hata ayıklamayı denedim ama işe yaramadı.

Selamlar,

InfiniteDesign

Ben de aynı sorunu yaşıyorum.
 

Bu göstergeden bir Sinyal oluşturmaya çalıştım ama başaramadım ...

Herhangi bir yardım?


//+------------------------------------------------------------------+
//|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, ExpertSignal dosyasındadır
#property tester_indicator "CenterOfGravity.ex5"
// sihirbaz açıklaması başlangıç
//+------------------------------------------------------------------+
//| Sınıfın açıklaması|
//| Başlık=Ağırlık Merkezi Sinyalleri|
//| Type=SignalAdvanced|
//| Name=My_COG|
//| ShortName=CG|
//| Sınıf=COG|
//| Sayfa=Gerekli değil|
//| Parametre=Period_,int,10,Gösterge ortalama süresi |
//| Parametre=SmoothPeriod,int,3,Sinyal hattı yumuşatma süresi |
//| Parametre=MA_Method_,ENUM_MA_METHOD,MODE_EMA,Sinyal Yöntemi |
//| Parametre=AppliedPrice,int,1,Fiyat sabiti |
//+------------------------------------------------------------------+
// sihirbaz açıklaması end
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
class COG : public CExpertSignal
  {
private:
CiCustom             m_COG;               // Bir nesne olarak gösterge
//--- Yapılandırılabilir modül parametreleri
   int               m_Period_;           // Gösterge ortalama süresi
   int               m_SmoothPeriod;      // Sinyal hattı yumuşatma periyodu 
   ENUM_MA_METHOD    m_MA_Method_;        // Sinyal hattı ortalama yöntemi
   int               m_AppliedPrice;      // Fiyat sabiti
public:
                     COG(void);
                    ~COG(void);
//--- Giriş verilerinin doğruluğunun kontrol edilmesi
   bool              ValidationSettings();
//--- Sinyal modülü için göstergeler ve zaman serileri oluşturma
   bool              InitIndicators(CIndicators *indicators);
//--- Gösterge verilerine erişim
   double            CG(const int index)                 const { return(m_COG.GetData(0,index)); }
   double            Signal(const int index)             const { return(m_COG.GetData(1,index)); }   
//--- Alış ve satış koşullarının kontrol edilmesi
   virtual int       LongCondition();
   virtual int       ShortCondition();
//--- Ayarlama için yöntemler
   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:
   //--- Gösterge oluşturma
   bool              CreateCOG(CIndicators *indicators);



  };
//+------------------------------------------------------------------+
//| Kurucu|
//+------------------------------------------------------------------+
COG::COG(void) :           m_Period_(10),                // Gösterge ortalama süresi
                           m_SmoothPeriod(3),            // Sinyal hattı yumuşatma periyodu 
                           m_MA_Method_(MODE_EMA),       // Sinyal hattı ortalama yöntemi
                           m_AppliedPrice(1)             // Fiyat sabiti
  {
  }
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
COG::~COG()
  {
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Giriş parametrelerini kontrol eder ve her şey yolundaysa true döndürür |
//+------------------------------------------------------------------+
bool COG:: ValidationSettings()
  {
   //--- Temel sınıf yöntemini çağırın
   if(!CExpertSignal::ValidationSettings())  return(false);
   //--- Dönemleri kontrol edin, MA'nın hesaplanması için çubuk sayısı >=1
   if(m_Period_<1)
     {
      PrintFormat("Incorrect value set for one of the period! Period_=%d",
                  m_Period_);
      return false;
     }
//--- Dönemleri kontrol edin, MA'nın hesaplanması için çubuk sayısı >=1
   if(m_SmoothPeriod<1)
     {
      PrintFormat("Incorrect value set for one of the period! m_SmoothPeriod=%d",
                  m_SmoothPeriod);
      return false;
     }
//--- Hızlı MA yumuşatma türü numaralandırmanın dört değerinden biri olmalıdır
   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 geçerli olmalıdır
   if(m_AppliedPrice<1 || m_AppliedPrice>11) 
     {
      PrintFormat("Invalid type of Price!");
      return false;
     }
//--- Tüm kontroller tamamlandı, her şey yolunda
   return true;
  }
//+------------------------------------------------------------------+
//| Göstergeler oluşturur|
//| Girdi: göstergeler koleksiyonuna bir işaretçi |
//| Çıktı: başarılı ise true, aksi takdirde false |
//+------------------------------------------------------------------+
bool COG::InitIndicators(CIndicators *indicators)
  {
//--- NULL için gösterge koleksiyonunun standart kontrolü
   if(indicators==NULL) return(false);
//--- Ek filtrelerde göstergeleri ve zaman serilerini başlatma
   if(!CExpertSignal::InitIndicators(indicators)) return(false);
//--- Göstergelerimizi oluşturma
   if(!CreateCOG(indicators))                  return(false);   
//--- Bu kısma ulaşıldı, yani işlev başarılı oldu, true döndür
   return(true);
  }
//+------------------------------------------------------------------+
//| "COG" göstergesini oluşturur|
//+------------------------------------------------------------------+
bool COG::CreateCOG(CIndicators *indicators)
  {
//--- İşaretçinin kontrol edilmesi
   if(indicators==NULL) return(false);
//--- Koleksiyona bir nesne ekleme
   if(!indicators.Add(GetPointer(m_COG)))
     {
      printf(__FUNCTION__+": Error adding an object of the COG");
      return(false);
     }
//--- COG parametrelerinin ayarlanması
   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_;                 // Dönem
   parameters[2].type=TYPE_INT;
   parameters[2].integer_value=m_SmoothPeriod;            // Sinyal hattı yumuşatma periyodu
   parameters[3].type=TYPE_INT;
   parameters[3].integer_value=m_MA_Method_;              // Sinyal hattı ortalama yöntemi
   parameters[4].type=TYPE_INT;
   parameters[4].integer_value=m_AppliedPrice;            // Fiyat sabiti
//--- Nesne başlatma 
   if(!m_COG.Create(m_symbol.Name(),0,IND_CUSTOM,5,parameters))
     {
      printf(__FUNCTION__+": Error initializing the object of the COG");
      return(false);
     }
//--- Tampon sayısı
   if(!m_COG.NumBuffers(2)) return(false);
//--- Bu kısma ulaşıldı, yani işlev başarılı oldu, true döndür
   return(true);
  }
//+------------------------------------------------------------------+
//| Satın alma sinyalinin gücünü döndürür|
//+------------------------------------------------------------------+
int COG::LongCondition()
  {
   int signal=0;
//--- Tiklerle işlem için idx=0, oluşan çubuklarla işlem için idx=1
   int idx=StartIndex();
//--- Son oluşan çubuktaki COG'lerin değerleri
   double last_fast_value=CG(idx);
   double last_slow_value=Signal(idx);
//--- Oluşan bir çubuk hariç son çubuktaki COG değerleri
   double prev_fast_value=CG(idx+1);
   double prev_slow_value=Signal(idx+1);   
//---Eğer CG > Sinyal && CG-1 < Sinyal-1
   if((last_fast_value>last_slow_value) && (prev_fast_value<prev_slow_value))
     {
      signal=100; // Satın almak için bir sinyal var
     }
//--- Sinyal değerini döndür
   return(signal);
  }
//+------------------------------------------------------------------+
//| Satış sinyalinin gücünü döndürür|
//+------------------------------------------------------------------+
int COG::ShortCondition()
  {
   int signal=0;
//--- Tiklerle işlem için idx=0, oluşan çubuklarla işlem için idx=1
   int idx=StartIndex();
//--- Son oluşan çubuktaki COG'lerin değerleri
   double last_fast_value=CG(idx);
   double last_slow_value=Signal(idx);
//--- Oluşan bir çubuk hariç son çubuktaki COG değerleri
   double prev_fast_value=CG(idx+1);
   double prev_slow_value=Signal(idx+1);   
//---Eğer CG < Sinyal && CG-1 > Sinyal-1 ise
   if((last_fast_value<last_slow_value) && (prev_fast_value>prev_slow_value))
     {
      signal=100; // Satış için bir sinyal var
     }
//--- Sinyal değerini döndür
   return(signal);
  }
 
ilginç bir şey... savaş koşullarında algoritmayı belirlemek gerekiyor
 

Gösterge hiçbir hata olmadan derlendi:

ve işe yarıyor -

------------------

Sadece sabit smoothalgorithms.mqh dosyasını kullanmanız gerekir - gönderiye bakın


Indicators: T3Taotra_HTF
Indicators: T3Taotra_HTF
  • 2016.06.30
  • www.mql5.com
T3Taotra_HTF: Author: Nikolay Kositsin...