//+------------------------------------------------------------------+//| Busca da posição do elemento em uma matriz ordenada//+------------------------------------------------------------------+int CArrayObj::Search(const CObject *element) const
{
int pos;
//--- verificaçãoif(m_data_total==0 || !CheckPointer(element) || m_sort_mode==-1)
return(-1);
//--- busca
pos=QuickSearch(element);
if(m_data[pos].Compare(element,m_sort_mode)==0)
return(pos);
//--- não encontradoreturn(-1);
}
//+------------------------------------------------------------------+
Compare() dentro do método, que é o que você precisa substituir em classes herdadas.
Na classe CBar, cujos objetos estão armazenados na lista em que estamos procurando a barra desejada, o método Compare() já foi substituído (assim como em todas as classes de objetos da biblioteca):
//+------------------------------------------------------------------+//| Compara os objetos CBar entre si de acordo com a propriedade especificada//+------------------------------------------------------------------+int CBar::Compare(const CObject *node,constint mode=0) const
{
const CBar *bar_compared=node;
//--- comparação de propriedades inteiras de duas barrasif(mode<BAR_PROP_INTEGER_TOTAL)
{
long value_compared=bar_compared.GetProperty((ENUM_BAR_PROP_INTEGER)mode);
long value_current=this.GetProperty((ENUM_BAR_PROP_INTEGER)mode);
return(value_current>value_compared ? 1 : value_current<value_compared ? -1 : 0);
}
//--- comparação das propriedades reais de duas barraselseif(mode<BAR_PROP_DOUBLE_TOTAL+BAR_PROP_INTEGER_TOTAL)
{
double value_compared=bar_compared.GetProperty((ENUM_BAR_PROP_DOUBLE)mode);
double value_current=this.GetProperty((ENUM_BAR_PROP_DOUBLE)mode);
return(value_current>value_compared ? 1 : value_current<value_compared ? -1 : 0);
}
//--- comparação das propriedades de string de duas barraselseif(mode<BAR_PROP_DOUBLE_TOTAL+BAR_PROP_INTEGER_TOTAL+BAR_PROP_STRING_TOTAL)
{
string value_compared=bar_compared.GetProperty((ENUM_BAR_PROP_STRING)mode);
string value_current=this.GetProperty((ENUM_BAR_PROP_STRING)mode);
return(value_current>value_compared ? 1 : value_current<value_compared ? -1 : 0);
}
return0;
}
//+------------------------------------------------------------------+
A estrutura de pesquisa de objetos na biblioteca está organizada corretamente.
Por que você falha? Talvez seja simplesmente porque você não começou a estudar a biblioteca desde o início?
O que não está funcionando? Talvez seja porque você não começou com a biblioteca desde o início?
Olá. Não estou reclamando, é claro que não li todos os seus artigos. Duvido que tenha lido algum. Mas coisas simples não funcionam e nem mesmo está descrito como elas deveriam funcionar.
Aqui você tem elementos gráficos padrão. A propósito, não há nem mesmo exemplos para muitos elementos básicos (Edit, nesse caso).
Portanto, CreateEditField() não funciona. Ele falha no método CreateNewStdGraphObjectAndGetCtrlObj(). Aqui:
CChartObjectsControl *CGraphElementsCollection::GetChartObjectCtrlObj(constlong chart_id)
{
//--- Em um loop pelo número total de objetos na listafor(int i=0;i<this.m_list_charts_control.Total();i++)
{
//--- Obter um ponteiro para o próximo objeto
CChartObjectsControl *obj=this.m_list_charts_control.At(i);
//--- Se o ponteiro não puder ser obtido, vá para o próximoif(obj==NULL)
continue;
//--- Se o identificador do gráfico do objeto for igual ao pesquisado - retorne o ponteiro para o objeto na listaif(obj.ChartID()==chart_id)
return obj;
}
//--- Não encontrou o objeto - retorne NULLreturnNULL;
}
Bem, o controle m_list_charts_control está vazio... portanto, nada é adicionado e o método não retorna nada.
Em geral, há erros suficientes. Tenho a impressão de que ninguém usa a biblioteca na prática. Pegue uma ferramenta com o único tipo permitido de preenchimento IOC. Bem, ela não funcionará. Ela não o define corretamente. Tive que editar muitos métodos.... Você só precisa usar seu método de negociação. Além disso, o método inicial na inicialização corrige o preenchimento, mas o método de negociação não o capta.
Olá. Não estou reclamando, é claro que não li todos os seus artigos. Duvido que tenha havido algum. Mas coisas simples não funcionam e nem mesmo está descrito como deveriam funcionar.
Aqui você tem elementos gráficos padrão. A propósito, você não tem nem mesmo exemplos de muitos elementos básicos (Editar, nesse caso).
Portanto, CreateEditField() não funciona. Ele falha no método CreateNewStdGraphObjectAndGetCtrlObj(). Aqui está ele:
Bem, o controle m_list_charts_control está vazio... portanto, nada é adicionado e o método não retorna nada.
Em geral, há erros suficientes. Tenho a impressão de que ninguém usa a biblioteca na prática. Pegue uma ferramenta com o único tipo permitido de preenchimento IOC. Bem, ela não funcionará. Ela não o define corretamente. Tive que editar muitos métodos.... Você só precisa passar por seu método de negociação. E o método inicial na inicialização corrige o preenchimento, mas o método de negociação não o pega.
Método CTrading::OpenPosition()
Ok, encontramos o tipo correto de preenchimento, se ele não estiver explicitamente especificado na ordem.
Mas depois passamos a variável original para o próximo método. Qual é o objetivo? Ou eu não estou entendendo alguma coisa...
Essa discussão tem alguma relação com este artigo? Não.
Em qual artigo estão as perguntas?
Vamos lidar com elas em sua discussão.
PS: Não me lembro de ter criado uma classe de campo de entrada para a biblioteca CreateEditField(), de onde você a tirou?
leonerd #: Bem, o CreateEditField() não funciona. Ele falha no método CreateNewStdGraphObjectAndGetCtrlObj().
Por que você está se intrometendo em métodos privados? Eles são necessários apenas para que a biblioteca funcione.
O usuário precisa de métodos públicos. O usuário final não precisa do trabalho dos métodos internos.
Se você quiser entender o funcionamento de tudo isso, então os artigos que descrevem toda essa cozinha são escritos para esse fim. Não está muito claro o que e como você quer fazer. Você não diz, não dá exemplos, apenas aponta para uma linha tirada de um grande número delas e diz que não funciona....
leonerd #: Em geral, há articulações suficientes. Tenho a impressão de que ninguém usa a biblioteca na prática.
Se você não ler a descrição e tentar modificar e usar métodos internos por conta própria, não é o autor que tem bugs suficientes, mas aquele que a modifica.
E, sim, a biblioteca ainda está em desenvolvimento.
Vou dar uma olhada no tipo de preenchimento, obrigado.
Mas é melhor discutir isso na discussão dos artigos correspondentes, para que você possa ver a descrição de uma só vez, em vez de falar sobre uma coisa na discussão de outra.
leonerd #: Forneci o máximo de detalhes neste comentário.
O máximo de detalhes é um código que você pode compilar, executar, ver o que não funciona e encontrar e relatar a causa.
Sem testes, os artigos não são publicados. Tudo funciona nos testes. É por isso que estou perguntando pela terceira vez: o que você está fazendo e o que não funciona. O código, por favor.
Não. Há um método Sort() em CArrayObj:
Compare() dentro do método, que é o que você precisa substituir em classes herdadas.
Na classe CBar, cujos objetos estão armazenados na lista em que estamos procurando a barra desejada, o método Compare() já foi substituído (assim como em todas as classes de objetos da biblioteca):
A estrutura de pesquisa de objetos na biblioteca está organizada corretamente.
Por que você falha? Talvez seja simplesmente porque você não começou a estudar a biblioteca desde o início?
O que não está funcionando? Talvez seja porque você não começou com a biblioteca desde o início?
Olá. Não estou reclamando, é claro que não li todos os seus artigos. Duvido que tenha lido algum. Mas coisas simples não funcionam e nem mesmo está descrito como elas deveriam funcionar.
Aqui você tem elementos gráficos padrão. A propósito, não há nem mesmo exemplos para muitos elementos básicos (Edit, nesse caso).
Portanto, CreateEditField() não funciona. Ele falha no método CreateNewStdGraphObjectAndGetCtrlObj(). Aqui:
Bem, o controle m_list_charts_control está vazio... portanto, nada é adicionado e o método não retorna nada.
Em geral, há erros suficientes. Tenho a impressão de que ninguém usa a biblioteca na prática. Pegue uma ferramenta com o único tipo permitido de preenchimento IOC. Bem, ela não funcionará. Ela não o define corretamente. Tive que editar muitos métodos.... Você só precisa usar seu método de negociação. Além disso, o método inicial na inicialização corrige o preenchimento, mas o método de negociação não o capta.
Método CTrading::OpenPosition()
Ok, encontramos o tipo correto de preenchimento, se ele não estiver explicitamente especificado na ordem.
Mas depois passamos a variável original para o próximo método. Qual é o objetivo? Ou eu não entendi alguma coisa...
Olá. Não estou reclamando, é claro que não li todos os seus artigos. Duvido que tenha havido algum. Mas coisas simples não funcionam e nem mesmo está descrito como deveriam funcionar.
Aqui você tem elementos gráficos padrão. A propósito, você não tem nem mesmo exemplos de muitos elementos básicos (Editar, nesse caso).
Portanto, CreateEditField() não funciona. Ele falha no método CreateNewStdGraphObjectAndGetCtrlObj(). Aqui está ele:
Bem, o controle m_list_charts_control está vazio... portanto, nada é adicionado e o método não retorna nada.
Em geral, há erros suficientes. Tenho a impressão de que ninguém usa a biblioteca na prática. Pegue uma ferramenta com o único tipo permitido de preenchimento IOC. Bem, ela não funcionará. Ela não o define corretamente. Tive que editar muitos métodos.... Você só precisa passar por seu método de negociação. E o método inicial na inicialização corrige o preenchimento, mas o método de negociação não o pega.
Método CTrading::OpenPosition()
Ok, encontramos o tipo correto de preenchimento, se ele não estiver explicitamente especificado na ordem.
Mas depois passamos a variável original para o próximo método. Qual é o objetivo? Ou eu não estou entendendo alguma coisa...
Essa discussão tem algo a ver com esse artigo específico? Não.
CreateEditField() em Engine.mqh
CreateEditField() em Engine.mqh
Bem, o CreateEditField() não funciona. Ele falha no método CreateNewStdGraphObjectAndGetCtrlObj().
Por que você está se intrometendo em métodos privados? Eles são necessários apenas para que a biblioteca funcione.
O usuário precisa de métodos públicos. O usuário final não precisa do trabalho dos métodos internos.
Se você quiser entender o funcionamento de tudo isso, então os artigos que descrevem toda essa cozinha são escritos para esse fim. Não está muito claro o que e como você quer fazer. Você não diz, não dá exemplos, apenas aponta para uma linha tirada de um grande número delas e diz que não funciona....
Em geral, há articulações suficientes. Tenho a impressão de que ninguém usa a biblioteca na prática.
Se você não ler a descrição e tentar modificar e usar métodos internos por conta própria, não é o autor que tem bugs suficientes, mas aquele que a modifica.
E, sim, a biblioteca ainda está em desenvolvimento.
Vou dar uma olhada no tipo de preenchimento, obrigado.
Mas é melhor discutir isso na discussão dos artigos correspondentes, para que você possa ver a descrição de uma só vez, em vez de falar sobre uma coisa na discussão de outra.
Não tenho vontade de entrar lá. Se tudo estivesse funcionando, eu nem abriria.
O que não está funcionando? O código, por favor. Apenas dizer que não está funcionando não é produtivo.
O que não está funcionando para você? O código, por favor. Apenas dizer que não está funcionando não é produtivo.
Concordo que isso não é produtivo. É por isso que forneci o máximo de detalhes neste comentário https://www.mql5.com/ru/forum/438481/page2#comment_53551638.
Forneci o máximo de detalhes neste comentário.
O máximo de detalhes é um código que você pode compilar, executar, ver o que não funciona e encontrar e relatar a causa.
Sem testes, os artigos não são publicados. Tudo funciona nos testes. É por isso que estou perguntando pela terceira vez: o que você está fazendo e o que não funciona. O código, por favor.