Здравствуйте,
Этот осциллятор отличный, но у меня с ним проблемы.
Конец сигнальной линии, который рассчитывается по последней свече, не отображается, поэтому он всегда показывает красный цвет в настоящее время. Когда я перезагружаю осциллятор, он на мгновение показывает хорошие значения с концом сигнальной линии, но затем снова переключается на красный цвет (даже если он должен показывать зеленый).
Что я должен сделать, чтобы устранить эту проблему?
Я пытался отладить его заново, но это не помогло.
Приветствую,
InfiniteDesign
Какие наилучшие значения для параметров этого индикатора?
Большое спасибо за этот замечательный индикатор.
Я нашел предыдущую версию такой же интересной и полезной, как и новую, или даже более того.
Не могли бы вы перенести старую версию и на mq5? Я был бы очень признателен, если бы это было возможно.
Будьте здоровы, и спасибо заранее !!!
Здравствуйте,
Этот осциллятор отличный, но у меня с ним проблемы.
Конец сигнальной линии, который рассчитывается по последней свече, не отображается, поэтому он всегда показывает красный цвет в настоящее время. Когда я перезагружаю осциллятор, он на мгновение показывает хорошие значения с концом сигнальной линии, но затем снова переключается на красный цвет (даже если он должен показывать зеленый).
Что я должен сделать, чтобы устранить эту проблему?
Я пытался отладить его заново, но это не помогло.
Приветствую,
InfiniteDesign
Я пытался создать Сигнал из этого индикатора, но не смог...
Есть помощь?
//+------------------------------------------------------------------+ //|COG.mqh | //|Бруно Пио | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Bruno Pio" #property link "http://www.mql5.com" #property version "1.00" #include "..\ExpertSignal.mqh" // CExpertSignal находится в файле ExpertSignal #property tester_indicator "CenterOfGravity.ex5" // начало описания мастера //+------------------------------------------------------------------+ //| Описание класса| //| Название=Сигналы центра тяжести| //| Type=SignalAdvanced| //| Name=My_COG| //| ShortName=CG| //| Class=COG| //| Страница=Не нужна| //| Параметр=Period_,int,10, Период усреднения индикатора | //| Параметр=SmoothPeriod, int, 3, Период сглаживания сигнальной линии | //| Параметр=MA_Method_,ENUM_MA_METHOD,MODE_EMA,Signal Method | //| Параметр=AppliedPrice, int, 1, константа цены | //+------------------------------------------------------------------+ // описание мастера end //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ class COG : public CExpertSignal { private: CiCustom m_COG; // Индикатор как объект //--- Настраиваемые параметры модуля int m_Period_; // Период усреднения индикатора int m_SmoothPeriod; // Период сглаживания сигнальной линии ENUM_MA_METHOD m_MA_Method_; // Метод усреднения сигнальных линий int m_AppliedPrice; // Постоянная цена public: COG(void); ~COG(void); //--- Проверка корректности входных данных bool ValidationSettings(); //--- Создание индикаторов и временных рядов для модуля сигналов bool InitIndicators(CIndicators *indicators); //--- Доступ к данным индикатора double CG(const int index) const { return(m_COG.GetData(0,index)); } double Signal(const int index) const { return(m_COG.GetData(1,index)); } //--- Проверка условий покупки и продажи virtual int LongCondition(); virtual int ShortCondition(); //--- Методы для установки 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: //--- Создание индикатора bool CreateCOG(CIndicators *indicators); }; //+------------------------------------------------------------------+ //| Конструктор| //+------------------------------------------------------------------+ COG::COG(void) : m_Period_(10), // Период усреднения индикатора m_SmoothPeriod(3), // Период сглаживания сигнальной линии m_MA_Method_(MODE_EMA), // Метод усреднения сигнальных линий m_AppliedPrice(1) // Постоянная цена { } //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ COG::~COG() { } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Проверяет входные параметры и возвращает true, если все в порядке | //+------------------------------------------------------------------+ bool COG:: ValidationSettings() { //--- Вызовите метод базового класса if(!CExpertSignal::ValidationSettings()) return(false); //--- Проверяем периоды, количество баров для расчета МА >=1 if(m_Period_<1) { PrintFormat("Incorrect value set for one of the period! Period_=%d", m_Period_); return false; } //--- Проверяем периоды, количество баров для расчета МА >=1 if(m_SmoothPeriod<1) { PrintFormat("Incorrect value set for one of the period! m_SmoothPeriod=%d", m_SmoothPeriod); return false; } //--- Тип сглаживания Fast MA должен быть одним из четырех значений перечисления 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 должна быть действительной if(m_AppliedPrice<1 || m_AppliedPrice>11) { PrintFormat("Invalid type of Price!"); return false; } //--- Все проверки завершены, все в порядке return true; } //+------------------------------------------------------------------+ //| Создает индикаторы| //| Вход: указатель на коллекцию индикаторов | //| Выходные данные: true в случае успеха, иначе false | //+------------------------------------------------------------------+ bool COG::InitIndicators(CIndicators *indicators) { //--- Стандартная проверка коллекции индикаторов на наличие NULL if(indicators==NULL) return(false); //--- Инициализация индикаторов и временных рядов в дополнительных фильтрах if(!CExpertSignal::InitIndicators(indicators)) return(false); //--- Создание наших индикаторов if(!CreateCOG(indicators)) return(false); //--- Достигли этой части, значит, функция выполнена успешно, возвращаем true return(true); } //+------------------------------------------------------------------+ //| Создает индикатор "COG".| //+------------------------------------------------------------------+ bool COG::CreateCOG(CIndicators *indicators) { //--- Проверка указателя if(indicators==NULL) return(false); //--- Добавление объекта в коллекцию if(!indicators.Add(GetPointer(m_COG))) { printf(__FUNCTION__+": Error adding an object of the COG"); return(false); } //--- Установка параметров 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_; // Период parameters[2].type=TYPE_INT; parameters[2].integer_value=m_SmoothPeriod; // Период сглаживания сигнальной линии parameters[3].type=TYPE_INT; parameters[3].integer_value=m_MA_Method_; // Метод усреднения сигнальных линий parameters[4].type=TYPE_INT; parameters[4].integer_value=m_AppliedPrice; // Постоянная цена //--- Инициализация объекта if(!m_COG.Create(m_symbol.Name(),0,IND_CUSTOM,5,parameters)) { printf(__FUNCTION__+": Error initializing the object of the COG"); return(false); } //--- Количество буферов if(!m_COG.NumBuffers(2)) return(false); //--- Достигли этой части, значит, функция выполнена успешно, возвращаем true return(true); } //+------------------------------------------------------------------+ //| Возвращает силу сигнала покупки.| //+------------------------------------------------------------------+ int COG::LongCondition() { int signal=0; //--- Для работы с тиками idx=0, для работы с сформированными барами idx=1 int idx=StartIndex(); //--- Значения COGs на последнем сформированном баре double last_fast_value=CG(idx); double last_slow_value=Signal(idx); //--- Значения COG на предпоследнем сформированном баре double prev_fast_value=CG(idx+1); double prev_slow_value=Signal(idx+1); //---If CG > Signal && CG-1 < Signal-1 if((last_fast_value>last_slow_value) && (prev_fast_value<prev_slow_value)) { signal=100; // Есть сигнал к покупке } //--- Верните значение сигнала return(signal); } //+------------------------------------------------------------------+ //| Возвращает силу сигнала продажи.| //+------------------------------------------------------------------+ int COG::ShortCondition() { int signal=0; //--- Для работы с тиками idx=0, для работы с сформированными барами idx=1 int idx=StartIndex(); //--- Значения COGs на последнем сформированном баре double last_fast_value=CG(idx); double last_slow_value=Signal(idx); //--- Значения COG на предпоследнем сформированном баре double prev_fast_value=CG(idx+1); double prev_slow_value=Signal(idx+1); //---If CG < Signal && CG-1 > Signal-1 if((last_fast_value<last_slow_value) && (prev_fast_value>prev_slow_value)) { signal=100; // Есть сигнал к продаже } //--- Верните значение сигнала return(signal); }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования


Центр гравитации Элерса - Center of Gravity J. F. Ehlers:
Центр гравитации является осциллятором, разработанным Джоном Элерсом и представленном в майском выпуске журнала "Stocks & Commodities" (2002г.).
Центр гравитации имеет по существу нулевое отставание и позволяет четко определять поворотные моменты. Этот индикатор является результатом исследования Элерсом адаптивных фильтров. Индикатор "центр гравитации" позволяет идентифицировать главные разворотные точки почти без отставания.
Идея вычисления центра гравитации выросла из наблюдения за тем, каково отставание различных фильтров с конечной импульсной характеристикой (КИХ) в соответствии с относительной амплитудой коэффициентов фильтров. Простая средняя скользящая (SMA) является КИХ-фильтром, где все коэффициенты имеют одно и тоже значение. В результате центром гравитации SMA является точный центр фильтра. Взвешенная средняя скользящая (WMA) представляет собой КИХ-фильтр, где последнее ценовое изменение взвешено по длине фильтра, предпоследнее ценовое изменение взвешено по меньшей длине фильтра и так далее.
Автор: Nikolay Kositsin