Discussão do artigo "Biblioteca para desenvolvimento fácil e rápido de programas para a MetaTrader (parte I). Conceito, gerenciamento de dados e primeiros resultados"
Aparentemente ocorre um erro no seguinte trecho:
+------------------------------------------------------------------+
| Retorna a flag de fechamento da posição por StopLoss |
+------------------------------------------------------------------+
bool COrder::OrderCloseByStopLoss(void) const
{
#ifdef __MQL4__
return(::StringFind(::OrderComment(),"[sl")>WRONG_VALUE);
#else
return
(
this.Status()==ORDER_STATUS_HISTORY_ORDER ? this.OrderReason()==ORDER_REASON_SL :
this.Status()==ORDER_STATUS_DEAL ? this.OrderReason()==DEAL_REASON_SL : false
);
#endif
}
//+------------------------------------------------------------------+
//| Retorna a flag de fechamento da posição pelo TakeProfit |
//+------------------------------------------------------------------+
bool COrder::OrderCloseByTakeProfit(void) const
{
#ifdef __MQL4__
return(::StringFind(::OrderComment(),"[tp")>WRONG_VALUE);
#else
return
(
this.Status()==ORDER_STATUS_HISTORY_ORDER ? this.OrderReason()==ORDER_REASON_TP :
this.Status()==ORDER_STATUS_DEAL ? this.OrderReason()==DEAL_REASON_TP : false
);
#endif
}
A mensagem retornada é: 'Status' - undeclared identifier Order.mqh
Infelizmente não estou conseguindo resolver.
Obrigado.
Aparentemente ocorre um erro no seguinte trecho:
+------------------------------------------------------------------+
| Retorna a flag de fechamento da posição por StopLoss |
+------------------------------------------------------------------+
bool COrder::OrderCloseByStopLoss(void) const
{
#ifdef __MQL4__
return(::StringFind(::OrderComment(),"[sl")>WRONG_VALUE);
#else
return
(
this.Status()==ORDER_STATUS_HISTORY_ORDER ? this.OrderReason()==ORDER_REASON_SL :
this.Status()==ORDER_STATUS_DEAL ? this.OrderReason()==DEAL_REASON_SL : false
);
#endif
}
//+------------------------------------------------------------------+
//| Retorna a flag de fechamento da posição pelo TakeProfit |
//+------------------------------------------------------------------+
bool COrder::OrderCloseByTakeProfit(void) const
{
#ifdef __MQL4__
return(::StringFind(::OrderComment(),"[tp")>WRONG_VALUE);
#else
return
(
this.Status()==ORDER_STATUS_HISTORY_ORDER ? this.OrderReason()==ORDER_REASON_TP :
this.Status()==ORDER_STATUS_DEAL ? this.OrderReason()==DEAL_REASON_TP : false
);
#endif
}
A mensagem retornada é: 'Status' - undeclared identifier Order.mqh
Infelizmente não estou conseguindo resolver.
Obrigado.
MetaTrader 4 ? or MetaTrader 5 ?
O mesmo ocorre em:
m_long_prop[ORDER_PROP_PROFIT_PT] = this.ProfitInPoints();
e
m_double_prop[this.IndexProp(ORDER_PROP_PROFIT_FULL)] = this.ProfitFull();
Ambos os trechos dentro do Construtor paramétrico Closed
Obrigado
MetaTrader 4 ? or MetaTrader 5 ?
MT5
I would like to know what you are doing.
Please insert the code using this button on the toolbar of the message input window
Estou estudando seus artigos. Meu objetivo é aprender a trabalhar com classes.
I would like to know what you are doing.
Please insert the code using this button on the toolbar of the message input window
bool COrder::OrderCloseByStopLoss(void) const { #ifdef __MQL4__ return(::StringFind(::OrderComment(),"[sl")>WRONG_VALUE); #else return ( this.Status()==ORDER_STATUS_HISTORY_ORDER ? this.OrderReason()==ORDER_REASON_SL : this.Status()==ORDER_STATUS_DEAL ? this.OrderReason()==DEAL_REASON_SL : false ); #endif } //+------------------------------------------------------------------+ //| Retorna a flag de fechamento da posição pelo TakeProfit | //+------------------------------------------------------------------+ bool COrder::OrderCloseByTakeProfit(void) const { #ifdef __MQL4__ return(::StringFind(::OrderComment(),"[tp")>WRONG_VALUE); #else return ( this.Status()==ORDER_STATUS_HISTORY_ORDER ? this.OrderReason()==ORDER_REASON_TP : this.Status()==ORDER_STATUS_DEAL ? this.OrderReason()==DEAL_REASON_TP : false ); #endif }
Спасибо.
Я не знал об этой функции.
Estou estudando seus artigos. Meu objetivo é aprender a trabalhar com classes.
Is the test program included with the article working?
What errors occur?
Please describe in more detail.
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Biblioteca para desenvolvimento fácil e rápido de programas para a MetaTrader (parte I). Conceito, gerenciamento de dados e primeiros resultados foi publicado:
Ao analisar um grande número de estratégias de negociação, pedidos de desenvolvimento de aplicativos para os terminais MetaTrader 5 e MetaTrader 4 e vários sites sobre MetaTrader, eu cheguei à conclusão de que toda essa diversidade é baseada principalmente nas mesmas funções elementares, ações e valores que aparecem regularmente em diferentes programas. Isso resultou na biblioteca multi-plataforma DoEasy para o desenvolvimento fácil e rápido de aplicativos para a МetaТrader 5 e МetaТrader 4.
Agora tudo é compilado sem erros, e os dados de todas as ordens e negócios no histórico da conta de negociação são exibidos no diário do terminal.
Todas as propriedades de cada ordem/negócio, incluindo as não suportadas, são exibidas.
O fato é que nós desenvolvemos os métodos que retornam as flags para suportar as propriedades específicas por essa ordem para serem virtuais, para que sejam redefinidas nas classes derivadas. Essas classes derivadas são usadas para exibir os dados no diário. Nesse caso, todos devem ser exibidos corretamente. Se houver uma propriedade não suportada pela ordem, ela não será exibida no diário, uma vez que o método da classe COrder Print(const bool full_prop=false) tem a flag padrão para desativar a exibição das propriedades não suportadas no diário, enquanto os métodos virtuais SupportProperty() da classe simplesmente retornam 'true' para qualquer propriedade.
Qual é o próximo?
A primeira (e a menor) parte está pronta. Nós desenvolvemos um objeto básico para a coleta do histórico de ordens e negócios, bem como para a coleta de ordens e posições do mercado. Até agora não há valor prático, mas este é apenas o começo. Esse único objeto básico é tornar-se um elemento fundamental para o sistema armazenar e exibir os dados no sistema de ordens. Nosso próximo passo é desenvolver outros objetos e coleções necessárias usando os mesmos princípios. Eu também vou automatizar a coleta dos dados necessários de maneira constante.
Autor: Artyom Trishkin