//+------------------------------------------------------------------+ //| EventListener.mqh | //| Copyright 2016, Vasiliy Sokolov, St-Petersburg, Russia | //| https://www.mql5.com/en/users/c-4 | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, Vasiliy Sokolov." #property link "https://www.mql5.com/en/users/c-4" #include #include #include //+------------------------------------------------------------------+ //| Strategy receives events and displays in terminal. | //+------------------------------------------------------------------+ class CStrategyMACD : public CStrategy { private: CSignalMACD m_signal_ma; CiOpen m_open; CiHigh m_high; CiLow m_low; CiClose m_close; CIndicators m_indicators; public: CStrategyMACD(void); //virtual void InitBuy(const MarketEvent &event); //virtual void SupportBuy(const MarketEvent &event, CPosition* pos); virtual void InitSell(const MarketEvent &event); virtual void SupportSell(const MarketEvent &event, CPosition* pos); }; //+------------------------------------------------------------------+ //| Initialization of the CSignalMacd signal module | //+------------------------------------------------------------------+ CStrategyMACD::CStrategyMACD(void) { m_signal_ma.Pattern_0(0); m_signal_ma.Pattern_1(0); m_signal_ma.Pattern_2(0); m_signal_ma.Pattern_3(100); m_signal_ma.Pattern_4(0); m_signal_ma.Pattern_5(0); CSymbolInfo* info = new CSymbolInfo(); // Creating an object that represents the strategy trading instrument info.Name(Symbol()); // Initializing an object that represents the strategy trading instrument m_signal_ma.Init(info, Period(), 10); // Initializing the signal module with a trading instrument and timeframe m_signal_ma.InitIndicators(GetPointer(m_indicators)); // Creating in the signal module required indicators based on the empty list of indicators m_indicators m_signal_ma.EveryTick(true); // Testing mode m_signal_ma.Magic(ExpertMagic()); // Magic number m_signal_ma.PatternsUsage(8); // Pattern mask m_open.Create(Symbol(), Period()); // Initializing the timeseries of open prices m_high.Create(Symbol(), Period()); // Initializing the timeseries of high prices m_low.Create(Symbol(), Period()); // Initializing the timeseries of low prices m_close.Create(Symbol(), Period()); // Initializing the timeseries of close prices m_signal_ma.SetPriceSeries(GetPointer(m_open), // Initializing the signal module with timeseries objects GetPointer(m_high), GetPointer(m_low), GetPointer(m_close)); } //+------------------------------------------------------------------+ //| Buying. | //+------------------------------------------------------------------+ void CStrategyMACD::InitSell(const MarketEvent &event) { //if(event.type != MARKET_EVENT_BAR_OPEN) // return; m_indicators.Refresh(); m_signal_ma.SetDirection(); //m_signal_ma int power_sell = m_signal_ma.ShortCondition(); int power_buy = m_signal_ma.LongCondition(); //m_signal_ma.CheckCloseLong(); printf("PowerSell: " + (string)power_sell + " PowerBuy: " + (string)power_buy); } //+------------------------------------------------------------------+ //| Selling. | //+------------------------------------------------------------------+ void CStrategyMACD::SupportSell(const MarketEvent& event, CPosition* pos) { ; } //+------------------------------------------------------------------+