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

 

Venha e me ajude.

A tarefa é encontrar o elemento mínimo na matriz[].

//+------------------------------------------------------------------+ 
//| Получим Lowest для заданного промежутка                          | 
//+------------------------------------------------------------------+ 
double iLowMin(int ot,int bands,double &buffer[])
  {
   double result=-1;
   result=buffer[ArrayMinimum(buffer,ot,bands)];
   return(result);
  }
//+------------------------------------------------------------------+ 
//| Получим High для заданного номера бара                           | 
//+------------------------------------------------------------------+ 
double iHighMax(int ot,int bands,double &buffer[])
  {
   double result=-1;
   result=buffer[ArrayMaximum(buffer,ot,bands)];
   return(result);
  }

O problema é resolvê-lo, mas o mínimo está me matando. Tentei tudo, as matrizes de entrada estão cheias - examinei através da depuração, o que fazer?

Print("DwMin  ",iLowMin(rates_total-50,49,ExtLowerBuffer));

Talvez haja algumas nuances?

declarado via

   SetIndexBuffer(1,ExtLowerBuffer,INDICATOR_DATA);
 
Top2n:

Venha e me ajude.

A tarefa é encontrar o elemento mínimo na matriz[].

O problema é resolvê-lo, mas o mínimo está me matando. Tentei tudo, as matrizes de entrada estão cheias - examinei através da depuração, o que fazer?

Talvez haja algumas nuances?

declarado via

Experimente ArraySort e verifique a saída no primeiro índice.

 

Lá se vai a noosfera, assim que desisti da pergunta, comecei a dar um palpite: tenho 0 na matriz, então ela dá min = 0. Mas ainda há seções com valores não zero, e o min ainda é 0, bem, Deus me ajude, a pergunta está desligada))) Graças àqueles que acabaram de ler a pergunta, a noosfera lhe deu

 

Pergunta de atenção))

Como eu defino a barra no indicador a partir do qual devo iniciar o processamento?

if(prev_calculated>rates_total-Bmax)

{ ... то что нужно обрабатывать начиная с бара[rates_total-Bmax]

}

Tentando isto, o resultado é que o indicador faz um movimento de todo.

 

Olá novamente, você poderia me dizer se eu conheço o índice de um elemento de matriz e qual função é usada para descobrir seu valor?

int Totall=OrdersTotal();

preço duplo; // Preço do pedido selecionado

duplo Mas[]; //arranjo para colocar em ordem todas as encomendas

for(int i=0; i<OrdersTotal(); i++) //lote de ordem

{

if(OrderSelect(i,SELECT_BY_POS)) // if(OrderSelect(i,SELECT_BY_POS))

{Preço=Preço de Encomenda Aberto(); // Preencher matriz com preços

Mas[i] = Preço;

}

}

ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Agora os preços de abertura são ordenados em ordem decrescente

int Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND) // O índice do elemento mais próximo em valor do preço atual é determinado

 
Nauris Zukas:

Como encontrei antes de estudar as aulas, novamente há nuances que não estão descritas nos artigos ou em algum lugar tão escondidas que não é possível encontrar através de um mecanismo de busca. Um dia inteiro passado em vão à procura de explicações. Por exemplo, o que este símbolo significa e como ele afeta, caso contrário. Como visto abaixo no exemplo do stati, primeiro ele está lá e depois não está: &

Além disso, não está claro o que este símbolo significa: ~

*

As funções mql4, mql5 passam sempre uma matriz apenas por referência (& == ampersand)

Primeiro - nos parâmetros formais de uma função - há um amperímetro, indicando que não é a matriz em si que é passada para a função, mas um link para ela. E então - dentro da função - você já está trabalhando com a referência, o que significa que você não precisa especificá-la novamente.

O til (~) é escrito antes do nome do destruidor da classe - o construtor e o destruidor têm o mesmo nome que a própria classe, mas o destruidor tem ~.

Leia este artigo sobre quando usar referências e quando usar apontadores.

Embora, você ainda precise ler o básico.

 
vikzip:

Olá novamente, você poderia me dizer se eu conheço o índice de um elemento de matriz e qual função é usada para descobrir seu valor?

int Totall=OrdersTotal();

preço duplo; // Preço do pedido selecionado

duplo Mas[]; //arranjo para colocar em ordem todas as encomendas

for(int i=0; i<OrdersTotal(); i++) //lote de ordem

{

if(OrderSelect(i,SELECT_BY_POS)) // if(OrderSelect(i,SELECT_BY_POS))

{Preço=Preço de Encomenda Aberto(); // Preencher matriz com preços

Mas[i] = Preço;

}

}

ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Agora os preços de abertura são ordenados em ordem decrescente

int Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND) // O índice do elemento mais próximo em valor do preço atual é determinado

Value_element_array = Array[índice];

 

Aconselho, tenho um EA e tenho-o testado no trabalho em um computador normal, Windows hp. Tudo funciona bem e assim por diante.

Chego em casa, no macbook dos laptops domésticos, e absolutamente com os mesmos parâmetros na mesma ferramenta com o mesmo cronograma mostra um resultado completamente diferente no testador, alguma sugestão ou idéia por que assim?

 
Artyom Trishkin:

Array_element_value = Array[índice];


Obrigado, agora há um novo problema. Ao escrever a seguinte condição, ocorre um erro 'PriceBlizko1' - identificador não declarado. Por favor, explique por quê?

preço duplo; // Preço para o pedido selecionado

duplo Mas[]; //arranjo para organizar todos os pedidos

for(int i=0; i<OrdensTotal(); i++) // Laço de encomenda

{

if(OrderSelect(i,SELECT_BY_POS)) // if(OrderSelect(i,SELECT_BY_POS))

{


Price=OrderOpenPrice(); // Preencher a matriz com preços

Mas[i] = Preço;

}

}

ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Agora os preços de abertura são ordenados em ordem decrescente

int Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND); //O índice do elemento mais próximo em valor do preço atual é determinado

double PriceBlizko1=Mas[Blizko1];

}

se (PriceBlizko1-Bid>==30*Point) // se a ordem inferior for superior a 30 pontos !!!!!! NESTE STREET!!!!!

EncomendarEnviar(Símbolo(),OP_SELL,LtsS,Bid,2,0,Bid+30*Ponto); //Oponto de Venda Aberto

Alerta (GetLastError()); // Mensagem de erro.



 
vikzip:

Use o botão para inserir o código!

Razão: