Discussão do artigo "DoEasy. Controles (Parte 1): Primeiros passos"

 

Novo artigo DoEasy. Controles (Parte 1): Primeiros passos foi publicado:

Com este artigo, iniciamos um tópico extenso sobre a criação de controles em MQL5 com base no estilo do Windows Forms. E vamos começar criando uma classe-painel. Tudo já está se tornando difícil sem a presença de controles. Por isso, criaremos todos os controles possíveis no estilo do Windows Forms.

Compilamos o Expert Advisor e o iniciamos no gráfico:


As formas reagem ao movimento do mouse e são sempre colocadas em cima dos objetos gráficos adicionados ao gráfico. Os preenchimentos de gradiente de objetos-elementos são desenhados corretamente e a cor do objeto-painel é única. Mas no nosso caso, nem os elementos nem o painel reagem ao mouse e ficam em segundo plano sob todos os objetos gráficos. Isso ocorre porque apenas manipulamos eventos de mouse para objetos-formas. E mesmo o fato de o painel ser essencialmente também uma forma não importa, pois no manipulador processamos explicitamente apenas a classe CForm. Tudo isso será corrigido mais adiante.

Autor: Artyom Trishkin

 

Eu o parabenizo por todo o seu trabalho árduo... esse foi um projeto e tanto.

Estou apenas começando e estou tentando compilar o TestDoEasyPart101.mq5 ... Estou recebendo os quatro erros a seguir:


1) CTrading::OpenPosition<...... (não é possível acessar a função de membro privado)


Todos os outros erros são basicamente os mesmos, portanto, devo estar tendo um problema de caminho, mas não consigo identificá-lo.

Copiei os arquivos DoEasy para incluir, de modo que a hierarquia é a seguinte:

MQL5\Include\DoEasy\todos os arquivos que estavam em sua pasta DoEasy sob o include

Eu fiz o seguinte no topo do arquivo TradingControl.mqh: #include <DoEasy\trading.mqh>


O que pode ser o meu problema... como eu disse, parece que você fez pelo menos 100 artigos para construir o que você tem no início deste artigo... alguma sugestão sobre como fazer isso compilar?


Obrigado

Dean Fredrickson

 
Dean Fredrickson projeto e tanto.

Estou começando agora e estou tentando compilar o TestDoEasyPart101.mq5 ... Estou recebendo os 4 erros a seguir:


1) CTrading::OpenPosition<...... (não é possível acessar a função de membro privado)


Todos os outros erros são basicamente os mesmos, portanto, devo estar tendo um problema de caminho, mas não consigo identificá-lo.

Copiei os arquivos DoEasy para inclusão, de modo que a hierarquia é a seguinte:

MQL5\Include\DoEasy\todos os arquivos que estavam em sua pasta DoEasy sob o include

Fiz o seguinte no topo do arquivo TradingControl.mqh: #include <DoEasy\trading.mqh>


O que pode ser o meu problema... como eu disse, parece que você fez pelo menos 100 artigos para construir o que você tem no início disso... alguma sugestão sobre como fazer isso compilar?


Muito obrigado

Dean Fredrickson

No arquivo Trading.mqh, faça as seguintes alterações:

 //--- (1) Открывает позицию, (2) устанавливает отложенный ордер
 protected : 
   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 :                                     
 //--- Возвращает индекс объекта-запроса в списке по (1) идентификатору,
 //--- (2) тикету ордера, (3) тикету позиции в запросе 
   int                   GetIndexPendingRequestByID( const uchar id);
   int                   GetIndexPendingRequestByOrder( const ulong ticket);
   int                   GetIndexPendingRequestByPosition( const ulong ticket);

 public :
 //--- Возвращает себя 
   CTrading            *GetObject( void )    { return & this ;   }
 //--- Конструктор 
                        CTrading();

Isso permitirá que os métodos sejam visíveis nas classes derivadas.

O erro foi introduzido por mim devido à falta de atenção, mas o compilador antigo não percebeu. Depois de atualizar o terminal, o compilador viu esse erro.