Bom dia, por favor, informe como devolver um valor de uma lista de constantes na forma de texto.
Por exemplo, a função HistoryDealGetInteger retorna o valor int da listaENUM_DEAL_TYPE ao solicitar o evento. Como podemos obter informações do número devolvido que é "DEAL_TYPE_CREDIT - credit accrual". Depois de depurado este valor não será, naturalmente, necessário, int será suficiente para processar o evento, mas durante a depuração não está nada claro o que significam os números 3 ou 5 retornados pela função.
Свойства сделок - Торговые константы - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Bom dia, você poderia me dizer como devolver um valor como texto de uma lista de constantes?
Por exemplo, a função HistoryDealGetInteger retorna o valor int da listaENUM_DEAL_TYPE ao solicitar o evento. Como podemos obter informações do número devolvido que é "DEAL_TYPE_CREDIT - credit accrual". Depois de depurado este valor não será, naturalmente, necessário, int será suficiente para processar o evento, mas durante a depuração não está nada claro o que significam os números 3 ou 5 retornados pela função.
1) Eu não carreguei o histórico, na janela do gráfico durante o processo on-line eu tive tempo de carregar barras de 70 000 minutos. Estou carregando meu Conselheiro Especialista no Teste de Estratégia e, caso tenha escrito o número mínimo de barras para um determinado padrão, ele respondeu com "não há barras suficientes para análise". Eu imprimo iBars e diz 1200 barras. Carreguei o histórico (8 000 000 de barras). Reiniciado, as configurações mostram barras "999999999999" na janela e na história. Nova escreve "não há história suficiente". Imprimir iBars, novamente 1200. o que é isso e como resolver?
2) Na análise de múltiplas moedas, como posso forçar o indicador a não perder novos tiquetaques de entrada em outros pares de moedas, se as cotações forem subitamente congeladas no gráfico atual e o OnTick não chamar a verificação? Eu tentei o OnTimer mas ele não funciona no testador
Neste roteiro, estou experimentando o redimensionamento de matrizes dinâmicas que têm diferentes direções de indexação - para entender de que lado aparecem novas células após o aumento do tamanho da matriz
voidOnStart()
{
int a[], b[], size = 5, new_size = size + 5;
if( ArraySize( a ) != size )
ArrayResize( a, size, 0 );
if( ArraySize( b ) != size )
ArrayResize( b, size, 0 );
if( ArrayGetAsSeries( a ) )
ArraySetAsSeries( a, false );
if( !ArrayGetAsSeries( b ) )
ArraySetAsSeries( b, true );
for( int i = 0; i < size; i++ )
{
a[i] = i;
b[i] = i;
};
ArrayResize( a, new_size, 0 );
ArrayResize( b, new_size, 0 );
for( int i = 0; i < new_size; i++ )
{
Alert( "a", i, " ", a[i] );
Alert( "b", i, " ", b[i] );
Alert(" ");
};
}
E aqui está o resultado
. Acontece que a matriz b[] (que tem indexação reversa) de alguma forma duplica seus valores depois de aumentar o tamanho
. Por quê? Estou perdendo algo ou cometi algum erro?
Alexandr Sokolov direções de indexação - a fim de entender que lado novas células aparecem após o aumento do tamanho da matriz
E este é o resultado
Acontece que a matriz b[] (que tem indexação reversa) tem de alguma forma valores duplicados após o aumento do tamanho
Por quê? Estou perdendo algo ou cometi algum erro?
Em qualquer caso, não podemos confiar em nenhum valor nas células da nova matriz - estas são variáveis não inicializadas que podem conter qualquer lixo.
Em qualquer caso, não podemos confiar em nenhum valor nas células da nova matriz - estas são variáveis não inicializadas que podem conter qualquer lixo.
É verdade, mas há 2 mas 1) O espelhamento é observado em qualquer outro tamanho, não apenas, como no meu exemplo - 5 2) Se um array tem indexação reversa, então novas células devem aparecer no início do array - o que não é o caso
2) Se uma matriz for indexada ao contrário, então novas células devem aparecer no início da matriz - o que não é o caso
Por que devem aparecer novas células no início de uma matriz? - Se não estou enganado, deve ser escrito na ajuda, que quando você usar o ArraySetAsSeries(), a matriz não será redistribuída fisicamente na memória, mas a indexação reversa será aplicada ao acessar os elementos da matriz
Bom dia, por favor, informe como devolver um valor de uma lista de constantes na forma de texto.
Por exemplo, a função HistoryDealGetInteger retorna o valor int da listaENUM_DEAL_TYPE ao solicitar o evento. Como podemos obter informações do número devolvido que é "DEAL_TYPE_CREDIT - credit accrual". Depois de depurado este valor não será, naturalmente, necessário, int será suficiente para processar o evento, mas durante a depuração não está nada claro o que significam os números 3 ou 5 retornados pela função.
Bom dia, você poderia me dizer como devolver um valor como texto de uma lista de constantes?
Por exemplo, a função HistoryDealGetInteger retorna o valor int da listaENUM_DEAL_TYPE ao solicitar o evento. Como podemos obter informações do número devolvido que é "DEAL_TYPE_CREDIT - credit accrual". Depois de depurado este valor não será, naturalmente, necessário, int será suficiente para processar o evento, mas durante a depuração não está nada claro o que significam os números 3 ou 5 retornados pela função.
string s = EnumToString((ENUM_DEAL_TYPE) x)
string s = EnumToString((ENUM_DEAL_TYPE) x)
Você pode me dizer como resolver:
1) Eu não carreguei o histórico, na janela do gráfico durante o processo on-line eu tive tempo de carregar barras de 70 000 minutos. Estou carregando meu Conselheiro Especialista no Teste de Estratégia e, caso tenha escrito o número mínimo de barras para um determinado padrão, ele respondeu com "não há barras suficientes para análise". Eu imprimo iBars e diz 1200 barras. Carreguei o histórico (8 000 000 de barras). Reiniciado, as configurações mostram barras "999999999999" na janela e na história. Nova escreve "não há história suficiente". Imprimir iBars, novamente 1200. o que é isso e como resolver?
2) Na análise de múltiplas moedas, como posso forçar o indicador a não perder novos tiquetaques de entrada em outros pares de moedas, se as cotações forem subitamente congeladas no gráfico atual e o OnTick não chamar a verificação? Eu tentei o OnTimer mas ele não funciona no testador
E aqui está o resultado
. Acontece que a matriz b[] (que tem indexação reversa) de alguma forma duplica seus valores depois de aumentar o tamanho
. Por quê? Estou perdendo algo ou cometi algum erro?
E este é o resultado
Acontece que a matriz b[] (que tem indexação reversa) tem de alguma forma valores duplicados após o aumento do tamanho
Por quê? Estou perdendo algo ou cometi algum erro?
Em qualquer caso, não podemos confiar em nenhum valor nas células da nova matriz - estas são variáveis não inicializadas que podem conter qualquer lixo.
E este é o resultado
Acontece que a matriz b[] (que tem indexação reversa) tem de alguma forma valores duplicados depois de aumentar o tamanho
Por quê? Estou perdendo algo ou cometi algum erro?
É preciso virar o conjunto depois que ele for preenchido.
Em qualquer caso, não podemos confiar em nenhum valor nas células da nova matriz - estas são variáveis não inicializadas que podem conter qualquer lixo.
É verdade, mas há 2 mas
1) O espelhamento é observado em qualquer outro tamanho, não apenas, como no meu exemplo - 5
2) Se um array tem indexação reversa, então novas células devem aparecer no início do array - o que não é o caso
Você tem que virar a matriz depois de preenchê-la.
Também pensei nisso - pelo menos não vejo nenhuma outra solução no momento.
2) Se uma matriz for indexada ao contrário, então novas células devem aparecer no início da matriz - o que não é o caso
Por que devem aparecer novas células no início de uma matriz? - Se não estou enganado, deve ser escrito na ajuda, que quando você usar o ArraySetAsSeries(), a matriz não será redistribuída fisicamente na memória, mas a indexação reversa será aplicada ao acessar os elementos da matriz
SZZ: seu exemplo é complicado, eu o esbocei:
2022.04.18 21:31:59.223 tst EURUSD,H1: arr2 = 5 , 4 , 3 , 2 , 1 , 0 , 0 , 0 , 0 , 0 ,
2022.04.18 21:31:59.223 tst EURUSD,H1: arr1 = 1 , 2 , 3 , 4 , 5 , 0 , 0 , 0 , 0 , 0 ,
2022.04.18 21:31:59.223 tst EURUSD,H1: Redimensionar : 10 , 10
2022.04.18 21:31:59.223 tst EURUSD,H1: Tamanho inicial : 5 , 5