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

 
Priffekt:
Boa tarde, mudei todos os valores, mas estou interessado na possibilidade de desativar a própria função nas configurações da EA.

Bom dia.

Quando você cola um pedaço de código, use o botão </>, ele será muito mais legível, eu escrevi acima que "é melhor anexar desta forma".

No correio 8518 eu lhe enviei seu próprio código no qual eu já acrescentei o interruptor. Basta separar a primeira linha das variáveis de entrada, a segunda linha da OnTick.

 
Sergey Voytsekhovsky:

É claro que não sou muito adequado para o papel de conselheiro, mas a tarefa parece não ser difícil.

Note que eu não entrei em seu código em si, há muita controvérsia, mesmo para mim (dummies), a começar pelo fato de que sua função é do tipo void. Este tipo é usado ou para indicar que a função não retorna um valor, ou como um parâmetro da função indica a ausência de parâmetros. E você tem retorno(Existente) no final de seu código;

Declare uma variável de entrada, escreva-a como um parâmetro para sua função e saia da função se você definir 'esta variável como Falsa'.

O destaque está absolutamente errado. Ninguém proíbe o tratamento de variáveis declaradas globalmente.

int n = 0;

int OnInit()
 {
  f();
 }

void OnTick()
 {
  Print(n);
  f();
 }

void f()
 {
  n += n*3+12;
 }
 
Priffekt:
Boa tarde, mudei todos os valores, mas estou interessado na possibilidade de desativar a própria função nas configurações da EA.

Se você quer ser capaz de desativar uma função nas configurações da EA, você tem que definir uma bandeira variável

input bool flag = true; // флаг отключения

void OnTick()
 {
  if(flag)
   f();
 }

void f()
 {
  // что-то выполняем
 }
A função f() só será executada se a bandeira == verdadeira;
 
Alexey Viktorov:

Isto é absolutamente incorreto. Ninguém proíbe o processamento de variáveis declaradas a nível global.

Estranho, esta é na verdade uma citação do manual da MQL5, em sua totalidade se parece com isto:

"O tipo vazio e a constante NULL".

O tipo vazio de sintaxe é um tipo fundamental, juntamente com os tipos char, uchar, bool, short, ushort, int, uint, color, long, ulong, datetime, float, double e string. Este tipo é usado ou para indicar que a função não retorna um valor, ou como um parâmetro de função para indicar a ausência de parâmetros.

Uma variável constante pré-definida NULL é de tipo nulo. Pode ser atribuído a variáveis de qualquer outro tipo fundamental sem transformação. A comparação de variáveis de tipos fundamentais com o valor NULL também é permitida ".


Citei este fragmento porque a função no texto do autor tem o tipo vazio, ou seja, ele não deve retornar nada além de ".retorno(Existente);". O que provavelmente está errado, você não acha?

Toda a discussão sobre o tratamento de dados nunca foi sequer aprovada. Posso estar errado em algum lugar, já que estou apenas aprendendo o básico, mas obrigado pela informação de qualquer forma.

 
 
 
Alekseu Fedotov:

"...retorno(Existente);" ,

valor de retorno, por função

como este

Sim, você está certo, eu estava desatento e atribuí este retorno à função anterior (acima da qual).

 
Alexey Viktorov:

Não é disso que se trata... Eu simplesmente não li o destacado com atenção.

O viod destacado significa sem parâmetros. Mas não é preciso escrevê-lo. Sem parâmetros, portanto, não...

Sim, você está certo, eu também estava desatento.

 

Pergunta para os especialistas.

Estou tentando escrever um EA, encontrei um roteiro que se adapta às minhas necessidades em termos de funcionalidade. Quero fazer disso uma função, estou preparando o ambiente, é claro que há interseções em bibliotecas padrão. Quero entender a diferença entre estas entradas e se o sinal " * " em si mesmo tem algum significado secreto, é possível renomeá-las em um único tipo dentro das funções futuras?

CTrade         trade;
CPositionInfo  apos;
CSymbolInfo    asymbol;


CTrade         *m_trade;
CSymbolInfo    *m_symbol;
CPositionInfo  *m_position_info; 

 

Ajuda, como posso descobrir a primeira coordenada da linha de tendência?

price = NormalizeDouble(ObjectGetValueByShift("trend",0),Digits);//ЦЕНА НА ТЕКУЩЕМ