Discussion of article "Other classes in DoEasy library (Part 66): MQL5.com Signals collection class"

 

New article Other classes in DoEasy library (Part 66): MQL5.com Signals collection class has been published:

In this article, I will create the signal collection class of the MQL5.com Signals service with the functions for managing signals. Besides, I will improve the Depth of Market snapshot object class for displaying the total DOM buy and sell volumes.

Compile the EA and launch it on a symbol chart, while preliminarily setting working on the current symbol/timeframe and activating the flag of working with trading signals of the MQL5.com Signals service:


In the Common tab of the EA settings window, check "Allow modification of Signals settings":


Otherwise, the EA will not be able to work with the MQL5.com Signals.

After launching the EA, the journal displays the message about the successful creation of the signals collection and its short description:

Collection of MQL5.com Signals service signals created successfully
Collection of MQL5.com Signals service signals:
- Free signals: 195, Paid signals: 805

Author: Artyom Trishkin

 

Why is the tag "trading systems" in the articles section? There are no TCs here

The whole section "trading systems" is full of your articles, in summary

 
Maxim Dmitrievsky:

Why is the tag "trading systems" in the articles section? There are no TCs here.

The whole section "trading systems" is full of your articles, in summary

Because the library is created in particular for creating trading systems.

 
Artyom Trishkin:

Because the library is created in particular for creating trading systems.

there is some logical contradiction in this

 
Maxim Dmitrievsky:

there's a certain logical contradiction

Yeah. It's like the chicken and egg problem.
 
 
I'm very sorry that I've done something I shouldn't have done again, and I regret it.
My own ignorant
Forgive me for filling those around me with my actions, I am sorry.



 
Hi sir i chat with you on WhatsApp
 
Lovely Raja :
Hi sir i chat with you on WhatsApp

I do not communicate through WhatsApp

 

Boa noite!

Saudações aqui do Brasil.


Estou tendo impedimento na hora de compilar o código e como meu conhecimento de mql5 é muito básico, resta pedir sua ajuda para superar os problemas na compilação...não sei resolver.

Quero aproveitar e parabenizá-lo pelo trabalho brilhante, seus códigos me ajudam muito.

 
Francisco Carlos Sobral Ribeiro #:

Boa noite!

Saudações aqui do Brasil.


Estou tendo impedimento na hora de compilar o código e como meu conhecimento de mql5 é muito básico, resta pedir sua ajuda para superar os problemas na compilação...não sei resolver.

Quero aproveitar e parabenizá-lo pelo trabalho brilhante, seus códigos me ajudam muito.

In Trading.mqh, you need to move some methods to the protected section so that they can be accessed from derived classes. Now they are in the private section of the class. I made this error due to inattention, but the old compiler missed it. After updating the terminal, this error became detectable.

In lines 84 - 89 of the Trading.mqh file you should make the following changes:


In the Trading.mqh file, some methods need to be moved to a protected section so that they can be accessed from derived classes. Now they are in the private section of the class. This mistake was made by me inadvertently, but the old compiler missed it. After updating the terminal, this error began to be detected.

In lines 84 - 89 of the Trading.mqh file, you need to make the following changes:

//--- Returns the order direction by operation type
   ENUM_ORDER_TYPE      DirectionByActionType(const ENUM_ACTION_TYPE action)  const;
//--- Sets the trade object to the desired sound
   void                 SetSoundByMode(const ENUM_MODE_SET_SOUND mode,const ENUM_ORDER_TYPE action,const string sound,CTradeObj *trade_obj);

protected:
//--- Sets trade request prices
   template <typename PR,typename SL,typename TP,typename PL> 
   bool                 SetPrices(const ENUM_ORDER_TYPE action,const PR price,const SL sl,const TP tp,const PL limit,const string source_method,CSymbol *symbol_obj);

private:
//--- Returns the flag for checking the permissibility by the distance of (1) StopLoss, (2) TakeProfit, (3) the order setting price from the StopLevel price
   bool                 CheckStopLossByStopLevel(const ENUM_ORDER_TYPE order_type,const double price,const double sl,const CSymbol *symbol_obj);
   bool                 CheckTakeProfitByStopLevel(const ENUM_ORDER_TYPE order_type,const double price,const double tp,const CSymbol *symbol_obj);
   bool                 CheckPriceByStopLevel(const ENUM_ORDER_TYPE order_type,const double price,const CSymbol *symbol_obj,const double limit=0);


and in lines 155 - 181 make the following changes :


and in lines 155 - 181 make similar edits:
//--- Returns the error handling method
   ENUM_ERROR_CODE_PROCESSING_METHOD   ResultProccessingMethod(const uint result_code);
//--- Error correction
   ENUM_ERROR_CODE_PROCESSING_METHOD   RequestErrorsCorrecting(MqlTradeRequest &request,const ENUM_ORDER_TYPE order_type,const uint spread_multiplier,CSymbol *symbol_obj,CTradeObj *trade_obj);

protected:
//--- (1) Opens a position, (2) sets a pending order
   template<typename SL,typename TP> 
   bool                 OpenPosition(const ENUM_POSITION_TYPE type,
                                    const double volume,
                                    const string symbol,
                                    const ulong magic=ULONG_MAX,
                                    const SL sl=0,
                                    const TP tp=0,
                                    const string comment=NULL,
                                    const ulong deviation=ULONG_MAX,
                                    const ENUM_ORDER_TYPE_FILLING type_filling=WRONG_VALUE);
   template<typename PR,typename PL,typename SL,typename TP>
   bool                 PlaceOrder( const ENUM_ORDER_TYPE order_type,
                                    const double volume,
                                    const string symbol,
                                    const PR price,
                                    const PL price_limit=0,
                                    const SL sl=0,
                                    const TP tp=0,
                                    const ulong magic=ULONG_MAX,
                                    const string comment=NULL,
                                    const datetime expiration=0,
                                    const ENUM_ORDER_TYPE_TIME type_time=WRONG_VALUE,
                                    const ENUM_ORDER_TYPE_FILLING type_filling=WRONG_VALUE);

private:
//--- Returns the index of the query object in the list by (1) identifier,
//--- (2) order ticket, (3) request position ticket
   int                  GetIndexPendingRequestByID(const uchar id);
   int                  GetIndexPendingRequestByOrder(const ulong ticket);
   int                  GetIndexPendingRequestByPosition(const ulong ticket);

public:

After that everything will compile.

The corrected file is attached to this post.


After that, everything will compile.

The corrected file is attached to this post.

Files:
Trading.mqh  448 kb