스크립트: s차트싱크로 스크롤

 

s차트싱크로 스크롤:

이 스크립트는 터미널에서 열려 있는 모든 차트의 동기 스크롤을 제공합니다.

s차트싱크로 스크롤

Author: Dmitry Fedoseev

[삭제]  

이 스크립트가 다른 주기의 차트와 동시에 작동한다는 것을 올바르게 이해했나요( 여기서처럼)?

코드 스타일이 MQL4를 연상시킵니다. 그리고 이것은 나쁜 것이 아닙니다. 감사합니다!

[삭제]  

전체 타임라인의 왼쪽과 오른쪽에 차트가 동기화되지 않는 문제가 있습니다. 차트의 전체 너비에 대해 막대가 시간별로 동기화되기를 원합니다.

개발자들이 차트를 '구멍' 막대가 있는 경우와 없는 경우의 시각화 가능성에 대해 다시 한 번 생각해보고(아마도 토론을 위해 올려놓는 것이 좋을 것 같습니다). 이 경우 시각화만 가능할 뿐, 즉 '구멍' 막대는 MQL5에서 사용할 수 없습니다.

 

드미트리, 루핑 대신 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);
   }
 }
}

여기까지입니다!

 
getch:

이 스크립트가 ( 여기서처럼) 다른 주기의 차트와 동시에 작동한다는 것을 올바르게 이해했나요?

코드 스타일이 MQL4를 연상시킵니다. 그리고 이것은 나쁜 것이 아닙니다. 고맙습니다!


다른 주기로도 작동합니다.
 
sergeev:

디미트리, 루핑 대신 CHARTEVENT_CLICK을 사용하는 것이 더 쉬울 것 같네요...

다음은 한 통화의 차트를 동기화하는 예제입니다.

를 동기화하는 예제입니다.

모든 것이 그렇게 간단한 것은 아닙니다. 이 함수는 차트 왼쪽 가장자리에 있는 막대를 동기화하는데, 이는 시각적으로 역사를 공부하는 데 그다지 편리하지 않습니다. 또한 차트 오프셋도 비활성화해야 하는데, 이 역시 그리 편리하지는 않습니다(취향의 문제이긴 하지만). 개발자는 일반적으로 오른쪽 가장자리에서 들여 쓰기를 가져오고 설정하거나 시간별로 탐색하는 기능을 추가 할 수 있으며 많은 기능이 바 번호 또는 시간을 전달할 수있는 보편적 인 스타일로 만들어집니다. 또한 이벤트는 스크립트가 작동하는 차트에 대해서만 처리됩니다.

----------------------------------------------------------------------------------------------------------------

OnChartEvent

OnChartEvent()는 ChartEvent 이벤트 그룹의 핸들러입니다:

...

...

이 함수는 EA에서만 호출할 수 있으며 무효 유형과 4개의 매개변수를 가져야 합니다:

----------------------------------------------------------------------------------------------------------------

이벤트 처리는 전문가 조언자에서만 작동합니다. 차트에는 하나의 전문가 고문 만있을 수 있으며 보조적이고 실질적으로 쓸모없는 전문가 고문으로 전문가 고문을 대신해서는 안됩니다. 트레이딩 체결과 직접 관련이 없는 보조 도구는 극히 필요한 몇 가지 예외를 제외하고는 전문가 조언의 형태로 만들어서는 안된다는 것이 저의 신념입니다.

 
Integer:

온차트이벤트

OnChartEvent()는 ChartEvent 이벤트 그룹의 핸들러입니다:

...

...

함수는 전문가 어드바이저에서만 호출할 수 있으며 무효 유형과 4개의 매개 변수가 있어야 합니다:

----------------------------------------------------------------------------------------------------------------

이벤트 처리는 전문가 조언자에서만 작동합니다. 차트에는 하나의 전문가 고문 만있을 수 있으며, 보조적이고 실질적으로 쓸모없는 전문가 고문으로 전문가 고문을 대신해서는 안됩니다. 트레이딩 체결과 직접 관련이 없는 보조 도구는 극히 필요한 몇 가지 예외를 제외하고는 전문가 조언의 형태로 만들어서는 안 된다는 것이 저의 신념입니다.

공지사항( https://www.mql5.com/ru/forum/23/page4)을 계속 주시해 주시기 바랍니다:

메타트레이더 5 클라이언트 터미널 빌드 245

  1. 터미널: 자산(노출 탭에서)의 여유 마진 자금 계산 오류를 수정했습니다.
  2. 터미널: "전경에 차트" 차트 속성의 작동을 수정했습니다.
  3. 터미널: 차트의 인쇄 미리보기 창을 수정하고 새롭게 디자인했습니다.
  4. 터미널: 임시 전역 변수로 작업할 때의 버그를 수정했습니다.
  5. 터미널: '표준' 및 '차트' 도구 모음을 통합했습니다.
  6. MQL5: 충돌 및 포럼 메시지 수정
  7. MQL5: 전문가 어드바이저 및 스크립트의 복사* 함수 작동 원리를 변경했습니다. 이제 이 함수는 요청된 데이터를 다운로드하고 작성할 때까지 대기합니다. 요청된 데이터의 대기 시간은 30초를 초과하지 않습니다. 보다 자세한 설명은 가까운 시일 내에 MQL5 도움말에서 확인할 수 있습니다.
  8. MQL5: 전문가 어드바이저와 유사하게 사용자 지정 지표에 의한 이벤트 처리 가능성이 추가되었습니다. 더 자세한 설명은 가까운 시일 내에 MQL5 도움말에 제공될 예정입니다.

.

 
Integer писал(а) :

그렇게 간단하지 않습니다. 이 함수는 차트의 왼쪽 가장자리에 있는 막대를 동기화하므로 시각적으로 역사를 공부하기에는 그리 편리하지 않습니다.

그러나 모든 가장자리별로 막대를 동기화할 수 있습니다. 그리고 트레이더에게 중앙, 오른쪽, 왼쪽을 선택할 수 있는 버튼을 제공하세요....

차트 이동도 비활성화해야 하는데, 이 또한 매우 편리하지 않습니다(취향의 문제이긴 하지만).

개발자는 일반적으로 오른쪽 가장자리에서 들여 쓰기를 가져오고 설정하거나 시간별로 탐색하는 기능을 추가 할 수 있으며, 많은 기능이 바 번호 또는 시간을 전달할 수있는 보편적 인 스타일로 만들어집니다.

이 기능을 사용할 수 있습니다. chart_shift_size

예제 오브젝트 차트 샘플.mq5를 참조하세요.

 

차트_첫번째_보이는_바에 문제가 있는 것 같습니다.

차트를 볼 수 있는 숫자보다 분명히 큰 숫자로 ChartNavigate()를 만들면 다음과 같이 됩니다.

ChartGetInteger(ChartID(),CHART_FIRST_VISIBLE_BAR)가 Bars(ChartSymbol(ChartID()),ChartPeriod(ChartID()))보다 커지게 됩니다.

스크립트 2.mq5의 예시. 스크립트를 실행하고 잠시 기다립니다.

파일:
2.mq5  2 kb
 

단말기가 제대로 작동하지 않는 것 같습니다.

스크립트를 즉시 다시 실행하면 처음에 작동하기 때문입니다.

시간을 제어해야 할지도 모르겠네요.

SeriesInfoInteger가 도움이 될까요?

[삭제]  
Integer, sergeev, 귀하의 게시물에 따르면 MQL5와 MT5가 매우 원시적이라는 매우 불쾌한 인상을 받았습니다.