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

 

Olá.

Você pode me dizer se é possível calcular a distância em pontos entre dois mastros?

Minha variante é dada abaixo, mas não funciona como originalmente pretendido.

Agradecemos antecipadamente.

  int g;
  double maHX_fast=iMA(NULL,fast_maHX_timeframe,fast_maHX_period,0,fast_maHX_method,fast_maHX_price,0);
  double maHX_slow=iMA(NULL,slow_maHX_timeframe,slow_maHX_period,0,slow_maHX_method,slow_maHX_price,0);
  g = maHX_slow - maHX_fast;
  Alert (g);
 
nemo811:

Minha variante é dada abaixo, mas não funciona como originalmente pretendido.

Encontrei um erro. Aqui está uma versão funcional:

  double g;
  double maHX_fast=iMA(NULL,fast_maHX_timeframe,fast_maHX_period,0,fast_maHX_method,fast_maHX_price,0);
  double maHX_slow=iMA(NULL,slow_maHX_timeframe,slow_maHX_period,0,slow_maHX_method,slow_maHX_price,0);
  g = (maHX_slow - maHX_fast)/Point;
  Alert (g);
 

Boa tarde....

Como transferir o valor próximo do preço de uma ordem de um terminal para outro, negociando no mesmo par de moedas ?

 
TANKER:

Boa tarde....

Como transferir o valor próximo do preço de uma ordem de um terminal para outro, negociando no mesmo par de moedas ?


Se você está fazendo tal pergunta, então eu não acho que você mesmo possa fazê-lo.
 

Boa noite a todos!

Surge a seguinte pergunta sobre arrays.

Suponhamos que precisamos analisar n barras para uma certa flutuação, selecioná-la, colocá-la em uma matriz e trabalhar com isso...

Abaixo está algum código; acho que os comentários explicarão tudo.

A lógica é a seguinte:

1. Estabelecemos o número necessário de barras.

2. Circule através de tudo o que está no circuito.

Procure o cumprimento da condição especificada(close_1>close_2&close_2<close_3).

4. Se a condição for cumprida, então calculamos a diferença entre o preço de fechamento fechamento_1 e fechamento_2.

E depois as próprias perguntas:

1. Como formar corretamente um array e escrever ali valores de diff (é claro, a dimensionalidade do array é determinada em função do número de valores obtidos)?

2. Calcular e exibir o número de elementos da matriz ???

3. Selecione, por exemplo, 3, 6, 7 elementos e calcule sua soma ???

4. e finalmente, por exemplo, imprimir/alertar diretamente para produzir a matriz inteira ao invés de elementos individuais ???

#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
   //определяем переменные
   int i, bars;
   double close_1, close_2, close_3;//цена закрытия
   double diff;//вычисление разности close_1 и close_2
   double Mas[];//массив куда надо заносить данные
   
   
   //устанавливаем значения переменных
   bars=60;//количество баров для анализа
   
   for(i=1;i<=bars;i++)
   {
      close_1=iClose(NULL,PERIOD_M1,i);
      close_2=iClose(NULL,PERIOD_M1,i+1);
      close_3=iClose(NULL,PERIOD_M1,i+2);
      
      //условие для отбора в массив
      if(close_1>close_2&&close_2<close_3)//если выполняется это условие, тогда
      {
         diff=close_1-close_2; //считаем разность и записываем это дело в массив 
         
         /*
         Собственно вопросы:
         1. Как правильно сформировать массив и записать туда полученные значения diff ???
         2. Посчитать и вывести количество элементов в массиве ???
         3. Выбрать например 3, 6, 7 элемент и посчитать их сумму ???
         4. И последнее, непосредственно вывести например в Print/Alert весь полученный массив, а не только отдельно взятый элемент ???
         */
         
         //Это просто вывод, чтобы удостовериться что наше условие работает, можно потереть... 
         Alert("i ",i," diff: ",DoubleToStr(diff,5));
         
      }
   }


   return(0);
  }
//+------------------------------------------------------------------+
E aqui está uma imagem para deixar claro qual condição processamos. : ))

Agradecemos antecipadamente a todos!

 
NickXXX:

Boa noite a todos!

Surgiu a seguinte pergunta sobre as arrays.

Suponha que queremos analisar n barras para uma determinada oscilação, selecioná-la, armazená-la em uma matriz e trabalhar com isso...

Rir após a palavra indicador.

É mais fácil criar um indicador, já tem oito matrizes de proteção, colocar toda a lógica nele e depois abordar os elementos necessários através do iCustom

Na impressão/alerta todo o conjunto é de certa forma ilegível, mas através da enumeração e da criação de um fio longo no laço é bem possível.

3. Selecione, por exemplo, 3, 6, 7 elementos e calcule sua soma ???

Ou não brinque sobre isso ou leia a documentação.

double Summa=Mas[3]+Mas[6]+Mas[7];

Leitura recomendada https://book.mql4.com/ru/variables/arrays

https://docs.mql4.com/ru/array

 
splxgf:

Rir após a palavra indicador.

É mais fácil criar um indicador, já possui oito matrizes de proteção, transferir toda a lógica para ele e depois abordar os elementos necessários através do iCustom

Na impressão/alerta, todo o conjunto é um pouco ilegível, mas através da enumeração e da criação de um fio longo no laço é bem possível.

Ou não brinque desta maneira, ou leia a documentação.

double Summa=Mas[3]+Mas[6]+Mas[7];

Leitura recomendada https://book.mql4.com/ru/variables/arrays

https://docs.mql4.com/ru/array

Sim, você não precisa perguntar sobre summa). E não se trata do indicador aqui. É um exemplo para que eu possa manejar os arrays corretamente.

Já vi o artigo recomendado, mas isso não me ajudou a lidar com esta questão.

Portanto, minha pergunta ainda é relevante... Como construir uma matriz neste exemplo? Eu ficaria muito grato se você pudesse me dar o código para que eu fique mais claro. É mais fácil entender do que estamos falando.

 

melhor para os indicadores de fumaça, todos os cálculos estão ligados às barras, e a numeração das barras começa de zero e a matriz é deslocada a cada nova barra. O uso de um indicador permitirá transferir a lógica de trabalho com arrays para o sistema, além de acrescentar recursos visuais, além de uma fácil utilização de um EA.

Faça um indicador, caso contrário é muito difícil ligar os elementos calculados da matriz com as barras no gráfico.

 
splxgf:

melhor para os indicadores de fumaça, todos os cálculos estão ligados às barras, e a numeração das barras começa de zero e a matriz é deslocada a cada nova barra. O uso de um indicador permitirá transferir a lógica de trabalho com arrays para o sistema, além de acrescentar recursos visuais, além de uma fácil utilização de um EA.

Faça o indicador, caso contrário será muito difícil amarrar os elementos calculados da matriz às barras do gráfico.

Ok, eu entendo, é melhor ler tudo no indicador e enviar valores para o Consultor Especialista.

Mas a questão aqui é um pouco diferente, não posso preencher a matriz com dados, ela exibe zeros. Quero entender isso.

Mais uma vez, usando este exemplo. Ligando as barras que tenho, basta ir até i sequencialmente e trabalhar a condição correta close_1>close_2&close_2<close_3 (só por exemplo).

E agora o mais interessante é que calculamos diff=close_1-close_2. Como colocar este valor de dif em array?

Acho que podemos fazer uma variável adicional int n e aumentá-la em 1 (n++) se a condição, obteremos quantas vezes a condição funcionou e tomaremos este número como uma dimensão.

Mas ainda assim, como colocar o valor difuso em uma matriz???

 
NickXXX:

Entendo, é melhor ler tudo no indicador e enviar os valores para o Consultor Especialista.

Mas a questão é um pouco diferente, não posso preencher a matriz com dados, ela me produz zeros. Quero entender isso.

Mais uma vez, usando este exemplo. Ligando as barras que tenho, basta ir até i sequencialmente e trabalhar a condição correta close_1>close_2&close_2<close_3 (só por exemplo).

E agora o mais interessante é que calculamos diff=close_1-close_2. Como colocar este valor de dif em array?

Acho que com o tamanho podemos fazer uma variável adicional int n e aumentá-la em 1 (n++) em se condição, obteremos quantas vezes a condição funcionou e tomaremos este número como tamanho.

Mas ainda assim, como colocar um valor dif???

Olhe, provavelmente eu sou uma alcaparra neste momento, mas presumo que você esteja perplexo por eu estar usando um roteiro neste exemplo. Você quis dizer isso quando escreveu sobre o indicador? Se o fiz, então faço todos os cálculos dinâmicos em um indicador ou em um Expert Advisor diretamente. Acabei de lançá-lo uma vez, olhei para ele e depois corrigi o código)))))

A pergunta anterior ainda é relevante. O assunto da matriz não está resolvido).