[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 78

 

Olá! Comecei a aprender mquel4. Vou usar um exemplo de um indicador simples que calcula o preço máximo e mínimo das velas e desenha linhas nos extremos das velas através de dois amortecedores na tela:

#property indicator_chart_window // Индик. рисуется в основном окне
#property indicator_buffers 2 // Количество буферов
#property indicator_color1 Blue // Цвет первой линии
#property indicator_color2 Red // Цвет второй линии

double Buf_0[],Buf_1[]; // Объявление массивов (под буферы индикатора)
//--------------------------------------------------------------------
int init() // Специальная функция init()
{
SetIndexBuffer(0,Buf_0); // Назначение массива буферу
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
SetIndexBuffer(1,Buf_1); // Назначение массива буферу
SetIndexStyle (1,DRAW_LINE,STYLE_DOT,1);// Стиль линии
return; // Выход из спец. ф-ии init()
}
//--------------------------------------------------------------------
int start() // Специальная функция start()
{
int i,// Индекс бара
Counted_bars; // Количество просчитанных баров 
//--------------------------------------------------------------------
Counted_bars=IndicatorCounted(); // Количество просчитанных баров 
i=Bars-Counted_bars-1;
// Индекс первого непосчитанного
while(i>=0) // Цикл по непосчитанным барам
{
Buf_0[i]=High[i]; // Значение 0 буфера на i-ом баре
Buf_1[i]=Low[i]; // Значение 1 буфера на i-ом баре

i--; // Расчёт индекса следующего бара
}
//--------------------------------------------------------------------
return; // Выход из спец. ф-ии start()
}

Então, como fazer a linha tampão passar por dois (três, etc.) candelabros em vez de cada um?

 
wolf05632:

Então, como faço para que a linha tampão passe por duas (três, etc.) velas ao invés de cada vela?

Primeiro, aprenda como inserir uma mensagem no código corretamente, usando o botão "SRC", para que ela tenha uma forma legível e se pareça com a do MetaEditor.


O segundo passo será sua tentativa de vincular a variável Counted_bars à declaração de if.

Por exemplo:

Entraremos com um cálculo indicador a cada segunda barra (saltar as ímpares, deixar as pares):

if (MathMod(Counted_bars, 2) == 0)
{
   // расчёт для буферов индикатора
}
else return(0);

Aqui você pode ler sobre a função MathMod(). Mas não é preciso usá-lo. Você pode inserir qualquer condição na declaração de if.

Mas não se esqueça que tais modificações de código causarão a perda de alguns valores no buffer. Se você precisa ou não, eu não sei. Tudo dependerá de sua tarefa.

 

Estou um pouco confuso. Eu tentei fazer o passo do ciclo igual a dois (acho que você teria o mesmo significado), mas não funciona. Eu não preciso passar por uma especificamente, mas por um número arbitrário de velas. Meu entendimento é que a estrutura deve ser assim:

matriz amortecedora[1]= matriz de castiçais[1] = matriz de castiçais[2] = matriz de castiçais

matriz de castiçais[2] = matriz de castiçais[2] = matriz de castiçais

matriz amortecedora[3]= matriz de castiçais[4]

...

matriz amortecedora[5]= matriz de castiçais[x] etc. Mas não funciona.

 
wolf05632:

Não vejo um padrão entre os índices de tampão e os índices de candelabro.

E seria ainda melhor se você anexasse uma foto do que você quer obter.

 

É assim

E eu preciso disso assim:

Mas não se apegue especificamente às linhas que estão sendo desenhadas através de uma vela, elas podem ser desenhadas através de duas, ou três, etc.

 
sergeev:

Acho que deveríamos ter levado isto para os telepatas em vez de aqui.

Ele só está brincando conosco.


Veja o código, você pode ver sem espaços onde o resultado do envio do pedido, seu código de erro e dígitos para o instrumento.
 

Depois é preciso usar um indicador tipo zig-zag (Meu ponto de vista):

#property indicator_chart_window // Индик. рисуется в основном окне
#property indicator_buffers 2 // Количество буферов
#property indicator_color1 Blue // Цвет первой линии
#property indicator_color2 Red // Цвет второй линии

double Buf_0[], Buf_1[]; // Объявление массивов (под буферы индикатора)
//--------------------------------------------------------------------
int init() // Специальная функция init()
{
   SetIndexBuffer(0, Buf_0); // Назначение массива буферу
   SetIndexStyle (0, DRAW_SECTION);
   SetIndexBuffer(1, Buf_1); // Назначение массива буферу
   SetIndexStyle (1, DRAW_SECTION);
   return; // Выход из спец. ф-ии init()
}
//--------------------------------------------------------------------
int start() // Специальная функция start()
{
   int i,// Индекс бара
   Counted_bars; // Количество просчитанных баров 
   //--------------------------------------------------------------------
   Counted_bars=IndicatorCounted(); // Количество просчитанных баров 
   if (MathMod(Bars, 2) != 0 && Counted_bars == 0)
      return(0);
   i = Bars-Counted_bars-1;
   // Индекс первого непосчитанного
   while(i >= 0) // Цикл по непосчитанным барам
   {
      if (MathMod(i, 2) == 0)
      {
         Buf_0[i] = High[i]; // Значение 0 буфера на i-ом баре
         Buf_1[i] = Low[i]; // Значение 1 буфера на i-ом баре
      }
   
      i--; // Расчёт индекса следующего бара
   }
   //--------------------------------------------------------------------
   return; // Выход из спец. ф-ии start()
}

Acho que você pode descobrir as mudanças. A única coisa em que eu estava errado, é melhor usar o parâmetro Bars em vez de IndicatorCounted() como um índice de barra a ser calculado.

Sua tarefa agora é levar o divisor para um parâmetro externo. Será igual ao número de candelabros passados.

 
grell:

Basta olhar para o código, você pode ver sem espaços onde o resultado do envio do pedido, seu código de erro e dígitos para o instrumento.

Exatamente. É por isso que estamos falando de telepatas.

Você nos deu o código antes:

Alert("Ordersend_Number",res,err);

Eu não procurei no código, mas, infelizmente, não encontrei o erro... Não tenho experiência em escrever Consultores Especialistas Multimoedas. Eu só conheço alguns princípios, só isso.

 
É óbvio que -1129 é o código de erro, onde você viu o número de erro 1292?
 
grell:
É claro que -1129 é um código de erro, onde você viu o número de erro 1292?

Qualquer coisa pode acontecer...

Você já testou seu EA apenas em um CD? O erro 129 leva muito tempo para aparecer? Ou o pedido abre após vários pedidos?