Erros, bugs, perguntas - página 2040

 

Não funciona na sub-janela do indicador, o que estou a fazer mal?

  datetime dt =0; 
  double price =0; 
  int window= ChartWindowFind();
  ChartXYToTimePrice(0,5,34,window,dt,price);
  PrintFormat("Window=%d  =>  time=%s  Price=%G",window,TimeToString(dt),price);

2017.10.15 05:35:36.060	i-Stp EURCHF,M30: Window=0  =>  _Time=2017.09.29 22:00  _Price=0.904348
  datetime dt =0; 
  double price =0; 
  int window= ChartWindowFind();
// ChartXYToTimePrice(0,5,34,window,dt,price);
  PrintFormat("Window=%d  =>  _Time=%s  _Price=%G",window,TimeToString(dt),price); 

2017.10.15 05:37:13.997	i-Stp EURCHF,M30: Window=1  =>  _Time=1970.01.01 00:00  _Price=0
 
Yury Kulikov:

Osparâmetros MouseMove(x, y, key) são utilizados. A posição do cursor e o clique do rato são determinados, a linha principal é movida por mql, não pelas capacidades da interface terminal, ou seja, o programa monitoriza a posição do cursor em relação à linha, e não o movimento da linha. O movimento simultâneo das linhas é assegurado pela mudança síncrona das coordenadas das linhas principais e dependentes.

Estranhamente, não utilizo coordenadas do rato, apenas respondo a id == CHARTEVENT_MOUSE_MOVE. E tudo funciona bem, o que é realmente lógico.

Não é necessário DND personalizado para suavidade. Se fizer um DND personalizado, então também deve fazer objectos personalizados através de kanvas. Não pode haver qualquer atraso, porque o objecto é sempre o mesmo.

 
Vitaly Muzichenko:

Não funciona na sub-janela do indicador, o que estou a fazer mal?

o que era esperado e o que não está a funcionar exactamente?
 
Kirill Belousov:
mas o que era esperado e o que não está a funcionar exactamente?

Espera-se converter coordenadas numa sub-janela, e obter um preço.

Funciona na janela principal, não funciona nas subjanelas, como se pode ver nas impressões.

Além disso, a função substitui o número da subjanela por "0", ou seja, pelo número principal:

Преобразует координаты  X и Y графика в значения время и цена.
bool  ChartXYToTimePrice(
   long           chart_id,     // идентификатор графика
   int            x,            // координата X на графике
   int            y,            // координата Y на графике
   int&           sub_window,   // номер подокна
   datetime&      time,         // время на графике
   double&        price         // цена на графике
   );
 

Erro de compilação

int f() { return 1; }
void OnStart() export
{
        for   ( int i = f();           ;) {} //(1) нормально
        for   (            ;int i = f();) {} //(2) 'i' - unexpected token
        while (             int i = f() ) {} //(3) 'i' - unexpected token
}
 
Vitaly Muzichenko:

Espera-se converter coordenadas numa sub-janela, e obter um preço.

Funciona na janela principal, não funciona nas sub-janelas, como se pode ver nas impressões.

Além disso, a função substitui o número da subjanela por "0", ou seja, a subjanela principal:

A partir da ajuda da função: X e Y - as coordenadas são contadas a partir do canto superior esquerdo da janela do gráfico principal.

x=5, y=34 também se refere à janela principal, portanto a janela de saída=0.

Tente aumentar Y pela altura da janela principal para "acabar" numa janela diferente

 
A100:

Erro de compilação

é aceitável declarar e atribuir dentro enquanto(...) em vez de verificar uma condição?
 
Kirill Belousov:

Da ajuda da função: X e Y são coordenadas referenciadas a partir do canto superior esquerdo da janela gráfica principal.

x=5, y=34 também se refere à janela principal, pelo que a saída é a janela=0.

Tente aumentar Y pela altura da janela principal para "acabar" noutra janela

Esta não é de todo a resposta, nem é a saída.

Especificamos o número da subjanela, e pode ser 3 ou 4, então como especificamos as coordenadas?

Há um erro claro na função.

 
Vitaly Muzichenko:

Esta não é de todo a resposta, nem é a solução.

Especificamos o número da subjanela, e pode ser 3 ou 4, então como especificamos as coordenadas?

Há um erro claro na função.

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 é o gráfico de preços e diz-nos que preço e tempo correspondem às coordenadas X,Y especificadas nesse gráfico.
 
Kirill Belousov:
É aceitável declarar e atribuir dentro enquanto(...) em vez de verificar a condição?

Deixar os programadores verificar. C++ compila, embora a linha (2) [mas não (3)] possa causar um erro em compiladores obsoletos

Razão: