[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?
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)
{
// расчёт для буферов индикатора
}
elsereturn(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.
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.
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.
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:
Então, como fazer a linha tampão passar por dois (três, etc.) candelabros em vez de cada um?
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):
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.
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.
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):
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.
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:
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.
É 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?