Digamos que eu tenho 2 indicadores, o primeiro tem 4 amortecedores, o segundo tem 2. Coloquei-os em um gráfico e abri a janela de dados (CTRL+D). A lista contém 6 buffers de 0 a 5. Como posso ler o valor do buffer 5, digamos, a partir desta lista em MQL? Não é conveniente usar o iCustom pelo indicador requerido. É mais conveniente utilizar esta lista. Eu sei que eles fazem isso, mas como?
Ao estudar os exemplos na ajuda, a criação de objetos é sempre feita com um cheque:
//--- сбросим значение ошибки ResetLastError();
//--- создадим кнопку if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0))
{
Print(__FUNCTION__,
": не удалось создать кнопку! Код ошибки = ",GetLastError());
return(false);
}
Por que isso é feito para objetos? Qual é a probabilidade de um objeto não ser criado?
Em geral, estou interessado em saber onde posso ler sobre regras de boas maneiras na programação mql, para saber em quais arbustos se encontra o ancinho, aconselhar.
Ao estudar os exemplos na ajuda, a criação de objetos é sempre feita com um cheque:
Por que isso é feito para objetos? Qual é a probabilidade de um objeto não ser criado?
Em geral, estou interessado em saber onde posso ler sobre boas maneiras na programação mql, para saber onde se encontram as armadilhas, me aconselhar.
Por exemplo, um objeto com este nome já existe.
As regras da boa forma - elas são as mesmas para qualquer idioma. Receba dados - verifique o que você tem, crie um objeto, verifique o que você criou, e se você o criou... E assim por diante.
Como preencher um array 4-dimensional com valores do formato int Mas[1][2][2][2], como atribuir um valor a cada célula do array, temos em mente tal notação, por exemplo, um array 2-dimensional int Arr[1][2]={3,4};, como preencher um array 4-dimensional?
Artyom Trishkin: Por exemplo, um objeto com este nome já existe.
E as regras de etiqueta - elas são as mesmas para qualquer idioma. Você recebe dados - verifique o que você recebeu, cria um objeto, verifica o que você criou e se você o criou... E assim por diante.
Quando eu crio um botão dentro de uma função, eu fico jurando
Seric29: Como preencher a matriz 4-dimensional com valores do formato em Mas[1][2][2][2], como atribuir um valor a cada célula da matriz, neste caso, existe uma matriz 2-dimensional em Arr[1][2]={3,4}; como preencher a matriz 4-dimensional?
As matrizes multidimensionais são normalmente preenchidas em loops com os valores certos - o que torna mais difícil cometer um erro, para uma matriz tetradimensional deveria ser algo assim, mas eu poderia estar errado:
Camaradas - olhem o indicador para a exatidão. Há uma fórmula Valor = (Aberto[0]-SMA(P,n))/SMA(P,n))*100%.
Coloquei-o na tabela - ele calcula e traça tudo. Começo a verificar alguma barra na calculadora - seu valor não coincide com o sorteado...
Eis um exemplo - calculo 1.0178 para Open e 1.0182 para MA(13) usando a fórmula ((1.0178-1.0182)/1.0182) * 100% - o resultado na calculadora é -0,0393. E o gráfico MT4 mostra -0,0929. É um erro no código ou a calculadora não calcula corretamente alguns valores lá? Por favor, ajude. Estou anexando o indicador.
#property indicator_separate_window#property indicator_buffers1// Количество буферов#property indicator_color1 Blue // Цвет линии 0 буфера#property indicator_level11#property indicator_level2 -1//--------------------------------------------------------------- 2 --//---- indicator parameters externint History =5000; // Колич.баров в расчётной историиexternint Period_SMA =13;
double
Line_0[]; // Инд. массив ravi //--------------------------------------------------------------- 4 --int init() // Специальная функция init()
{
SetIndexBuffer(0,Line_0); // Назначение массива буферу
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
IndicatorShortName("KRI");
//--------------------------------------------------------------- 5 --return(0); // Выход из спец. функции init()
}
//--------------------------------------------------------------- 8 --int start() // Специальная функция start()
{
//--------------------------------------------------------------- 9 --double
SMA; // МА для расчета значений индикатора // формyла (PRICE-SMA/SMA)*100); int
i, // Индекс бара
n, // Формальн. параметр(индекс бара)
Counted_bars; // Количество просчитанных баров //-------------------------------------------------------------- 10 --
Counted_bars=IndicatorCounted(); // Количество просчитанных баров
i=Bars-Counted_bars-1; // Индекс первого непосчитанногоif (i>History-1) // Если много баров то ..
i=History-1; // ..рассчитывать заданное колич.//-------------------------------------------------------------- 11 --while(i>=0) // Цикл по непосчитанным барам
{
//-------------------------------------------------------- 12 --
SMA=iMA(NULL,0,Period_SMA,0,MODE_SMA,PRICE_CLOSE,i); // Значение SМА
Line_0[i] =0;
if (SMA>0) Line_0[i] = ((Open[0]-SMA)/SMA)*100; // Индик. массив линии KPI//-------------------------------------------------------- 13 --
i--; // Расчёт индекса следующего бара//-------------------------------------------------------- 14 --
}
return(0); // Выход из спец. ф-ии start()
}
//-------------------------------------------------------------- 15 --
Artyom Trishkin: Se você estiver fazendo o retorno de valor tipo bool da função, então o tipo de função não deve ser nulo, mas adivinhe qual delas é.
E se você quiser retornar dados de uma função?
É possível percorrer as posições apenas para um determinado símbolo sem usar PositionsTotal todas as vezes?
Até agora, a única coisa que me ocorreu foi escrever as passagens em uma matriz e trabalhar com elas separadamente, mas talvez haja uma opção mais simples?
É possível percorrer as posições apenas para um determinado símbolo sem usar PositionsTotal todas as vezes?
Até agora, a única coisa que me ocorreu foi escrever as passagens para uma matriz e trabalhar com elas separadamente, mas talvez haja uma opção mais simples?
Não está claro o que é necessário no final - alguns pensamentos desarticulados.
Olá.
Digamos que eu tenho 2 indicadores, o primeiro tem 4 amortecedores, o segundo tem 2. Coloquei-os em um gráfico e abri a janela de dados (CTRL+D). A lista contém 6 buffers de 0 a 5. Como posso ler o valor do buffer 5, digamos, a partir desta lista em MQL? Não é conveniente usar o iCustom pelo indicador requerido. É mais conveniente utilizar esta lista. Eu sei que eles fazem isso, mas como?
Ao estudar os exemplos na ajuda, a criação de objetos é sempre feita com um cheque:
Por que isso é feito para objetos? Qual é a probabilidade de um objeto não ser criado?
Em geral, estou interessado em saber onde posso ler sobre regras de boas maneiras na programação mql, para saber em quais arbustos se encontra o ancinho, aconselhar.
Ao estudar os exemplos na ajuda, a criação de objetos é sempre feita com um cheque:
Por que isso é feito para objetos? Qual é a probabilidade de um objeto não ser criado?
Em geral, estou interessado em saber onde posso ler sobre boas maneiras na programação mql, para saber onde se encontram as armadilhas, me aconselhar.
Por exemplo, um objeto com este nome já existe.
Quando eu crio um botão dentro de uma função, eu fico jurando
função 'return' - 'void' retorna um valor 112 16
O que devo fazer neste caso?
Como preencher a matriz 4-dimensional com valores do formato em Mas[1][2][2][2], como atribuir um valor a cada célula da matriz, neste caso, existe uma matriz 2-dimensional em Arr[1][2]={3,4}; como preencher a matriz 4-dimensional?
As matrizes multidimensionais são normalmente preenchidas em loops com os valores certos - o que torna mais difícil cometer um erro, para uma matriz tetradimensional deveria ser algo assim, mas eu poderia estar errado:
Quando eu crio um botão dentro de uma função, eu fico jurando
A função 'retorno' - 'vazio' retorna um valor 112 16
O que devo fazer neste caso?
comece a ler a ajudaem https://www.mql5.com/ru/docs/basis/function
Se precisar de mais ajuda, você deve ler qualquer livro em C++. O primeiro capítulo deve explicar as funções
Quando eu crio um botão dentro de uma função, recebo um juramento de
função 'return' - 'void' retorna um valor breakeven_fish.mq5 112 16
O que fazer neste caso?
Camaradas - olhem o indicador para a exatidão. Há uma fórmula Valor = (Aberto[0]-SMA(P,n))/SMA(P,n))*100%.
Coloquei-o na tabela - ele calcula e traça tudo. Começo a verificar alguma barra na calculadora - seu valor não coincide com o sorteado...
Eis um exemplo - calculo 1.0178 para Open e 1.0182 para MA(13) usando a fórmula ((1.0178-1.0182)/1.0182) * 100% - o resultado na calculadora é -0,0393. E o gráfico MT4 mostra -0,0929. É um erro no código ou a calculadora não calcula corretamente alguns valores lá? Por favor, ajude. Estou anexando o indicador.
Se você estiver fazendo o retorno de valor tipo bool da função, então o tipo de função não deve ser nulo, mas adivinhe qual delas é.
E se você quiser retornar dados de uma função?
É possível percorrer as posições apenas para um determinado símbolo sem usar PositionsTotal todas as vezes?
Até agora, a única coisa que me ocorreu foi escrever as passagens em uma matriz e trabalhar com elas separadamente, mas talvez haja uma opção mais simples?
E se você quiser retornar dados de uma função?
É possível percorrer as posições apenas para um determinado símbolo sem usar PositionsTotal todas as vezes?
Até agora, a única coisa que me ocorreu foi escrever as passagens para uma matriz e trabalhar com elas separadamente, mas talvez haja uma opção mais simples?
Não está claro o que é necessário no final - alguns pensamentos desarticulados.