1. Para qualquer símbolo: se você quiser obter preços atuais garantidos, ligue para SymbolInfoDouble() com os identificadores corretos antes de usá-los.
2. Para o símbolo atual, você também pode obter os preços atuais através das variáveis pré-definidas Bid and Ask. Eles podem ficar desatualizados, portanto, se OnTick() estiver funcionando, você deve atualizá-los com RefreshRates().
Artyom Trishkin: Você não tem um modelo completo - você provavelmente não definiu os buffers indicadores no assistente, onde os dados calculados serão escritos.
Mas o princípio básico para a maioria dos indicadores é o seguinte:
//+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ intOnCalculate(constint rates_total, constint prev_calculated, constdatetime &time[], constdouble &open[], constdouble &high[], constdouble &low[], constdouble &close[], constlong &tick_volume[], constlong &volume[], constint &spread[]) { //--- if(rates_total<1) return(0); // проверка достаточности данных для расчёта индикатора, если не достаточно - выходим // если для расчёта требуются некое количество баров слева от индекса цикла, ... // ... то проверять нужно это количество, а не 1
//--- Действия для полного перерасчёта индикатора int limit=rates_total-prev_calculated; // количество посчитанных уже баров if(limit>1) { // если количество больше 1, значит имеем новые данные, и нужно полностью пересчитать индикатор limit=rates_total-1; // задаём количество требуемых для расчёта баров равным количеству баров в истории, // если для расчёта требуются некое количество баров слева от индекса цикла, ... // ... то это количество тоже нужно вычесть из rates_total чтобы не выйти за пределы массива // так же тут нужно при необходимости произвести инициализацию буферов индикатора }
//--- Основной цикл индикатора for(int i=limit; i>=0; i--) { // тут выполняем нужные расчёты и записываем их результат в нужные буферы, например: ExtMapBuffer[i]=(open[i]+high[i]+low[i]+close[i])/4.0; // Выведем на график среднюю цену каждой свечи (OHLC/4.0) }
//--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+
Artem, há um erro no compilador: 'ExtMapBuffer' - identificador não declarado
Andrey Koldorkin: Artem, o compilador deu um erro: 'ExtMapBuffer' - identificador não declarado
É claro que sim. Eu o escrevi do nada. E antes de escrever o exemplo, eu lhe disse que nenhuma variável externa é especificada no modelo (não é necessária) e nenhum buffer para exibir os cálculos dos indicadores é especificado. É claro que há alguns indicadores que não utilizam a saída do buffer, mas não no seu caso.
É por isso que eu coloquei este tampão. Você deve recriar o modelo, mas deve ser mais responsável por esta simples ação e se perguntar - "Mas o que o feiticeiro me pergunta e o que ele precisa?
Olá! Há cerca de quatro meses comecei a estudar MQL4 usando o tutorial de Kovalev. Eu também tenho vídeos. Estou assistindo o vídeo, estudando o tutorial, copiando códigos que são usados lá. entendo que este é um assunto muito sério e que leva tempo para dominá-lo. mas sei exatamente que preciso praticar. preciso de tarefas simples e para escrevê-las e alguém verificá-las então poderei ir além! outro problema é que o livro e os vídeos foram atualizados, eu até repito o código do livro, compenso-o, recebo erros, pareço uma ovelha no novo gate...... que é a tristeza!
FOTOGRAF14: Olá! Há cerca de quatro meses comecei a estudar MQL4 usando o tutorial de Kovalev. Eu também tenho vídeos. Assisto ao vídeo e estudo o tutorial, repito os códigos que são usados lá. entendo que este é um assunto muito sério e que leva tempo para dominá-lo. mas sei exatamente que preciso praticar. preciso de tarefas simples e para escrevê-las e alguém verificá-las então poderei ir além! outro problema é que o livro e os vídeos foram atualizados, eu até repito o código do livro, compenso-o, recebo erros, pareço uma ovelha no novo gate...... que é a tristeza!
Leia a documentação por uma vez. O livro didático está desatualizado em alguns lugares. A documentação ajudará com isso. Quanto às tarefas - resolver as mesmas tarefas descritas no livro didático. Leia o problema, olhe para a solução, repita. E assim por diante até que você se apodere dele. É melhor levar as tarefas o mais próximo possível daqueles que você quer aprender a implementar você mesmo.
Leia a documentação por uma vez. O livro didático está desatualizado em alguns lugares. A documentação ajudará com isso. Quanto às tarefas - resolver as mesmas tarefas descritas no livro didático. Leia o problema, olhe para a solução, repita. E assim por diante até que você se apodere dele. É melhor levar as tarefas o mais próximo possível daqueles que você quer aprender a implementar você mesmo.
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.
Há várias maneiras de obter os preços atuais:
1. Para qualquer símbolo: se você quiser obter preços atuais garantidos, ligue para SymbolInfoDouble() com os identificadores corretos antes de usá-los.
2. Para o símbolo atual, você também pode obter os preços atuais através das variáveis pré-definidas Bid and Ask. Eles podem ficar desatualizados, portanto, se OnTick() estiver funcionando, você deve atualizá-los com RefreshRates().
"possível perda de dados devido à conversão do tipo"
Como superar este aviso?
Aviso do compilador:
"possível perda de dados devido à conversão do tipo"
Como posso superar este aviso?
Você precisa conhecer os tipos exatos de valores retornados pelas funções e usar conversão explícita. https://www.mql5.com/ru/docs/basis/types/casting
Você não tem um modelo completo - você provavelmente não definiu os buffers indicadores no assistente, onde os dados calculados serão escritos.
Mas o princípio básico para a maioria dos indicadores é o seguinte:
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
if(rates_total<1) return(0); // проверка достаточности данных для расчёта индикатора, если не достаточно - выходим
// если для расчёта требуются некое количество баров слева от индекса цикла, ...
// ... то проверять нужно это количество, а не 1
//--- Действия для полного перерасчёта индикатора
int limit=rates_total-prev_calculated; // количество посчитанных уже баров
if(limit>1) { // если количество больше 1, значит имеем новые данные, и нужно полностью пересчитать индикатор
limit=rates_total-1; // задаём количество требуемых для расчёта баров равным количеству баров в истории,
// если для расчёта требуются некое количество баров слева от индекса цикла, ...
// ... то это количество тоже нужно вычесть из rates_total чтобы не выйти за пределы массива
// так же тут нужно при необходимости произвести инициализацию буферов индикатора
}
//--- Основной цикл индикатора
for(int i=limit; i>=0; i--) {
// тут выполняем нужные расчёты и записываем их результат в нужные буферы, например:
ExtMapBuffer[i]=(open[i]+high[i]+low[i]+close[i])/4.0; // Выведем на график среднюю цену каждой свечи (OHLC/4.0)
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
Artem, o compilador deu um erro: 'ExtMapBuffer' - identificador não declarado
É por isso que eu coloquei este tampão. Você deve recriar o modelo, mas deve ser mais responsável por esta simples ação e se perguntar - "Mas o que o feiticeiro me pergunta e o que ele precisa?
Olá! Há cerca de quatro meses comecei a estudar MQL4 usando o tutorial de Kovalev. Eu também tenho vídeos. Assisto ao vídeo e estudo o tutorial, repito os códigos que são usados lá. entendo que este é um assunto muito sério e que leva tempo para dominá-lo. mas sei exatamente que preciso praticar. preciso de tarefas simples e para escrevê-las e alguém verificá-las então poderei ir além! outro problema é que o livro e os vídeos foram atualizados, eu até repito o código do livro, compenso-o, recebo erros, pareço uma ovelha no novo gate...... que é a tristeza!
Leia a documentação por uma vez. O livro didático está desatualizado em alguns lugares. A documentação ajudará com isso. Quanto às tarefas - resolver as mesmas tarefas descritas no livro didático. Leia o problema, olhe para a solução, repita. E assim por diante até que você se apodere dele. É melhor levar as tarefas o mais próximo possível daqueles que você quer aprender a implementar você mesmo.
Tudo, é claro, IMHO.
Para mim, isso é uma boa compilação.
Ok, você quer explicar por que tais objetos não são diferenciados?
Se você mudar o tipo de objeto, as propriedades irão colapsar com 2 etiquetas ou linhas de tendência
Leia a documentação por uma vez. O livro didático está desatualizado em alguns lugares. A documentação ajudará com isso. Quanto às tarefas - resolver as mesmas tarefas descritas no livro didático. Leia o problema, olhe para a solução, repita. E assim por diante até que você se apodere dele. É melhor levar as tarefas o mais próximo possível daqueles que você quer aprender a implementar você mesmo.
Tudo, é claro, IMHO.
Obrigado!
Ok, você quer explicar por que tais objetos não são diferenciados?
Se você mudar o tipo de objeto, as propriedades irão colapsar com 2 etiquetas ou linhas de tendência