Por favor peça aos programadores ME que carreguem em CTRL+SHIFT+F e escrevam "MQL5Info". Corrigir os rudimentos encontrados nos ficheiros SB resultantes.
Demorei 2 horas a isolar o problema do código do projecto.
#define PRINT(x) Print(#x, ":", string(x))
template<typename DATA_TYPE>
struct Wrapper{
uchar type;
DATA_TYPE data;
template<typename T>
voidoperator=(T value){ // при замене данной строки на "void operator=(T &value){" происходит перезапись оператора присвоения в классе наследнике B (код не компилируется).this.data = value;
};
voidoperator=(DATA_TYPE &_data){
this.data = _data;
};
};
struct A{
string data;
voidoperator=(string value){
data = value;
};
};
struct B : Wrapper<A>{};
voidOnStart(){
B b;
string str_value;
b = str_value;
A a;
b = a;
B b1;
b = b1;
}
Usando o código acima tudo funciona como esperado, no entanto, se tentarmos alargar a funcionalidade e adicionar suporte não só para tipos simples como (string) da classe A, mas também para estruturas, acontece que o operador de atribuição de modelos da classe base substitui os operadores de atribuição padrão das classes descendentes, matando toda a funcionalidade. Outros operadores podem ser utilizados como soluções de trabalho, tais como "operador*=", mas é uma confusão.
Aos programadores: Acrescentar por favor a possibilidade de especificar a geração forçada de código para o operador de atribuição por defeito (copy constructor):
Pessoas conhecedoras, uma dica! Tenho um símbolo personalizado baseado num símbolo real. Como posso fazer com que uma troca esteja disponível a partir do gráfico deste símbolo? Ou será que não existe tal funcionalidade no MT5?
Nas versões recentes da MT, como parte da mudança de paradigma na manipulação de cordas, é visto como o abandono da utilização de cordas com terminação NULL. No entanto, o funcionamento da função StringSetLength levanta uma série de questões.
Com StringSetLength só se pode truncar o comprimento de uma corda mas nunca aumentá-lo, o que de alguma forma não faz sentido. É este o comportamento pretendido?
Sergey Dzyublik: Em versões recentes de MT, como parte da mudança de paradigma no manuseamento de cordas, vemos uma recusa em utilizar cordas com terminação NULL.
rsrozhkov: Pessoas conhecedoras, podem dar-me uma dica! Tenho um símbolo personalizado criado com base num símbolo real. Como posso fazer com que uma troca esteja disponível a partir do gráfico deste símbolo? Ou será que não existe tal funcionalidade no MT5?
A resposta é auto-explicativa. Um símbolo personalizado é obtido por algum tipo de transformação a partir de símbolos reais. Alguém (EA, script ou manualmente) tem de fazer a transformação inversa e enviar ordens para os símbolos reais.
Usando o código acima tudo funciona como esperado,
no entanto, se tentarmos alargar a funcionalidade e adicionar suporte não só para tipos simples como (string) da classe A, mas também para estruturas,
acontece que o operador de atribuição de modelos da classe base substitui os operadores de atribuição padrão das classes descendentes, matando toda a funcionalidade.
Outros operadores podem ser utilizados como soluções de trabalho, tais como "operador*=", mas é uma confusão.
Aos programadores:
Acrescentar por favor a possibilidade de especificar a geração forçada de código para o operador de atribuição por defeito (copy constructor):
Pode dizer-me se utilizo indicadores padrão na minha EA, por exemplo, iMA,
como definir os seus estilos de desenho para os exibir correctamente na janela de visualização?
Pode dizer-me se utilizo indicadores padrão na minha EA, por exemplo, iMA,
como posso definir estilos de desenho para que sejam exibidos correctamente na janela de visualização?
Como este:Cor de entrada média móvel personalizada
Como este:Cor de entrada média móvel personalizada
De facto, tem de escrever o seu próprio indicador. Reescrever os indicadores padrão não é a solução.
A questão era exactamente como definir o estilo para o indicador padrão.
Existe outra forma?
No entanto, o funcionamento da função StringSetLength levanta uma série de questões.
Com StringSetLength só se pode truncar o comprimento de uma corda mas nunca aumentá-lo, o que de alguma forma não faz sentido.
É este o comportamento pretendido?
Resultado:
Em versões recentes de MT, como parte da mudança de paradigma no manuseamento de cordas, vemos uma recusa em utilizar cordas com terminação NULL.
Poderia desenvolver esta ideia?
Pessoas conhecedoras, podem dar-me uma dica! Tenho um símbolo personalizado criado com base num símbolo real. Como posso fazer com que uma troca esteja disponível a partir do gráfico deste símbolo? Ou será que não existe tal funcionalidade no MT5?
A resposta é auto-explicativa. Um símbolo personalizado é obtido por algum tipo de transformação a partir de símbolos reais. Alguém (EA, script ou manualmente) tem de fazer a transformação inversa e enviar ordens para os símbolos reais.