Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1877

 

Estou diante de um comportamento estranho do terminal.

A situação é a seguinte: um Expert Advisor está trabalhando em um gráfico, que em um determinado momento abre outro gráfico e estabelece um determinado templo no novo gráfico. Este último modelo foi definido para o lançamento da segunda EA no novo gráfico.

Tudo funciona bem no meio da semana, mas quando o mercado é fechado, nos fins de semana, o novo templo é iniciado no novo gráfico (como pode ser visto ao mudar a aparência do gráfico), mas o segundo EA não começa lá. A única maneira de "empurrar" o segundo Expert Advisor é iniciar manualmente, em qualquer gráfico, qualquer script, mesmo um absolutamente vazio. Então o segundo especialista começa a trabalhar em um novo gráfico.

Escrevi este código no primeiro Expert Advisor tanto usando as funções ChartOpen e ChartApplyTemplate como usando a classe CChart - sempre acontece da mesma forma, em um mercado fechado o segundo Expert Advisor em um novo gráfico não começará até que eu "empurre" manualmente o terminal de alguma forma.

Quem pode ter sido confrontado com tal situação? Como lidar com isso, que maneira de "cavar"?

 
akskarabey ChartApplyTemplate como usando a classe CChart - sempre acontece da mesma forma, em um mercado fechado o segundo Expert Advisor em um novo gráfico não começará até que eu "empurre" manualmente o terminal de alguma forma.

Quem pode ter sido confrontado com tal situação? Como lidar com isso, que maneira de "cavar"?

Como você sabe que não começa?

P.S.

Experimente assim

int OnInit()
{
....
....

 ChartRedraw();
  return(INIT_SUCCEEDED);
}
 
Mihail Matkovskij #:

Você pode encontrar a constante na enumeração com uma função de força bruta (mesmo princípio do), traduzindo-a com EnumToString e comparando-a com a constante desejada. O que resta é devolver o resultado.

Podemos ter um exemplo (ou pelo menos uma linha chave), porque nada nos vem à mente? Você também teria que passar por uma enorme lista de valores, peneirando todos os esquerdinos ou você apenas procuraria por valores úteis? No momento, acho que não há nada para peneirar, não há canhotos na lista... mas não consigo ter acesso à idéia.

 
x572intraday #:

Você pode me dar um exemplo (ou pelo menos uma linha chave), porque eu não consigo pensar em nada? Será também uma enorme lista de valores com peneiração através dos valores à esquerda, ou existe apenas uma lista útil? No momento, acho que não há nada para peneirar, não há canhotos na lista... mas não consigo ter acesso à idéia.

Para evitar passar por todos os valores enuméricos possíveis (porque é realmente longo) os seguintes preparativos devem ser feitos(algo como caching). Então, com a ajuda desta função, você pode facilmente traduzir cordas/linhas para enumerar as faixas de conhecimento de todos os enumeros necessários. Ou pode-se pesquisar por enumeração em uma escala relativamente pequena.

template<typename T>
bool StringToEnum(const string i_str, T &o_val, int i_min_enum, int i_max_enum)
{
   for(int i = i_min_enum; i <= i_max_enum && !IsStopped(); i++) {
     o_val = (T)i;
     if(i_str == EnumToString(o_val))
       return(true);
   }
   o_val = WRONG_VALUE;
   return(false);
}


template<typename T>
bool StringToEnum(const string i_str, T &o_val) { return StringToEnum(i_str, o_val, INT_MIN, INT_MAX); } // медленный вариант
 
Vitaly Muzichenko #:

Como você determinou que não estava começando, como você pode dizer?

P.S.

Experimente assim

O segundo especialista na seção OnInit faz conclusões em log e não há mensagens de log. O registro não contém sequer uma mensagem do terminal sobre o início do Expert Advisor. E o nome do Expert Advisor não aparece na tabela no canto superior direito.

 
12345678902003 #:
E que função é utilizada para este fim? MqlRates? Se eu usar ObjectGet, devo especificar a propriedade do objeto lá; se eu usar OBJPROP_PRICE, como devo fazer para que ele pegue o preço até a barra atual.

Get is Get. E há uma função para obter preço ou tempo em um bar de um objeto por nome ou por tipo de objeto e nome obter uma certa propriedade do objeto. Não o número de barras, mas o deslocamento a partir do zero é utilizado.

 
Valeriy Yastremskiy #:

Get is Get. E há uma função para obter preço ou tempo em um bar de um objeto por nome ou por tipo de objeto e nome obter uma certa propriedade do objeto. Não o número de barras, mas o offset a partir de zero é utilizado.

Isto pode ser feito usando a função ObjectGetValueByTime().

Exemplo

double p = ObjectGetValueByTime( 0,"имя объекта...",Time[0]);
 
Eu tenho o seguinte problema - a pasta de indicadores do Terminal\MQL4\ tem indicadores em sua lista de indicadores, mas o próprio terminal MQL4 não tem esses indicadores em sua lista a partir da qual esses indicadores são arrastados para o gráfico. Como fazer esses indicadores aparecerem na lista de terminais, para que possam ser usados no gráfico do terminal MQL4? Na imagem à direita estão os indicadores que estão disponíveis no terminal MQL4 e à esquerda estão os indicadores do mesmo terminal na pastaMQL4 4\Indicadores (como exemplo)
Arquivos anexados:
 
Halina Okopna-Pecuch #:
Tenho o seguinte problema - a lista de indicadores na pasta Terminal\MQL4\Indicadores contém indicadores, mas no terminal MQL4 em sua lista a partir da qual esses indicadores são arrastados no gráfico, eles não estão. Como fazer esses indicadores aparecerem na lista de terminais, para que possam ser usados no gráfico do terminal MQL4 ? Na imagem à direita estão os indicadores que estão disponíveis no terminal MQL4 e à esquerda estão os indicadores do mesmo terminal na pastaMQL4 4\Indicadores (como exemplo )

Estes provavelmente não são indicadores.

 
Halina Okopna-Pecuch #:
O problema é o seguinte - a pasta Terminal\MQL4\Indicadores tem indicadores na lista de indicadores, mas o próprio terminal MQL4 não tem estes indicadores em sua lista a partir da qual estes indicadores são arrastados para um gráfico. Como fazer esses indicadores aparecerem na lista de terminais, para que possam ser usados no gráfico do terminal MQL4? Na imagem à direita estão os indicadores que estão disponíveis no terminal MQL4 e à esquerda estão os indicadores do mesmo terminal na pastaMQL4 4\Indicadores (como exemplo )

Tente deixar cair esses arquivos nas pastas de Especialistas e Scripts e veja o que aparece em suas respectivas pastas no terminal.