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

 
Artyom Trishkin:

Pasta de armazenamento: Arquivo --> Abrir pasta de dados --> MQL4Experts\Here.ex4

Se este for o caso, mas a EA não é visível no navegador, então ... parabéns - você ficou sem possíveis programas no navegador. Você precisa apagar alguma coisa. Infelizmente, o MetaTrader4 tem um limite para o número de programas que o Navigator pode ver. Eu enfrentei este problema ao criar um grande número de indicadores. Para não apagar muitos deles eu simplesmente copiei o código em um arquivo de teste e o compilei e executei - é assim que sempre testei os indicadores que precisava em um arquivo - apaguei o conteúdo do arquivo, coloquei um novo código nele, compilei e testei - terminei. Depois o próximo - apagou o conteúdo do arquivo, inseriu novo código nele ..., e assim por diante em um círculo ...

Obrigado, vou dar uma olhada... Vou escrever de volta aqui... Não há muito no caminho do software...
 
Artyom Trishkin:

Pasta de arquivos: Arquivo --> Abrir pasta de dados --> MQL4Experts\Here.ex4

Se tudo é igual, mas a EA não é visível no navegador, então ... parabéns - você ficou sem possíveis programas no navegador. Você precisa apagar alguma coisa. Infelizmente, o MetaTrader4 tem um limite para o número de programas que o Navegador pode ver. Eu enfrentei este problema ao criar um grande número de indicadores. Para não apagar muitos deles eu simplesmente copiei o código em um arquivo de teste e o compilei e executei - é assim que sempre testei os indicadores que precisava em um arquivo - apaguei o conteúdo do arquivo, coloquei um novo código nele, compilei e testei - finalizei. Depois o próximo - apagou o conteúdo do arquivo, inseriu novo código nele ..., e assim por diante em um círculo ...

copiados no diretório de dados - exps, indicadores, scripts - não é suficiente. No NAVIGATOR ...Julho - não.

Na pasta, de onde eu inicio o terminal, ela também está presente. Não no NAVIGATOR.




ARTEM - OBRIGADO. REINICIEI O TERMINAL - ELE ESTÁ LÁ.



 

Quero criar um array e colocar valores no array criado, mas quero alimentar os valores através de variáveis de função, etc. Exemplo.

int q=8,w=9;

int mas[2]={q,w}. O que devemos fazer é mas[0]=q,mas[1]=w. Existe alguma maneira de substituir as variáveis que já armazenam os cálculos necessários e colocá-las em uma matriz? É possível fazer isso com macros?

 
Seric29:

Quero criar um array e colocar valores no array criado, mas quero alimentar os valores através de variáveis de função, etc. Exemplo.

int q=8,w=9;

int mas[2]={q,w}. O que devemos fazer é mas[0]=q,mas[1]=w. É possível criar um array substituindo variáveis que já armazenam os cálculos necessários e colocá-las no array? É possível fazer isso com macros?

Você não pode. No início desta semana, alguém discutiu isso no tópico "bugs, erros, perguntas"- o resultado é impossível.

 
Igor Makanu:

Você não pode, no início da semana, no tópico "bugs, bugs, perguntas" que alguém discutiu - o resultado é não

Estou vendo. Já vi alguém usar uma macro para atribuir o número de colunas ao declarar um array, embora seja proibido passar valores de colunas ou linhas ao inicializar um array através de uma variável em mql, mas alguém o fez através de uma macro. Aqui está o assuntohttps://www.mql5.com/ru/forum/95351.

#define ODD 5

duplo Max_D1[ODD];

duplo Low_D1[ODD];

 
Seric29:

Estou vendo. Já vi alguém usar uma macro para atribuir o número de colunas ao declarar uma matriz, embora seja proibido passar colunas ou linhas ao inicializar uma matriz através de uma variável em mql, mas alguém usou uma macro para fazer isso. Aqui está o assunto https://www.mql5.com/ru/forum/95351.

#define ODD 5

duplo Max_D1[ODD];

duplo Low_D1[ODD];

e qual é o objetivo desta ação? : uma matriz pode ser inicializada com variáveis em vez de constantes? - a resposta é não.

Sua macro fará o trabalho manual de atribuir um valor variável a cada elemento da matriz, mas o ponto não é alterado por isso

 
Igor Makanu:

e o objetivo desta ação? como você fez a pergunta? : uma matriz pode ser rubricada com variáveis em vez de constantes? - a resposta é não.

Sua macro fará o trabalho manual de atribuir um valor variável a cada elemento da matriz, mas a essência não mudará.

Bem, eu pensei que seria possível fazer algo com isso.

 
Igor Makanu:

e o objetivo desta ação? como você fez a pergunta? : uma matriz pode ser rubricada com variáveis em vez de constantes? - a resposta é não.

Sua macro fará o trabalho manual de atribuir um valor variável a cada elemento da matriz, mas o ponto não muda.

Você pode criar uma função que devolva um valor constante para resolver este problema?

 
Seric29:

Pode ser criada uma função que devolva um valor constante para resolver este problema?

não, você não pode

Você confunde as noções de inicialização e atribuição de um valor - a essência que eles têm, mas os momentos (quando) de uso são diferentes. A inicialização está na string onde você descreve uma array - lá você a inicializa com constantes e atribuição, quando você atribui valores arbitrários a uma array(elementos de array) em qualquer lugar depois de descrevê-la

Não sei como explicar o que você está perguntando e por que estou escrevendo que você não pode

Ao usar arrays não há tal problema que você levante, aparentemente desde o início da escrita do código você não assumiu o uso de um array, e agora você só tem que reescrever o código ou atribuir um valor variável a cada elemento do array manualmente.

Às vezes, para não "multiplicar" variáveis, posso usar um array se o array tiver mais de 3-4 elementos, o perigo de misturar o número de elementos do array enquanto escrevo o programa é alto; uso valores constantes definidos com #define - o código é legível e você não pode cometer um erro, algo como isto:

#define  open   0
#define  take   1
#define  loss   2
#define  profit 3
void OnStart()
  {
  double order[4];
  order[open] =  OrderOpenPrice();
  order[take] =  OrderTakeProfit();
  order[loss] =  OrderStopLoss();
  order[profit]= OrderProfit();
  }

talvez eu não entenda a inequívoca de sua pergunta:
Seric29:

Tal pergunta eu quero criar um array e imediatamente colocar valores no array criado, mas os valores que eu quero alimentar através de funções de variáveis, etc. Exemplo.

int q=8,w=9;

int mas[2]={q,w}. O que devemos fazer é mas[0]=q,mas[1]=w. É possível criar uma matriz substituindo variáveis que já armazenam os cálculos necessários e colocá-la em uma matriz? É possível fazer isso com macros?

ao descrever uma matriz? - precisa ser rubricado com variáveis? - respondeu 2 vezes acima

ou atribuir múltiplos valores variáveis a uma matriz? - a resposta também não é possível, mas devido a uma sintaxe inválida:

você não pode aplicar variáveis em chaves de fendas, isto é, {1,2,3} - isto será ignorado pelo compilador, mas {a,b,c} - você não pode fazê-lo, porque o compilador esperará ou uma operação aritmética (lógica) ou operador = (lvalue, rvalue) ... Portanto, você deve estudar a sintaxe do idioma, mas pode não ser sobre as capacidades lingüísticas.

 
Igor Makanu:

Não, você não pode.

Você mistura os conceitos de inicialização e atribuição de valores - a essência eles têm o mesmo, mas os momentos (quando) de uso são diferentes; a inicialização está na string onde você descreve uma array - lá você a inicializa com constantes e a atribuição é, após descrever uma array, você atribui quaisquer valores a uma array (elementos de array) em qualquer lugar que você queira.

Não sei como explicar o que você está perguntando e por que estou escrevendo que você não pode

Ao usar arrays não há tal problema que você levante, aparentemente desde o início da escrita do código você não assumiu o uso de um array, e agora você só tem que reescrever o código ou atribuir um valor variável a cada elemento do array manualmente.

Às vezes, para não "multiplicar" variáveis, posso usar um array se o array tiver mais de 3-4 elementos, o perigo de misturar o número de elementos do array enquanto escrevo o programa é alto; uso valores constantes definidos com #define - o código é legível e você não pode cometer um erro, algo como isto:

Bem, sim, há um uso híbrido dos elementos declarados no programa. Por exemplo, eu declaro parâmetros de entrada e a partir destes parâmetros eu preciso pegar variáveis globais e olhar através delas, mas há um problema parâmetros de entrada não podem ser um array, o 2º exemplo eu escrevo uma função e começo a processar através de loops, aqui também é melhor usar um array, eu começo argumentos para um array e novamente o array de variáveis é impossível e tem que ser como você escreveu acima de um valor em cada célula, o 3º exemplo seria bom para ser capaz de usar como argumentos função usando um array (aqui ele está em um budding) Quanto ao uso de arrays em vez de variáveis, sim, ele torna os programas compactos e eu o faço dessa forma também. Você pode escrever em variáveis no momento da inicialização em C++, talvez você não possa na versão 12 abaixo, e aqui eles a tornaram mais barata, o que levou a tais conseqüências. Em geral, eu compreendo e agradeço as respostas.

Razão: