저는 개인적으로 전문가, 신호, 필터, 지표, 위험 관리자 등을 나타내는 객체를 구성하여 봇을 구축하는 데 MQL5의 이 OOP 프레임워크가 매우 흥미롭다고 생각합니다 - 제 생각에는 코드 재사용과 확장성을 선호하면서 많은 성능을 희생하지 않는 매우 우아한 접근 방식이지만 복잡성으로 인해 학습 곡선이 상당히 가파른 것 같습니다.
어쨌든 저는 MQL5로 독점적으로 전환하고 있고 OOP 개념 / 언어에 대한 좋은 경험을 가지고 있기 때문에 새로운 거래 아이디어를 프로토 타이핑하고 거래 시스템을 연구하는 데 사용하기 위해이를 적용하고 싶습니다. 라이브러리 코드를 공부하고 사용해봤는데 다음과 같은 모범 사례에 대해 권장하는 접근 방식이 궁금합니다:
질문: 전문가에서 수신한 신호에 대한 추세 필터를 어떻게 통합하나요?
라이브러리에는 CExpertBase::m_trend_type 속성이 포함되어 있지만 안타깝게도 플랫폼과 함께 제공되는 예제 어디에서도 실제로 사용되지 않습니다. 두 가지 디자인 가능성 사이에서 고민 중입니다... 트렌드 필터링 객체 트렌드 필터링 객체 를 직접 추가하는 것(아래 코드 스니펫 참조)으로 전문가 수준에서 거래 결정을 내릴 때 더 많은 제어 기능을 제공할 수 있습니다. 이 문제를 해결하는 또 다른 방법은 기본 신호 객체의 필터를 조작하고 추세를 계산하여 CSignalExpert의 서브 클래스 내부(예: CSignalWithTrendFilter::Direction() 내부)에서 결정을 내리는 것일 수 있습니다. 아직 한 가지 방법과 다른 방법의 장단점이 무엇인지, 그리고 어떤 방법이 향후 프로젝트의 요구 사항에 대해 더 많은 유연성을 제공 할 것인지, 즉 복잡한 코드 재사용과 기본 클래스의 조정이 줄어드는 등 어떤 방법이 더 유연 할 것인지 아직 확실하지 않습니다.
class CExpertWithTrendFilter : public CExpert
{
protected:
CExpertSignal *m_trend;// CExpert::m_signal과 병렬로 작동하여 생성하는 신호를 필터링합니다.// ...virtualbool Processing(void);
virtualbool CheckOpen(void);
// ...
};
bool CExpertWithTrendFilter::Processing(void)
{
CExpertBase::m_trend_type = (ENUM_TYPE_TREND) m_trend.Direction();// CExpertSignal에서 파생된 특수 객체를 기반으로 현재 추세를 결정합니다.m_signal.TrendType(m_trend_type);// 추세 유형/강도를 m_signal에 입력으로 전달하고, CExpertSignal에서 서브 클래스화합니다.
m_signal.SetDirection(); // 옵션 #1 >>> 위에서 설정한 추세를 고려하여 신호 방향을 계산합니다(또는 그렇지 않을 수도 있음).// ...if(CheckOpen()) // 옵션 #2 >>> 또는 전문가가 롱 또는 숏 오픈 전에 추세 유형/강도를 확인할 수 있습니다.return(true);
retun(false); // 아무런 작업 없이 반환
}
bool CExpertWithTrendFilter::CheckOpen(void)
{
if(m_trend_type > TYPE_TREND_FLAT && CheckOpenLong()) // 트렌드 필터 방향이 일치하는 경우에만 롱 오픈 허용return(true);
if(m_trend_type < TYPE_TREND_FLAT && CheckOpenShort()) // 트렌드 필터 방향이 일치하는 경우에만 숏 오픈 허용return(true);
return(false); // 아무런 작업 없이 반환
}
In this article, I offer my set of trading functions in the form of a ready-made EA. This method allows getting multiple trading strategies by simply adding indicators and changing inputs.
안녕하세요 블라디미르,
나는이 기사를 좋아합니다, 다른 지표를 사용하여 보류중인 주문 만 사용하여 거래를 시작하는 EA를 작성할 수 있습니까? 예를 들어 가격이 한 방향으로 5만큼 움직이면 상관없이 매수 또는 매도를 트리거합니다.
안녕하세요 블라디미르,
다른 지표를 사용하여 보류중인 주문 만 사용하여 거래를 시작하는 EA를 작성할 수 있습니까? 예를 들어 가격이 한 방향으로 5만큼 움직이면 상관없이 매수 또는 매도를 트리거합니다.
질문이 MQL5 마법사: 어떤 가격에서든 지정가 주문을 열도록 EA를 가르치는 방법 문서와 관련된 질문이 맞습니까?
안녕하세요 블라디미르.
안녕하세요 블라디미르 카르푸토프님, 매우 유익한 기사였습니다!
저는 개인적으로 전문가, 신호, 필터, 지표, 위험 관리자 등을 나타내는 객체를 구성하여 봇을 구축하는 데 MQL5의 이 OOP 프레임워크가 매우 흥미롭다고 생각합니다 - 제 생각에는 코드 재사용과 확장성을 선호하면서 많은 성능을 희생하지 않는 매우 우아한 접근 방식이지만 복잡성으로 인해 학습 곡선이 상당히 가파른 것 같습니다.
어쨌든 저는 MQL5로 독점적으로 전환하고 있고 OOP 개념 / 언어에 대한 좋은 경험을 가지고 있기 때문에 새로운 거래 아이디어를 프로토 타이핑하고 거래 시스템을 연구하는 데 사용하기 위해이를 적용하고 싶습니다. 라이브러리 코드를 공부하고 사용해봤는데 다음과 같은 모범 사례에 대해 권장하는 접근 방식이 궁금합니다:
질문: 전문가에서 수신한 신호에 대한 추세 필터를 어떻게 통합하나요?
라이브러리에는 CExpertBase::m_trend_type 속성이 포함되어 있지만 안타깝게도 플랫폼과 함께 제공되는 예제 어디에서도 실제로 사용되지 않습니다. 두 가지 디자인 가능성 사이에서 고민 중입니다... 트렌드 필터링 객체 트렌드 필터링 객체 를 직접 추가하는 것(아래 코드 스니펫 참조)으로 전문가 수준에서 거래 결정을 내릴 때 더 많은 제어 기능을 제공할 수 있습니다. 이 문제를 해결하는 또 다른 방법은 기본 신호 객체의 필터를 조작하고 추세를 계산하여 CSignalExpert의 서브 클래스 내부(예: CSignalWithTrendFilter::Direction() 내부)에서 결정을 내리는 것일 수 있습니다. 아직 한 가지 방법과 다른 방법의 장단점이 무엇인지, 그리고 어떤 방법이 향후 프로젝트의 요구 사항에 대해 더 많은 유연성을 제공 할 것인지, 즉 복잡한 코드 재사용과 기본 클래스의 조정이 줄어드는 등 어떤 방법이 더 유연 할 것인지 아직 확실하지 않습니다.
도움과 추천에 미리 감사드립니다.
나는 오래 전에 내 거래 엔진으로 전환했습니다 EA 생성자를 개발하려는 시도 - 더 유연합니다.
알겠습니다. 기사를 읽고 첨부 된 코드를 살펴 보겠습니다... 어쨌든 괜찮다면 위의 질문에 대한 귀하의 의견 / 의견을 보내 주시면 감사하겠습니다. 감사합니다!
알겠습니다. 기사를 읽고 첨부된 코드를 살펴볼게요... 어쨌든 위의 질문에 대한 의견이나 의견을 괜찮으시다면 남겨주시면 감사하겠습니다. 감사합니다!
전문가 신호는 과거입니다. 댓글이 없습니다.
씨엑스퍼트시그널은 과거입니다. 댓글이 없습니다.
:-)