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

 
Alexey Viktorov #:

Bem, Artem... você assustou a todos. Ninguém pergunta nada... Então eu vou tomar vodka, a cerveja não ajuda...

Talvez eu vá direto ao extremo, para drogas :)

Em geral, é triste quando um fórum técnico, em um tópico técnico, inicia uma palhaçada.

 
E, em geral, depois do primeiro quartilho de cerveja e vodka, um pensamento. O objetivo de um laço intutivo é descobrir o que o usuário entrou e enviá-lo de volta para ))))
 

Voltando ao StringToEnum, encontrei uma solução relativamente universal para casos em que as enumerações são numeradas sequencialmente (1, 2, 3, ...).

Para numeração explícita de seqüências com grandes valores não funcionará (por exemplo, ENUM_TIMEFRAMES). Mas, se você usar seu próprio enumero sem numeração explícita (ou pelo menos numeração seqüencial) - a solução funcionará.

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

Para todos os outros casos você precisa de bicicletas, como matrizes estáticas de nomes de cada valor possível e busca de cordas nesta matriz.

 
Maksim Emeliashin matrizes estáticas de nomes de cada valor possível e busca de cordas nesta matriz.

Qual é o objetivo de tudo isso? Você quer substituir os valores numéricos de ENUM_TIMEFRAMES por seus próprios valores? Ou o quê?

 
Por favor, ajude-me, eu desenho duas linhas Gann e elas se interceptam em um determinado ponto, preciso saber as coordenadas do ponto de interseção dessas linhas.
Arquivos anexados:
 
12345678902003 #:
Ajude por favor, eu desenho duas linhas Gann e elas se interceptam em um determinado ponto, preciso saber as coordenadas do ponto de interseção dessas linhas.
Equação de linha para ajudar
 
Artyom Trishkin #:
A equação em linha reta é uma ajuda

Obter os preços das linhas retas em cada barra e comparar ou encontrar a diferença, em locais onde os sinais das diferenças de cruzamento mudam) A propósito, pode não haver igualdades na barra.

 
Valeriy Yastremskiy #:

Obter os preços das linhas retas em cada barra e comparar ou encontrar a diferença, em locais onde os sinais das diferenças de cruzamento mudam) A propósito, pode não haver igualdades na barra.

>=, <=
 

Boa tarde a todos.

Estou reescrevendo um EA de MQL4 para MQL5. Não entendo como obter a razão para fechar uma posição por SL.

Preciso dele para tomar uma decisão sobre o que fazer a seguir.

No terminal MT5, você pode selecionar uma negociação, ordem ou posição na janela do histórico.

 
Maksim Emeliashin matrizes estáticas de nomes de cada valor possível e busca de cordas nesta matriz.

Para a MQL esta função não funcionará corretamente

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

https://www.mql5.com/ru/docs/strings/stringcompare

Parâmetros

fio1

[em] O primeiro fio.

fio2

[em] Segundo fio.

case_sensitive=verdadeiro

[em] modo sensível ao caso. Se for verdade, então "A">"a". Se falso, então "A"="a". O valor padrão é verdadeiro.

Se houver duas constantes no enum, por exemplo ENUM1 e enum1, então na i_str: a função"enum1" pode retornar o valor da constanteENUM1. Por que StringCompare? Se isso puder ser feito da seguinte maneira:

template<typename T>
bool StringToEnum(const string i_str, T &o_val)
{
   for(int i = INT_MIN; i <= INT_MAX && !IsStopped(); i++) // перебор всех возможных значений int
      {
         o_val = (T)i;
         if(i_str == EnumToString(o_val))
            return(true);
      }
   o_val = WRONG_VALUE;
   return(false);
}
Razão: