Discussão do artigo "Outras classes na biblioteca DoEasy (Parte 66): classe-coleção de Sinais MQL5.com"

 

Novo artigo Outras classes na biblioteca DoEasy (Parte 66): classe-coleção de Sinais MQL5.com foi publicado:

Neste artigo, criaremos uma classe-coleção de sinais - do serviço Sinais MQL5.com - com funções para gerenciar sinais assinados e também modificaremos a classe do objeto-instantâneo do livro de ofertas para exibir o volume total de ordens sell e buy.

Vamos compilar o Expert Advisor e iniciá-lo no gráfico do símbolo, após configurá-lo para o símbolo/timeframe atual e definir o sinalizador indicando necessidade de trabalhar com sinais de negociação do serviço Sinais MQL5.com:


Na guia "Geral" da janela de configurações do Expert Advisor, certifique-se de marcar a caixa "Permitir a alteração das configurações de sinais":


Sem isso, o EA não poderá trabalhar com o serviço Sinais MQL5.com.

Após iniciar o Expert Advisor, uma mensagem sobre a criação bem-sucedida de uma coleção de sinais e sua breve descrição será exibida no log:

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

Autor: Artyom Trishkin

[Excluído]  

Por que a tag "sistemas de negociação" está na seção de artigos? Não há TCs aqui

Toda a seção "sistemas de negociação" está repleta de artigos seus, em resumo

 
Maxim Dmitrievsky:

Por que a tag "sistemas de negociação" está na seção de artigos? Não há TCs aqui.

Toda a seção "sistemas de negociação" está repleta de seus artigos, em resumo

Porque a biblioteca foi criada especialmente para a criação de sistemas de negociação.

[Excluído]  
Artyom Trishkin:

Porque a biblioteca foi criada especialmente para a criação de sistemas de negociação.

há alguma contradição lógica nisso

 
Maxim Dmitrievsky:

há uma certa contradição lógica

Sim, é como o problema do ovo e da galinha.
 
 
Sinto muito por ter feito algo que não deveria ter feito novamente, e me arrependo disso.
Minha própria ignorância
Por favor, perdoe-me por encher as pessoas ao meu redor com minhas ações, eu sinto muito.



 
Hi sir i chat with you on WhatsApp
 
Lovely Raja :
Olá, senhor, posso conversar com você pelo WhatsApp

Não me comunico pelo 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.

Em Trading.mqh, você precisa mover alguns métodos para a seção protegida para que eles possam ser acessados a partir de classes derivadas. Agora eles estão na seção privada da classe. Cometi esse erro por falta de atenção, mas o compilador antigo não percebeu. Depois de atualizar o terminal, esse erro passou a ser detectável.

Nas linhas 84 a 89 do arquivo Trading.mqh, você deve fazer as seguintes alterações:


No arquivo Trading.mqh, alguns métodos precisam ser movidos para uma seção protegida para que possam ser acessados a partir de classes derivadas. Agora eles estão na seção privada da classe. Esse erro foi cometido por mim inadvertidamente, mas o compilador antigo não o percebeu. Depois de atualizar o terminal, esse erro começou a ser detectado.

Nas linhas 84 a 89 do arquivo Trading.mqh, você precisa fazer as seguintes alterações:

//--- Retorna a direção da ordem por tipo de operação
   ENUM_ORDER_TYPE      DirectionByActionType(const ENUM_ACTION_TYPE action)  const;
//--- Define o objeto de negociação para o som desejado
   void                 SetSoundByMode(const ENUM_MODE_SET_SOUND mode,const ENUM_ORDER_TYPE action,const string sound,CTradeObj *trade_obj);

protected:
//--- Define os preços de solicitação de negociação
   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:
//--- Retorna o sinalizador para verificar a permissibilidade pela distância de (1) StopLoss, (2) TakeProfit, (3) o preço de definição do pedido do preço StopLevel
   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);


e nas linhas 155 a 181, faça as seguintes alterações :


e nas linhas 155 - 181 faça edições semelhantes:
//--- Retorna o método de tratamento de erros
   ENUM_ERROR_CODE_PROCESSING_METHOD   ResultProccessingMethod(const uint result_code);
//--- Correção de erros
   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) Abre uma posição, (2) define uma ordem pendente
   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:
//--- Retorna o índice do objeto de consulta na lista por (1) identificador,
//--- (2) ticket de pedido, (3) ticket de solicitação de posição
   int                  GetIndexPendingRequestByID(const uchar id);
   int                  GetIndexPendingRequestByOrder(const ulong ticket);
   int                  GetIndexPendingRequestByPosition(const ulong ticket);

public:

Depois disso, tudo será compilado.

O arquivo corrigido está anexado a esta postagem.


Depois disso, tudo será compilado.

O arquivo corrigido está anexado a esta postagem.

Arquivos anexados:
Trading.mqh  448 kb