В документации есть 2 момента касательно индикаторов.
Em constantes especiais, estas são:
" número de tampão_indicador para calcular o indicador, até um máximo de 8".
Sob indicadores personalizados:
" Aloca memória para buffers utilizados para cálculos de indicadores personalizados. O número de amortecedores não pode exceder 8 e ser inferior ao valor especificado na propriedade do indicador_buffers. Se o indicador personalizado exigir buffers adicionais para contagem, você deve usar esta função para especificar o número total de buffers. "
Se o número de buffers for especificado, acho que isto já significa a alocação de memória para buffers. Corrija-me se você quer dizer algo mais aqui, por favor.
Boa tarde. Pergunta sobre um apontador de arquivo... No livro MQL4, encontrado na MQL4.community, na seção "Funções Padrão", há um exemplo do script "Operações de Arquivo", que se destina a ler dados de um arquivo e exibir objetos gráficos em uma janela de símbolos:
//--------------------------------------------------------------------// timetablenews.mq4// Предназначен для использования в качестве примера в учебнике MQL4.//--------------------------------------------------------------- 1 --int start() // Спец. функция start
{
//--------------------------------------------------------------- 2 --int Handle, // Файловый описатель
Stl; // Стиль вертикальной линииstring File_Name="News.csv", // Имя файла
Obj_Name, // Bмя объекта
Instr, // Название валюты
One,Two, // 1я и 2я чать названия инстр.
Text, // Текст описания события
Str_DtTm; // Дата и время события(строка)datetime Dat_DtTm; // Дата и время события(дата)color Col; // Цвет вертикальной линии//--------------------------------------------------------------- 3 --
Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";");// Открытие файлаif(Handle<0) // Неудача при открытии файла
{
if(GetLastError()==4103) // Если файла не существует,..Alert("Нет файла с именем ",File_Name);//.. извещаем трейдера else// При любой другой ошибке..Alert("Ошибка при открытии файла ",File_Name);//..такое сообщPlaySound("Bzrrr.wav"); // Звуковое сопровождениеreturn; // Выход из start()
}
//--------------------------------------------------------------- 4 --while(FileIsEnding(Handle)==false)// До тех пор, пока файловый ..
{ // ..указатель не в конце файла//--------------------------------------------------------- 5 --
Str_DtTm =FileReadString(Handle);// Дата и время события(дата)
Text =FileReadString(Handle);// Текст описания событияif(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
Dat_DtTm =StrToTime(Str_DtTm); // Преобразование типа данных
Instr =StringSubstr(Text,0,3);// Извлекаем первые 3 символа
One=StringSubstr(Symbol(),0,3);// Извлекаем первые 3 символа
Two=StringSubstr(Symbol(),3,3);// Извлекаем вторые 3 символа
Stl=STYLE_DOT; // Для всех - стиль пунктир
Col=DarkOrange; // Для всех - цвет такойif(Instr==One || Instr==Two) // А для событий по нашему ..
{ // .. финансовому инструменту..
Stl=STYLE_SOLID; // .. такой стиль..
Col=Red; // .. и такой цвет верт. линии
}
//--------------------------------------------------------- 7 --
Obj_Name="News_Line "+Str_DtTm; // Имя объектаObjectCreate(Obj_Name,OBJ_VLINE,0,Dat_DtTm,0);//Создаем объект..ObjectSet(Obj_Name,OBJPROP_COLOR, Col); // ..и его цвет,..ObjectSet(Obj_Name,OBJPROP_STYLE, Stl); // ..стиль..ObjectSetText(Obj_Name,Text,10); // ..и описание
}
//--------------------------------------------------------------- 8 --FileClose( Handle ); // Закрываем файлPlaySound("bulk.wav"); // Звуковое сопровождениеWindowRedraw(); // Перерисовываем объектыreturn; // Выход из start()
}
//--------------------------------------------------------------- 9 --
Abaixo, ao analisar este script no Livro sobre MQL4, a seguinte frase é dada: "se a verificação especificada (as 2 últimas linhas no bloco 5-6) for removida, um objeto extra será criado em tempo de execução. E somente depois disso, a condição final do loop será acionada e o controle será passado para o bloco 8-9".
Eu entendo corretamente? Um ponteiro de arquivo NÃO é INFLOWED BY TEXT SIGNS (por exemplo: text| onde | é um ponteiro de arquivo), mas é um ponteiro COM EXPRESSÃO, por exemplo: text onde k é o caractere "to", k-th é realçado por um ponteiro de arquivo. Isto explica a necessidade de cordas (ver p.164):
if(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
De fato. Na penúltima iteração, após a criação do ÚLTIMO objeto
2007.05.11 18:30;JPY
o ponteiro do arquivo está na posição do último objeto, ou seja
2007.05.11 18:30;JPYFabricação industrial
(onde o é o caractere" o", k é o índice de arquivo). Então, ao passar o controle para o cabeçalho da declaração, a função FileIsEnding(handle) obviamente retornará verdadeiro, porque o ponteiro do arquivo NÃO está no final do arquivo, mas no ÚLTIMO caráter desse arquivo. Então, quando as duas primeiras linhas forem executadas, o ponteiro do arquivo se moverá para o espaço vazio e se não houver linhas
if(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
o script criará um gráfico (isto é, uma linha) com uma descrição vazia e uma coordenada de tempo que corresponde a 0. Isto é o que significa na frase: "se a verificação especificada (as 2 últimas linhas no bloco 5-6) for removida, então um objeto extra será criado em tempo de execução". "
Pergunta: entendo corretamente:
a) a definição de um ponteiro de arquivo;
b) o significado da frase "Se a verificação especificada (as 2 últimas linhas no bloco 5-6) for eliminada, então um objeto extra será criado na execução do programa.E somente depois disso, a condição final do loop será acionada e o controle será passado para o bloco 8-9".
P.S. A fim de não desperdiçar o fórum, obrigado antecipadamente por sua resposta.
Por favor, diga-me, eu não tenho experiência, se entre dois tiquetaques meu programa enviar vários comandos ao servidor, todos eles serão executados, ou apenas o primeiro comando ? Onde posso encontrar informações sobre este assunto ?
Por favor, diga-me, eu não tenho experiência, se entre dois tiquetaques meu programa enviar vários comandos ao servidor, todos eles serão executados, ou apenas o primeiro comando ? Onde posso encontrar informações sobre este assunto ?
Olá! tenho uma pergunta sobre indicadores na MQL4 e não consigo entender... Por exemplo, eu tenho um indicador fractal simples:
Se eu o compilar nesta forma, ao estender a borda esquerda do gráfico e o histórico de carga, ele começa a apresentar falhas e mostra marcas onde elas não devem estar (veja a captura de tela em anexo). Se comentarmos uma parte do código:
Depois estas falhas desaparecem... As mesmas falhas aparecem ao carregar o histórico, se você preencher apenas elementos "não vazios" da matriz de indicadores e não reinicializar o valor do indicador onde não há etiquetas...
Por que isso acontece? Por que, afinal de contas, é necessário recalcular todo o indicador ao carregar o histórico? E por que eu tenho que anular os valores dos elementos "vazios" da matriz?
Se as barras fossem indexadas da esquerda para a direita, ao carregar o histórico os índices das barras mudariam, e o indicador seria incorretamente exibido sem novo cálculo, então entenderíamos esta falha ... Mas no MT4 as barras são indexadas da direita para a esquerda, então, ao carregar o histórico, os índices das barras, que foram indexadas, devem permanecer os mesmos (e os valores do indicador também), então por que recalcular o indicador e de onde vêm esses desvios de marca?
Por que é necessário recalcular todo o indicador ao carregar o histórico? E por que os valores dos elementos "vazios" da matriz devem ser zerados? E se você não fizer isso, então os indicadores são exibidos incorretamente.
#O número de tampões indicadores de propriedade especifica o número de buffers a serem exibidos. O IndicatorBuffers especifica o número total de amortecedores utilizados.
Você pode me dizer como emitir 1 valor e um valor de indicador já redesenhado como 2 linhas, que é redesenhado em um indicador separado? Não consigo entender, ele sempre produz o último valor redesenhado.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
В документации есть 2 момента касательно индикаторов.
Em constantes especiais, estas são:
" número de tampão_indicador para calcular o indicador, até um máximo de 8".
Sob indicadores personalizados:
" Aloca memória para buffers utilizados para cálculos de indicadores personalizados. O número de amortecedores não pode exceder 8 e ser inferior ao valor especificado na propriedade do indicador_buffers. Se o indicador personalizado exigir buffers adicionais para contagem, você deve usar esta função para especificar o número total de buffers. "
Se o número de buffers for especificado, acho que isto já significa a alocação de memória para buffers. Corrija-me se você quer dizer algo mais aqui, por favor.
Boa tarde. Pergunta sobre um apontador de arquivo... No livro MQL4, encontrado na MQL4.community, na seção "Funções Padrão", há um exemplo do script "Operações de Arquivo", que se destina a ler dados de um arquivo e exibir objetos gráficos em uma janela de símbolos:
Abaixo, ao analisar este script no Livro sobre MQL4, a seguinte frase é dada: "se a verificação especificada (as 2 últimas linhas no bloco 5-6) for removida, um objeto extra será criado em tempo de execução. E somente depois disso, a condição final do loop será acionada e o controle será passado para o bloco 8-9".
Eu entendo corretamente? Um ponteiro de arquivo NÃO é INFLOWED BY TEXT SIGNS (por exemplo: text| onde | é um ponteiro de arquivo), mas é um ponteiro COM EXPRESSÃO, por exemplo: text onde k é o caractere "to", k-th é realçado por um ponteiro de arquivo. Isto explica a necessidade de cordas (ver p.164):
De fato. Na penúltima iteração, após a criação do ÚLTIMO objeto
2007.05.11 18:30;JPY
o ponteiro do arquivo está na posição do último objeto, ou seja
2007.05.11 18:30;JPYFabricação industrial
(onde o é o caractere" o", k é o índice de arquivo). Então, ao passar o controle para o cabeçalho da declaração, a função FileIsEnding(handle) obviamente retornará verdadeiro, porque o ponteiro do arquivo NÃO está no final do arquivo, mas no ÚLTIMO caráter desse arquivo. Então, quando as duas primeiras linhas forem executadas, o ponteiro do arquivo se moverá para o espaço vazio e se não houver linhas
o script criará um gráfico (isto é, uma linha) com uma descrição vazia e uma coordenada de tempo que corresponde a 0. Isto é o que significa na frase: "se a verificação especificada (as 2 últimas linhas no bloco 5-6) for removida, então um objeto extra será criado em tempo de execução". "
Pergunta: entendo corretamente:
a) a definição de um ponteiro de arquivo;
b) o significado da frase "Se a verificação especificada (as 2 últimas linhas no bloco 5-6) for eliminada, então um objeto extra será criado na execução do programa.E somente depois disso, a condição final do loop será acionada e o controle será passado para o bloco 8-9".
P.S. A fim de não desperdiçar o fórum, obrigado antecipadamente por sua resposta.
Por favor, diga-me, eu não tenho experiência, se entre dois tiquetaques meu programa enviar vários comandos ao servidor, todos eles serão executados, ou apenas o primeiro comando ? Onde posso encontrar informações sobre este assunto ?
Por favor, diga-me, eu não tenho experiência, se entre dois tiquetaques meu programa enviar vários comandos ao servidor, todos eles serão executados, ou apenas o primeiro comando ? Onde posso encontrar informações sobre este assunto ?
Leia:
https://book.mql4.com/ru/basics/common
Leia:
https://book.mql4.com/ru/basics/common
Olá! tenho uma pergunta sobre indicadores na MQL4 e não consigo entender... Por exemplo, eu tenho um indicador fractal simples:
Se eu o compilar nesta forma, ao estender a borda esquerda do gráfico e o histórico de carga, ele começa a apresentar falhas e mostra marcas onde elas não devem estar (veja a captura de tela em anexo). Se comentarmos uma parte do código:
Depois estas falhas desaparecem... As mesmas falhas aparecem ao carregar o histórico, se você preencher apenas elementos "não vazios" da matriz de indicadores e não reinicializar o valor do indicador onde não há etiquetas...
Por que isso acontece? Por que, afinal de contas, é necessário recalcular todo o indicador ao carregar o histórico? E por que eu tenho que anular os valores dos elementos "vazios" da matriz?
Se as barras fossem indexadas da esquerda para a direita, ao carregar o histórico os índices das barras mudariam, e o indicador seria incorretamente exibido sem novo cálculo, então entenderíamos esta falha ... Mas no MT4 as barras são indexadas da direita para a esquerda, então, ao carregar o histórico, os índices das barras, que foram indexadas, devem permanecer os mesmos (e os valores do indicador também), então por que recalcular o indicador e de onde vêm esses desvios de marca?
Por que é necessário recalcular todo o indicador ao carregar o histórico? E por que os valores dos elementos "vazios" da matriz devem ser zerados? E se você não fizer isso, então os indicadores são exibidos incorretamente.
O IndicatorBuffers especifica o número total de amortecedores utilizados.
Exemplo.
#property indicator_buffers 2
.......... .................................
IndicadorBuffers 3
Traça duas linhas, o terceiro buffer não é mostrado, mas é usado para cálculos intermediários.
Olá.
Você pode me dizer que mudanças eu deveria fazer no código para que o rastreamento acionasse imediatamente e não depois que eu fosse para lucrar.