드미트리, 루핑 대신 CHARTEVENT_CLICK을 통해 하는 것이 더 쉬울 것 같습니다...
다음은 한 통화의 차트를 동기화하는 예제입니다.
//------------------------------------------------------------------ OnChartEvent void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam) { if (id==CHARTEVENT_CLICK) { long cid=ChartFirst(); long fbar=ChartGetInteger(ChartID(), CHART_FIRST_VISIBLE_BAR); datetime tm[], tm1[]; int rez=CopyTime(Symbol(), Period(), 0, fbar, tm); if (rez<fbar) return; while (cid!=-1) { ChartSetInteger(cid, CHART_AUTOSCROLL, false); ChartSetInteger(cid, CHART_SHIFT, false); if (cid!=ChartID() && ChartSymbol(cid)==Symbol()) { rez=CopyTime(ChartSymbol(cid), ChartPeriod(cid), TimeCurrent(), tm[0], tm1); if (rez<0) break; ChartNavigate(cid, CHART_END, rez-ChartGetInteger(cid, CHART_WIDTH_IN_BARS)+2); ChartRedraw(cid); } cid=ChartNext(cid); } } }
여기까지입니다!
디미트리, 루핑 대신 CHARTEVENT_CLICK을 사용하는 것이 더 쉬울 것 같네요...
다음은 한 통화의 차트를 동기화하는 예제입니다.
를 동기화하는 예제입니다.
모든 것이 그렇게 간단한 것은 아닙니다. 이 함수는 차트 왼쪽 가장자리에 있는 막대를 동기화하는데, 이는 시각적으로 역사를 공부하는 데 그다지 편리하지 않습니다. 또한 차트 오프셋도 비활성화해야 하는데, 이 역시 그리 편리하지는 않습니다(취향의 문제이긴 하지만). 개발자는 일반적으로 오른쪽 가장자리에서 들여 쓰기를 가져오고 설정하거나 시간별로 탐색하는 기능을 추가 할 수 있으며 많은 기능이 바 번호 또는 시간을 전달할 수있는 보편적 인 스타일로 만들어집니다. 또한 이벤트는 스크립트가 작동하는 차트에 대해서만 처리됩니다.
----------------------------------------------------------------------------------------------------------------
OnChartEvent
OnChartEvent()는 ChartEvent 이벤트 그룹의 핸들러입니다:
...
...
이 함수는 EA에서만 호출할 수 있으며 무효 유형과 4개의 매개변수를 가져야 합니다:
----------------------------------------------------------------------------------------------------------------
이벤트 처리는 전문가 조언자에서만 작동합니다. 차트에는 하나의 전문가 고문 만있을 수 있으며 보조적이고 실질적으로 쓸모없는 전문가 고문으로 전문가 고문을 대신해서는 안됩니다. 트레이딩 체결과 직접 관련이 없는 보조 도구는 극히 필요한 몇 가지 예외를 제외하고는 전문가 조언의 형태로 만들어서는 안된다는 것이 저의 신념입니다.
온차트이벤트
OnChartEvent()는 ChartEvent 이벤트 그룹의 핸들러입니다:
...
...
이함수는 전문가 어드바이저에서만 호출할 수 있으며 무효 유형과 4개의 매개 변수가 있어야 합니다:
----------------------------------------------------------------------------------------------------------------
이벤트 처리는 전문가 조언자에서만 작동합니다. 차트에는 하나의 전문가 고문 만있을 수 있으며, 보조적이고 실질적으로 쓸모없는 전문가 고문으로 전문가 고문을 대신해서는 안됩니다. 트레이딩 체결과 직접 관련이 없는 보조 도구는 극히 필요한 몇 가지 예외를 제외하고는 전문가 조언의 형태로 만들어서는 안 된다는 것이 저의 신념입니다.
공지사항( https://www.mql5.com/ru/forum/23/page4)을 계속 주시해 주시기 바랍니다:
메타트레이더 5 클라이언트 터미널 빌드 245
- 터미널: 자산(노출 탭에서)의 여유 마진 자금 계산 오류를 수정했습니다.
- 터미널: "전경에 차트" 차트 속성의 작동을 수정했습니다.
- 터미널: 차트의 인쇄 미리보기 창을 수정하고 새롭게 디자인했습니다.
- 터미널: 임시 전역 변수로 작업할 때의 버그를 수정했습니다.
- 터미널: '표준' 및 '차트' 도구 모음을 통합했습니다.
- MQL5: 충돌 및 포럼 메시지 수정
- MQL5: 전문가 어드바이저 및 스크립트의 복사* 함수 작동 원리를 변경했습니다. 이제 이 함수는 요청된 데이터를 다운로드하고 작성할 때까지 대기합니다. 요청된 데이터의 대기 시간은 30초를 초과하지 않습니다. 보다 자세한 설명은 가까운 시일 내에 MQL5 도움말에서 확인할 수 있습니다.
- MQL5: 전문가 어드바이저와 유사하게 사용자 지정 지표에 의한 이벤트 처리 가능성이 추가되었습니다. 더 자세한 설명은 가까운 시일 내에 MQL5 도움말에 제공될 예정입니다.
.
그러나 모든 가장자리별로 막대를 동기화할 수 있습니다. 그리고 트레이더에게 중앙, 오른쪽, 왼쪽을 선택할 수 있는 버튼을 제공하세요....
차트 이동도 비활성화해야 하는데, 이 또한 매우 편리하지 않습니다(취향의 문제이긴 하지만).
개발자는 일반적으로 오른쪽 가장자리에서 들여 쓰기를 가져오고 설정하거나 시간별로 탐색하는 기능을 추가 할 수 있으며, 많은 기능이 바 번호 또는 시간을 전달할 수있는 보편적 인 스타일로 만들어집니다.
이 기능을 사용할 수 있습니다. chart_shift_size
예제 오브젝트 차트 샘플.mq5를 참조하세요.
차트_첫번째_보이는_바에 문제가 있는 것 같습니다.
차트를 볼 수 있는 숫자보다 분명히 큰 숫자로 ChartNavigate()를 만들면 다음과 같이 됩니다.
ChartGetInteger(ChartID(),CHART_FIRST_VISIBLE_BAR)가 Bars(ChartSymbol(ChartID()),ChartPeriod(ChartID()))보다 커지게 됩니다.
스크립트 2.mq5의 예시. 스크립트를 실행하고 잠시 기다립니다.
단말기가 제대로 작동하지 않는 것 같습니다.
스크립트를 즉시 다시 실행하면 처음에 작동하기 때문입니다.
시간을 제어해야 할지도 모르겠네요.
SeriesInfoInteger가 도움이 될까요?
s차트싱크로 스크롤:
이 스크립트는 터미널에서 열려 있는 모든 차트의 동기 스크롤을 제공합니다.
Author: Dmitry Fedoseev