오류, 버그, 질문 - 페이지 2040

 

표시기 하위 창에서 작동하지 않습니다. 내가 무엇을 잘못하고 있습니까?

   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 :

MouseMove(x, y, key) 매개변수가 사용됩니다 . 커서 위치와 마우스 버튼 클릭이 결정 되고 메인 라인은 터미널 인터페이스의 기능이 아닌 mql을 통해 이동됩니다. 프로그램은 행의 이동을 따르지 않고 행에 대한 커서의 위치를 따릅니다. 라인의 동시 이동은 주 라인과 종속 라인의 좌표가 동시에 변경된다는 사실에 의해 보장됩니다.

이상하게도 마우스 좌표를 전혀 사용하지 않고 id == CHARTEVENT_MOUSE_MOVE 에 반응하기만 하면 됩니다. 그리고 모든 것이 잘 작동하며 사실 논리적입니다.

부드러움을 위해 사용자 지정 DND가 필요하지 않습니다. 사용자 지정 DND를 만들면 캔버스를 통해 사용자 지정 개체를 만듭니다. 거기에는 지연이 있을 수 없습니다. 왜냐하면. 객체는 항상 동일합니다.

 
Vitaly Muzichenko :

표시기 하위 창에서 작동하지 않습니다. 내가 무엇을 잘못하고 있습니까?

예상되는 것과 정확히 작동하지 않는 것은 무엇입니까?
 
Kirill Belousov :
예상되는 것과 정확히 작동하지 않는 것은 무엇입니까?

서브 윈도우 의 좌표를 변환 하여 가격을 얻을 것으로 예상했습니다.

메인 창에서는 작동하고 인쇄물에서 볼 수 있는 하위 창에서는 작동하지 않습니다.

또한 이 기능은 하위 창 번호를 "0", 즉 기본 창 번호로 바꿉니다.

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

컴파일 중 오류

 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 :

서브 윈도우의 좌표를 변환하여 가격을 얻을 것으로 예상했습니다.

메인 창에서는 작동하고 인쇄물에서 볼 수 있는 하위 창에서는 작동하지 않습니다.

또한 이 기능은 하위 창 번호를 "0", 즉 기본 창 번호로 바꿉니다.

기능 도움말에서: X 및 Y 좌표는 기본 차트 창의 왼쪽 상단 모서리 에서 계산됩니다.

x=5, y=34는 기본 창도 참조하므로 출력 창=0

기본 창의 높이만큼 Y를 늘려 다른 창에서 "자신을 찾으십시오"

 
A100 :

컴파일 중 오류

그리고 while(...) 내부에서 조건을 확인하는 대신 선언하고 할당하는 것이 허용되는 것은 무엇입니까?
 
Kirill Belousov :

기능 도움말에서: X 및 Y 좌표는 기본 차트 창의 왼쪽 상단 모서리 에서 계산됩니다.

x=5, y=34는 기본 창도 참조하므로 출력 창=0

기본 창의 높이만큼 Y를 늘려 다른 창에서 "자신을 찾으십시오"

이것은 전혀 답이 아니며 탈출구도 아닙니다.

우리는 하위 창의 번호를 표시하고 3과 4가 될 수 있습니다. 그러면 좌표를 표시하는 방법은 무엇입니까?

함수에 명백한 오류가 있습니다.

 
Vitaly Muzichenko :

이것은 전혀 답이 아니며 탈출구도 아닙니다.

우리는 하위 창의 번호를 표시하고 3과 4가 될 수 있습니다. 그러면 좌표를 표시하는 방법은 무엇입니까?

함수에 명백한 오류가 있습니다.

우리는 하위 창의 번호를 지정하지 않지만 함수는 우리에게 (입력이 아닌 출력 매개변수임) - 지정된 ID를 가진 차트의 하위 창에 가격 차트가 있고 어떤 가격과 시간이 해당 가격 차트에 해당하는지 알려줍니다. 해당 차트에서 지정한 X,Y 좌표입니다.
 
Kirill Belousov :
그리고 while(...) 내부에서 조건을 확인하는 대신 선언하고 할당하는 것이 허용되는 것은 무엇입니까?

개발자가 확인하도록 합니다. 레거시 컴파일러에서 (2) [그러나 (3)은 아님] 행에서 오류가 발생할 수 있지만 C++ 컴파일