[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).
[Deleted]  

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.

[Deleted]  

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).

[Deleted]  

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);}