기고글 토론 "MQL5에서 자신 만의 그래픽 패널 만들기"

 

새로운 기고글 MQL5에서 자신 만의 그래픽 패널 만들기 가 게재되었습니다:

MQL5 프로그램의 유용성은 풍부한 기능과 정교한 그래픽 사용자 인터페이스에 의해 결정됩니다. 빠르고 안정적인 작동보다 시각적인식이 때때로 더 중요합니다. 다음은 표준 라이브러리 클래스를 기반으로 디스플레이 패널을 만드는 방법에 대한 단계별 가이드입니다.

먼저 용어를 정의하겠습니다. 디스플레이 패널은 드로잉 버퍼가 없는 별도의 창 사용자 지정 디스플레이를 설명하는 데 사용할 용어입니다. 이러한 패널은 터미널에 내장된 차트 개체를 사용하여 필요한 정보를 표시합니다. 정보가 표시 될 수 있습니다.

  • 수치적으로
  • 텍스트로,
  • 색상으로,
  • 기타

필요한 모든 단계를 자세히 살펴보고 다음과 같이 그래픽 패널을 만듭니다.



작성자: MetaQuotes

 

현재 라이브러리는 차트에서 하나의 패널에 대해 사용자 정의되어 있습니다.

두 개의 패널을 추가하려고 하면 이벤트가 잘못 감지되어 요소의 ID가 같고 부모 ID가 확인되지 않습니다.

이를 테스트하기 위해 데모 컨트롤.mq5를 가져와 패널을 복제했는데, 모든 이벤트가 두 패널에 복제되어서는 안 되는데도 불구하고 복제되었습니다.

 
"디스플레이 패널 채우기" 항목에서
CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
대신
ObjCAppDialog.Create(chart,name,subwin,x1,y1,x2,y2))
같은 것을 사용할 수 있나요?
 
Rorschach:
"디스플레이 패널 채우기" 항목에서 다음과 같은 것을 사용하는 대신 ?

좋은 하루, 어쩌면 당신이 무엇을해야할지 말해 줄 수 있습니다.

귀하의 예제 ekspert 컨트롤.

다른 기간으로 전환 할 때 전문가가 언로드되면 OnDeinit ()에서 ExtDialog.Destroy (reason); 제거를 시도했습니다.

다른 기간으로 전환할 때 대화창이 계속 작동하도록 하려면 어떻게 해야 하는지 알려주실 수 있나요?

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Программы MQL5 / Выполнение программ - Документация по MQL5
 
vdv2001:

안녕하세요, 어떻게 해야 할지 알려주세요.

귀하의 예는 전문가 고문 컨트롤입니다.

다른 기간으로 전환할 때 전문가 어드바이저가 언로드되면 OnDeinit()에서 ExtDialog.Destroy(reason); 를 제거하려고 했습니다.

다른 기간으로 전환 할 때 대화 창이 계속 작동하도록하려면 어떻게해야하는지 알려주시겠습니까?

지적해 주셔서 감사합니다. 오류가 수정되었습니다. 다음 빌드에서 업데이트할 예정입니다.
 

IMHO는 라이브러리를 직접 작성하는 것이 어디서 어떻게 사용해야 하는지, 잘못된 것이 있으면 어떻게 수정해야 하는지 알기 쉽다고 생각합니다.

표준 클래스를 사용하지 않고 패널을 작성하는 예시: VirtualTradePad 포지션 스타일

 

MQL5 마법사를 사용하여 클래스를 빌드하면 컴파일되지 않는 코드가 생성되는 이유가 궁금할 수 있습니다:


기사에서 언급했듯이 이 코드 줄을 수동으로 추가해야 하는데, 이는 코더가 아닌 사용자를 위한 마법사에서는 약간 이상합니다.

#include <Controls\Dialog.mqh>

또한 :

This article will demonstrate how easy it is to create your own display panels in a separate chart subwindow using the Standard Library classes.

나는 이것이 농담이라고 생각하지 않습니까?

MQL5 Wizard: Creating Expert Advisors without Programming
  • 2011.01.11
  • MetaQuotes Software Corp.
  • www.mql5.com
Do you want to try out a trading strategy while wasting no time for programming? In MQL5 Wizard you can simply select the type of trading signals, add modules of trailing positions and money management - and your work is done! Create your own implementations of modules or order them via the Jobs service - and combine your new modules with existing ones.
 

"코더가 아닌 사용자를 위한 마법사치고는 좀 이상합니다."

저는 이 마법사가 코더가 아닌 사람들을 위한 마법사라고 생각하지 않습니다.

초보 프로그래머가 무언가를 만드는 데 필요한 첫 단계에 발을 들여놓을 수 있도록 도와줄 수 있습니다.

MQL5 프레임워크는 많은 잠재력을 제공하며 그 중 일부는 마법사 생성으로 발견할 수 있습니다.

하지만 이 예제처럼 더 복잡한 것을 만들려면 항상 프로그래밍의 기초가 필요하다고 생각합니다.

하지만 기본 클래스에서 파생하는 경우 당연한 것들을 포함해야 한다는 데 동의합니다...

 
ugo58:

" 코더가 아닌 사용자를 위한 마법사치고는 좀 이상합니다."

저는 이 마법사가 코더가 아닌 사람들을 위한 마법사라고 생각하지 않습니다.

초보 프로그래머가 무언가를 만드는 데 필요한 첫 단계에 발을 들여놓을 수 있도록 도와줄 수 있습니다.

MQL5 프레임워크는 많은 잠재력을 제공하며 그 중 일부는 마법사 생성으로 발견할 수 있습니다.

하지만 이 예제처럼 더 복잡한 것을 만들려면 항상 프로그래밍의 기초가 필요하다고 생각합니다.

하지만 기본 클래스에서 파생한다면 당연한 것들을 포함해야 한다는 데 동의합니다...

그럴 수도 있겠지만, 저는 MQL5 마법사가 코더가 아닌 사람을 위해 먼저 설계되었다고 생각했습니다. 어쨌든 문제는 마법사가 생성한 코드를 컴파일하려면 수동으로 코드를 추가해야 하기 때문에 여기서는 버그와 같습니다.

MQL5 Wizard: Creating Expert Advisors without Programming
  • 2011.01.11
  • MetaQuotes Software Corp.
  • www.mql5.com
Do you want to try out a trading strategy while wasting no time for programming? In MQL5 Wizard you can simply select the type of trading signals, add modules of trailing positions and money management - and your work is done! Create your own implementations of modules or order them via the Jobs service - and combine your new modules with existing ones.
 

사용자 GUI (패널) 라이브러리에서 내 의견 이벤트 모델에서 성공적이지 않은 복사본을 발견했습니다:

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
    ...
}

첫째, 모든 이벤트에 int, long, double 및 string에 해당하는 변수 집합이 있는 것은 아닙니다. 이벤트를 설명하는 변수가 더 많을 수도 있고, 적을 수도 있으며, 제안된 기본 유형과 일치하지 않는 변수가 있을 수도 있습니다. 실제로 int -> bool, string -> int, double -> int 등과 같은 지속적인 변환을 볼 수 있습니다. 그리고 절차적 프로그래밍의 관점에서 볼 때 실제로 할 수있는 일이 거의 없다면 (가상의 각 경우에 대해 1 000 000 개의 오버로드 된 함수를 만들지 않기 때문에) OOP 프레임 워크 내에서 모든 것이 훨씬 쉽고 우아하게 수행 될 수 있습니다.

하지만 이 이벤트 핸들러는 차트에서 수신한 이벤트를 처리하기 위한 것이고, 이벤트는 새 포지션 열기나 시세 변경 등 무엇이든 될 수 있다는 것이 OnEvent의 주요 문제입니다. 일반적으로 OnEvent(...)는 보편적인 이벤트 핸들러처럼 보이지 않습니다. 아마도 개발자들은 기존 CWnd를 기반으로 자체 이벤트를 처리할 수 있었겠지만, 저에게는 표준 패널 라이브러리를 사용하는 것이 여전히 문제가 됩니다.

Как использовать торговые классы Стандартной библиотеки при написании советника
Как использовать торговые классы Стандартной библиотеки при написании советника
  • 2010.11.10
  • Samuel
  • www.mql5.com
В статье рассказывается о том, как использовать основной функционал торговых классов Стандартной библиотеки при написании советников, в которых применяется открытие, закрытие и модификация позиции, проверка свободной маржи перед размещением торговых ордеров, размещение и удаление отложенных ордеров. Показано, как использовать торговые классы для получения свойств ордеров и сделок.
 

감사합니다, 나는 그것을 연구했습니다, 그것은 유용합니다! 잠시만요 : VS에서와 같이 양식 생성자에서 패널을 조립할 수 있도록 일종의 생성자를 만들 계획이 있습니까? 손으로 모든 것을 세는 것이 그리 편리하지 않기 때문에 전문성의 표시 일 수도 있지만 시간이 오래 걸립니다)).

매크로로 그들은 분명히 그것을 과용했습니다...