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
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 !!!
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
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); }
Gösterge hiçbir hata olmadan derlendi:

ve işe yarıyor -
------------------
Sadece sabit smoothalgorithms.mqh dosyasını kullanmanız gerekir - 4 numaralı gönderiye bakın
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz

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.
Author: Nikolay Kositsin