Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 852

 
Como encontrar o valor máximo de High[] entre várias barras?
 

É melhor usar as novas características CopyHigh do mql4 e a função matemática MathMax

Ou iHighest

 

Bom dia, diga-me onde está o erro.

/////////////////////////////////////////////////////////////////////////////////////////////////////

  //////////////////////////////////Зона консолидации/////////////////////////////////////////////////

  ///////////////////////////////////////////////////////////////////////////////////////////////////

  if(Hour()>=10)

  {

   for(x9=2; x9<=5; x9++)

   {

    x10=Hour()-x9;//x10 -номер свечи от которой считаем восемь свечей назад

    if(x10>=0)

    {

     int Minn=iLowest(NULL, PERIOD_H1, MODE_LOW , x10+8, x10);

     int Maxx=iHighest(NULL, PERIOD_H1, MODE_HIGH, x10+8, x10);

     z11 =iHigh(NULL,PERIOD_H1,Maxx);

     z12 =iLow(NULL, PERIOD_H1,Minn);

     ZPB     =iTime(NULL,PERIOD_H1,x10+8);

     ZPB1     =iTime(NULL,PERIOD_H1,x10);

     if(z11-z12<=z10)

     {

      y4=ObjectCreate("Зона консолидации",OBJ_RECTANGLE,0,0,0,0,0);

      y4=ObjectSet("Зона консолидации",OBJPROP_WIDTH,2);

      y4=ObjectSet("Зона консолидации",OBJPROP_COLOR,Blue);

      y4=ObjectSet("Зона консолидации",OBJPROP_BACK,true);

      y4=ObjectMove("Зона консолидации",0,ZPB,z11);

      y4=ObjectMove("Зона консолидации",1,ZPB1,z12);

     }

    }

   }

  }

  ////////////////////////////////////////////////////////////////////////////////////////////////////

A idéia é que a cada iteração o código deve verificar a largura do canal e se for menor ou igual ao valor atual(z11-z12<=z10), um retângulo deve ser desenhado, mas a saída é que todas as iterações são passadas primeiro, e depois há uma verificação de consistência.
 
AlexeyVik:

É melhor usar as novas características CopyHigh do mql4 e a função matemática MathMax

Ou iHighest

Se CopyHigh, então ArrayMaximum, IMHO...
 

Favor informar como lidar com o erro número 1 (ERR_NO_RESULT Sem erro, mas resultado desconhecido) ?

Quando um pedido está perdendo mais de $1 (100 pips a 0,01 lote) no EURUSD, meu Consultor Especialista tenta modificar o pedido (coloque TakeProfit do pedido a seu preço aberto).

Eu recebo este erro, o que devo fazer?

 
evillive:
Se CopyHigh, então ArrayMaximum, IMHO...
Sim, era isso que eu estava pensando... Pode haver alguns deslizes e mal-entendidos. Há cerca de um mês e meio, houve a mesma pergunta no quinto fórum. Então lá falei do ArrayMaximum e aqui um pouco me confundi...
 

Olá, estou trabalhando com 2000 médias móveis(MAs).

A tarefa é calcular o número de repetições do preço de MA em Close[1].

- Como posso implementar esta tarefa com o mínimo de recursos.

 
Top2n:

Olá, estou trabalhando com 2000 médias móveis (MAs).

A tarefa é calcular o número de repetições do preço de MA em Close[1].

- Como posso implementar esta tarefa com o mínimo de recursos.

Se não utilizarmos o período 1 em Preços fechados, o número de repetições será zero. Mas se considerarmos entrar em uma determinada faixa, a tarefa pode ser solvível e mais interessante. Alternativamente, encontramos os valores máximo e mínimo. Dividimos a diferença pelo intervalo. Em seguida, definimos um intervalo que se enquadra em cada muving (consideraremos um intervalo que corresponda a intervalos ou faixas). O índice da matriz com o número máximo de acertos é o vencedor. Talvez eu não tenha sido muito claro. É melhor que a tarefa seja resolvida em um tópico à parte. Pode haver várias variantes de solução. E no futuro alguém poderá precisar deles. E aqui eles não encontrarão o fim disto depois.
 

Olá, lendo o tutorial, cheguei às variáveis GV. Não consigo entender como eles funcionam. Por exemplo, o tutorial diz que as variáveis GV só podem ser do tipo duplo. Ok, o dobro, portanto, o dobro). Mas ao listar as funçõesGlobalVariableSet(),GlobalVariableGet(),GlobalVariableDel() eles escrevem que uma delas retorna tempo, outra retorna bool, etc. Fiquei confuso em minha cabeça, não entendo como eles estão organizados. Também comecei a estudar a MQL4 recentemente, recebi muitas informações novas em minha cabeça. Se possível, por favor, explique-me um exemplo de um dos problemas em um livro didático (ou qualquer um de seus próprios):

Tarefa 24. Vários Expert Advisors trabalham no terminal simultaneamente. O valor do depósito é de $10 000. O valor total de todos os pedidos em aberto não deve exceder 30% do valor do depósito. Cada consultor especializado deve receber a mesma quantia de dinheiro. Criar um programa de Expert Advisor contendo o cálculo da quantia de dinheiro alocada para negociação.

intPeritos;//Número de Consultores Especialistas. de especialistas

duplo Depo=10000.0, // Depósito especificado

Persente=30,// dada porcentagem

Dinheiro;// Fundos sendo procurados.

string Quantity="GV_Quantity"; // Nome da variável GV

//--------------------------------------------------------------------

int init()//Special. função init

{

Experts=GlobalVariableGet(Quantidade); // Obter valor de texto.

Peritos=Peritos+1; // Número de Peritos.

GlobalVariableSet(Quantidade, Especialistas); // Novo valor

Money=Depo*Persent/100/Experts; // Exp.

Alerta("Para o especialista na janela ", Symbol()," alocado ",Money);

retornar;// Saída do init()

}

//--------------------------------------------------------------------

int start()// Especial. início da função

{

int New_Experts= GlobalVariableGet(Quantity);// Novo número de exp.

se (Especialistas!=Novos_Peritos) // Se mudado

{

Experts=New_Experts; // Agora o número atual é

Money=Depo*Persent/100/Experts; // Novo valor de experto.

Alerta("Novo valor para especialista ",Symbol()",": ",Money);

}

/*

...

O código principal do Expert Advisor deve ser especificado aqui,

que utiliza o valor da variável Dinheiro

...

*/

retornar;//sair do início()

}

//--------------------------------------------------------------------

int deinit()//Proper. função deinit()

{

se (Peritos ==1)// Se apenas um especialista..

GlobalVariableDel(Quantidade); //...eliminar variáveis GV

senão// Caso contrário..

GlobalVariableSet(Quantidade, Especialistas-1); //...diminuir em 1

Alerta("EA é descarregado da janela ",Symbol()); // Notificar sobre a descarga

retornar;// Saída de deinit()

}

 
Vinin:
Se você não usar o período 1 nos preços de fechamento, o número de repetições será zero. Mas se você contar atingindo alguma faixa, então o problema pode ser resolúvel e mais interessante. Alternativamente, podemos encontrar os valores máximo e mínimo. Dividimos a diferença pelo intervalo. Em seguida, definimos um intervalo que se enquadra em cada muving (consideraremos um intervalo que corresponda a intervalos ou faixas). O índice da matriz com o número máximo de acertos é o vencedor. Talvez eu não tenha sido muito claro. É melhor que a tarefa seja resolvida em um tópico à parte. Pode haver várias variantes de solução. E no futuro alguém poderá precisar deles. E aqui eles não encontrarão o fim disto depois.

Terei que pensar sobre isso, obrigado.

tópico separado - https://forum.mql4.com/ru/66882