[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 522

 
MaxZ:

Aqui está o famoso idnikator.

Você pode tirar uma foto como esta!? :))))))



Aqui está.

 
Aqui está a página do livro de textohttps://docs.mql4.com/ru/array/ArrayCopy
Diz isso:
ArrayCopy(array2,array1,0,Bars*6-60,60);
// теперь array2 содержит 10 последних баров из истории (имеется в виду, что последний бар - это текущий бар, бар с индексом [0])

Por que o array2 conteria as últimas 10 barras?
Porque as barras*6 - 60 não devolverão o valor 10. Eu não notei nenhuma lógica.
Por exemplo, existem 1000 barras na história. Depois Bars*6 - 60 = 1000*6 - 60 = 6000 - 60 = 5940. Onde estão as últimas 10 barras?
 
hoz:
Aqui está a página do livro de textohttps://docs.mql4.com/ru/array/ArrayCopy
Diz isso:

Por que o array2 conteria as últimas 10 barras?
Porque as barras*6 - 60 não devolverão o valor 10. Eu não notei nenhuma lógica.
Por exemplo, existem 1000 barras na história. Depois Bars*6 - 60 = 1000*6 - 60 = 6000 - 60 = 5940. Onde estão as últimas 10 barras?

Você me surpreende novamente! Os chamados últimos 10, de 0 até a 10ª barra que temos no gráfico em contato com o preço! Esqueça a trigésima e cinco milª barras da história! Já passamos por eles, e precisamos deles apenas para o testador. E precisamos dos mais recentes, começando do zero, e claro, os novos no futuro - é para lá que estamos indo! ;))
 
borilunad:

Você me surpreende novamente! Os chamados últimos 10, de 0 até a 10ª barra que temos no gráfico em contato com o preço! Esqueça a trigésima e cinco milª barras da história! Já passamos por eles, e precisamos deles apenas para o testador. E precisamos dos mais recentes, começando do zero, e claro, os novos no futuro - é para lá que estamos indo! ;))

Este último, ou seja, mais próximo do preço atual, eu já entendi. Mas este pedaço de código debarras*6 - 60 eu não entendo. O que ele retornará? Quero entender como isso pode ser calculado logicamente. Posso pedir-lhe que explique? Talvez seja fácil para alguém, mas eu não sou um programador por educação, então estou tendo dificuldade para entender este fluxo de informações. Estou lendo o tutorial, e estou gradualmente fazendo as perguntas com as quais me deparo. Espero muito sinceramente que as perguntas sejam em breve mais relevantes do que são agora.
 
hoz:
Aqui está a página do livro de textohttps://docs.mql4.com/ru/array/ArrayCopy
Diz isso:
Por que o array2 conteria as últimas 10 barras?
Porque as barras*6 - 60 não devolverão o valor 10. Eu não notei nenhuma lógica.
Por exemplo, existem 1000 barras na história. Depois Bars*6 - 60 = 1000*6 - 60 = 6000 - 60 = 5940. Onde estão as últimas 10 barras?
5940 -Índice inicial da matriz original para copiar as últimas 10 barras (barra - 6 índices).
 

Rolo:
5940 - O índice inicial da matriz inicial para copiar as últimas 10 barras (barra é 6 índices).

Caros especialistas, não há um erro no livro didático?

Aqui está o meu raciocínio:

No início do código,int é chamada a funçãoArrayCopyRates que copia os dados das barras do gráfico atual em uma matriz bidimensional do tipo RateInfo[][6] e retorna o número de barras copiadas ou -1 em caso de falha de acordo com o exemplo desta função:

double array1[][6];
ArrayCopyRates(array1,"EURUSD", PERIOD_H1);
Print("Текущий бар ",TimeToStr(array1[0][0]),"цена открытия ", array1[0][1]);

a barraatual é a barra com índice 0-0 , assim, voltando ao código original, copiamos o elemento com índice 0-0 (a barra atual) do array1 , para array2 com índice 0-0, obtemos as últimas 10 barras (onde a última barra é a barra atual, a barra com índice [0]), o que é contrário ao que escrevemos no tutorial... Assim, copiando elemento com barras de índice*6-60,60 de array1 em array2 com índice 0, obtemos informações sobre barras da história.

 

Olá.

Eu tenho um indicador personalizado.

Estou escrevendo um EA...e tenho uma pergunta...como acessar meu indicador? Especificamente, pegue os dados da barra especificada (no meu caso, eu preciso pegar a 2ª barra). Eu tenho windowsPriceMax, mas até onde eu entendi, ele exibe apenas o último valor do gráfico de subjanela e não está claro, se por exemplo eu tiver 3 linhas no indicador, o que ele exibirá?

 
Tragedy:

Olá.

Eu tenho um indicador personalizado.

Estou escrevendo um EA...e tenho uma pergunta...como acessar meu indicador? Especificamente, pegue os dados da barra especificada (no meu caso, eu preciso pegar a 2ª barra). Eu recebi o windowsPriceMax, mas pelo que entendi, ele emite apenas o último valor do gráfico e não entendo se eu tenho 3 linhas no indicador, o que ele emitirá?



duplo iCustom( símbolo de string, int timeframe, nome da string, ..., modo int, int shift)

Cálculo do indicador personalizado especificado. O indicador personalizado deve ser compilado (um arquivo com extensão EX4) e localizado nos indicadores do terminal_directório_peritos.
Parâmetros:

símbolo - nome do símbolo do instrumento, em cujos dados o indicador será calculado. NULL significa o símbolo atual.
timeframe - Período. Pode ser um dos períodos do gráfico. 0 significa o período do gráfico atual.
nome - Nome indicador personalizado.
... - Lista de parâmetros (se necessário). Os parâmetros aprovados devem corresponder à ordem de declaração e ao tipo de variáveis externas (externas) do indicador personalizado.
modo - Índice da linha indicadora. Pode ser de 0 a 7 e deve corresponder ao índice, utilizado por uma das funções do SetIndexBuffer.
shift - Índice do valor recebido do buffer de indicadores (shift relativo à barra atual pelo número especificado de períodos de retorno).

 

Obrigado. Isso ajudou. Pensei que somente os indicadores iMac*** iStoch*** eram pré-instalados.

 
Lisi4ka330:

Caros especialistas, não há um erro no livro didático?

Aqui está o meu raciocínio:

No início do código,int é chamada a funçãoArrayCopyRates que copia os dados das barras do gráfico atual em uma matriz bidimensional do tipo RateInfo[][6] e retorna o número de barras copiadas ou -1 em caso de falha de acordo com o exemplo desta função:

a barraatual é a barra com índice 0-0 , assim, voltando ao código original, copiamos o elemento com índice 0-0 (a barra atual) do array1 , para array2 com índice 0-0, obtemos as últimas 10 barras (onde a última barra é a barra atual, a barra com índice [0]), o que é contrário ao que escrevemos no tutorial... e respectivamente, copiando elemento com barras de índice*6-60,60 de array1 em array2 com índice de início de elemento 0, obtemos informações sobre barras da história.


Sem fazer declarações em voz alta, vamos verificar na prática:

//+------------------------------------------------------------------+
//|                                                       массив.mq4 |
//|                                                  Copyright 2012, |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012,"
#property link      "https://forum.mql4.com/ru/46980/page525"
#property show_inputs
extern string s=" -----номер бара--------";
extern int a=9;//номер 10 последних баров 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
{if(a<10)
{double array1[][6];double array2[10][6];
  ArrayCopyRates(array1);
  ArrayCopy(array2,array1,0,Bars*6-60,60);
// теперь array2 содержит 10 последних баров из истории(имеется в виду,что последний бар-это текущий бар,бар с индексом [0])
Alert("Контрольный бар - ",a," время - ",TimeToStr(array2[a][0]),"  цена открытия - ",array2[a][1]);}return(0);}