Erros, bugs, perguntas - página 2041

 
Kirill Belousov:
Não especificamos o número da subjanela, mas a função diz-nos (este é um parâmetro de saída, não um parâmetro de entrada) - em que subjanela do gráfico com o ID especificado existe uma tabela de preços e diz-nos que preço e tempo correspondem às coordenadas X,Y que especificámos na referida tabela.

Isto é compreensível, passando o parâmetro por referência. Mas a questão é aberta: porque é que a função não vê em que subjanela o indicador está instalado e não retira dados do mesmo?

 
Vitaly Muzichenko:

Isto é compreensível, passando o parâmetro por referência. Mas a questão está em aberto: porque é que a função não vê em que subjanela o indicador está instalado e tira dados do mesmo?

TABELA_ALTURA_EM_PIXELS
 
fxsaber:
TABELA_ALTURA_EM_PIXELS

É toda uma história com cálculos se tiver vários indicadores em subwindows, mas obrigado de qualquer forma pelo seu tempo.

 
Vitaly Muzichenko:

É toda uma história com cálculos se houver vários indicadores em subwindows, mas obrigado de qualquer forma pelo seu tempo.

https://www.mql5.com/ru/docs/chart_operations/chartwindowfind

Документация по MQL5: Операции с графиками / ChartWindowFind
Документация по MQL5: Операции с графиками / ChartWindowFind
  • www.mql5.com
1. Функция ищет на указанном графике подокно с указанным "коротким именем" индикатора (короткое имя выводится слева вверху подокна) и в случае удачи возвращает номер подокна. Не следует путать короткое имя индикатора и имя файла, которое указывается при создании индикатора функциями iCustom() и IndicatorCreate(). Если короткое наименование...
 

Sim, todas estas são funções que eu conheço.

A tarefa é simples, precisamos de ligar o objecto na 4ª subjanela (destacado a vermelho) ao preço, neste caso é -0,02, e a coordenada Y no gráfico é 34


 
Vitaly Muzichenko:

A tarefa é simples, é necessário ligar o objecto na subjanela 4 (destacado a vermelho) ao preço, neste caso é -0,02, e a coordenada Y no gráfico é 34

#property indicator_separate_window

#property indicator_buffers 0 
#property indicator_plots 0

#define  CHART_SUBWINDOW_BORDER_SIZE 2 // Размер разделителя подокон

void OnInit()
{
  int X = 0;
  int Y = 0;

  const int SubWindow = ChartWindowFind();
  
  for (int i = 0; i < SubWindow; i++)  
    Y += (int)ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS, i) + CHART_SUBWINDOW_BORDER_SIZE;
  
  int SubWindow2;
  datetime time;
  double Price;
  
  if (ChartXYToTimePrice(0, X, Y, SubWindow2, time, Price))
    Print(SubWindow2);
}

int OnCalculate ( const int rates_total, const int, const int, const double &[] )
{ 
  return(rates_total);
}
 
fxsaber:

Obrigado pela variante acabada, vou tentar ligá-la aos indicadores.

P.S. Funcionou, mais uma vez obrigado!


Mas a questão mantém-se, porque devo especificar o número da subjanela na função, se tenho de dançar com tamborim?

 
Vitaly Muzichenko:

Porque devo especificar o número da subjanela na função se tenho de brincar com ela?

Fórum sobre comércio, sistemas de comércio automatizados e testes estratégicos

Erros, Erros, Perguntas

Kirill Belousov, 2017.10.15 19:50

Não especificamos o número da subjanela, a função diz-nos(este é um parâmetro de saída, não um parâmetro de entrada) - em que subjanela do gráfico com o ID especificado é a tabela de preços e que preço e tempo correspondem às coordenadas X,Y que especificámos na referida tabela.
 
Vitaly Muzichenko:

Obrigado pela versão final, vou tentar anexá-la aos indicadores.

P.S. Funcionou, mais uma vez obrigado!


Mas a questão permanece, porque devo especificar o número da subjanela na função, se quero fazer uma confusão?

A dança pode ser encurtada utilizando ChartGetInteger() com este parâmetro

GRÁFICO_JANELA_DISTÂNCIA

Distância em pixels ao longo do eixo Y vertical entre a borda superior da subjanela do indicador e a borda superior da janela do gráfico principal. Em eventos do rato, as coordenadas do cursor são passadas nas coordenadas da janela do gráfico principal, enquanto as coordenadas dos objectos gráficos numa subjanela indicadora são definidas em relação ao canto superior esquerdo da subjanela.

O valor é necessário para converter as coordenadas absolutas do gráfico principal para as coordenadas locais de uma subjanela para um trabalho correcto com os objectos gráficos cujas coordenadas são definidas relativamente ao canto superior esquerdo da moldura da subjanela.

int r/o modificador - número da subjanela

 
Kirill Belousov:

A dança pode ser encurtada utilizando ChartGetInteger() com este parâmetro

GRÁFICO_JANELA_DISTÂNCIA

Distância em pixels ao longo do eixo y vertical entre o quadro superior da subjanela do indicador e o quadro superior da janela do gráfico principal. Em eventos do rato, as coordenadas do cursor são passadas nas coordenadas da janela do gráfico principal, enquanto as coordenadas dos objectos gráficos numa subjanela indicadora são definidas em relação ao canto superior esquerdo da subjanela.

O valor é necessário para converter as coordenadas absolutas do gráfico principal para as coordenadas locais de uma subjanela para um trabalho correcto com os objectos gráficos cujas coordenadas são definidas relativamente ao canto superior esquerdo da moldura da subjanela.

int r/o modificador - número da subjanela

Obrigado, abreviado, o mesmo resultado, mas menos código!