MQL5 마법사 및 표준 무역 클래스 라이브러리에 대한 질문 - 페이지 11

 
Reshetov :

세 가지 질문:

  1. 신호 모듈이 모든 틱이 아닌 공개 가격에서만 작동하도록 하는 방법은 무엇입니까?
  2. 위치 추적 모듈에서 신호 모듈의 투표 값을 얻는 방법은 무엇입니까? 이미 계산된 신호를 트롤링해야 하며 추적을 위해 다른 신호 모듈을 구성하지 않아야 합니다.
  3. 금전 및 위험 관리 모듈 에서 신호 모듈 투표 값을 얻는 방법은 무엇입니까? 이미 계산된 거래 신호에 따라 거래량을 열어야 하며 거래량 계산을 위한 다른 신호 모듈을 구성하지 않아야 합니다.

물론 이론적으로 마법사의 도움으로 어드바이저를 구성한 다음 코드에 들어가서 이 모든 경제를 수동으로 묶을 수 있습니다. 그러나이 모든 것이 표준 방법의 형태로 구현되는 것이 바람직합니다. 예를 들어 하나의 신호 모듈을 다른 신호 모듈로 교체하려는 경우 코드에 들어가 편집할 필요가 없도록 마법사를 사용하려는 인형을 위한 것입니다.

"... 마법사의 도움으로 전문가 고문을 구성한 다음 ... 수동으로 ..."라는 모든 질문에 직접 답변하십시오. 아직 다른 옵션이 없습니다. 마스터는 가까운 장래에 개발되지 않을 가능성이 큽니다. 표준 라이브러리 클래스는 도그마가 아니라 일반적인 (내 의견으로는) 솔루션을 제공하려는 시도입니다. 상속(마스터에서 사용), 오버로드 메소드, 고유한 메소드를 추가하십시오. 그리고 당신은 "행복"이 될 것입니다 ...
 
uncleVic :
"... 마법사의 도움으로 전문가 고문을 구성한 다음 ... 수동으로 ..."라는 모든 질문에 직접 답변하십시오. 아직 다른 옵션이 없습니다. 마스터는 가까운 장래에 개발되지 않을 가능성이 큽니다.

그런 좋은 사업이 먼 구석에 던져져 유감입니다.

그것을 염두에 둔다면 많은 일을 할 수 있습니다. 사소한 일에 흩어지는 것이 아니라 프로그래머가 기성품 모듈을 생성하기 위해 더미와 다른 사용자가 코드를 거치지 않고도 다양한 기성품 Expert Advisors를 모을 수 있습니다. 따라서 알고리즘 mql4에서와 동일한 bodyagi, 즉 알고리즘을 사용하고 코드에 들어가서 수동으로 나사를 조입니다. OOP 원칙을 다시 위반합니다. 예를 들어, 한 모듈을 다른 모듈로 교체하려면 코드를 다시 입력하고 수동으로 모든 것을 다시 변경해야 합니다. 주인이 아니라 말도 안되는 것으로 판명되었습니다. 최소한 어디에서 무엇을 수정해야 하는지 파악하기 위해 코드를 크롤링하는 것만으로도 많은 시간을 할애할 수 있습니다.

좋은 시작이었다. 불쌍해. 어제 방금 신호 모듈을 만들었지만 전체 고문이 이 모듈과 함께 작동하도록 하여 매번 코드를 찌르지 않도록 하는 방법을 지금은 모르겠습니다. 사용법에 대한 글을 쓰고 싶었는데 종류별로 삽입하고 포지션 관리, 자금 및 리스크 관리를 추가하고 모든 것이 작동합니다. 아니오, 작동하지 않습니다. 왜냐하면 사용자가 마법사를 사용하여 권고자를 수집하면 아무 것도 작동하지 않습니다. 그는 여전히 어디에 코드를 입력하고 무엇을 변경해야 하는지에 대한 전체 지침을 작성해야 합니다. 지침을 작성하기 전에 나 자신이 여전히이 모든 것을 처리해야한다는 사실은 말할 것도 없습니다.

따라서 이제 사용자는 mql5, OpenCL 등을 배울 수 밖에 없습니다. 자동 거래를 위해. 그렇지 않으면 운이 좋지 않을 것입니다.

좋아, 이 프로젝트는 포기했으니 이제 다른 방향으로 생각해볼게.

 
Reshetov :

그런 좋은 사업이 먼 구석에 던져져 유감입니다.

버려지는 것이 아니라 연기되기를 바랍니다. 그 자신은 마스터의 발전에 대해 많은 흥미로운 생각을 가지고 있습니다. 하지만...
 
uncleVic :
버려지는 것이 아니라 연기되기를 바랍니다. 그 자신은 마스터의 발전에 대해 많은 흥미로운 생각을 가지고 있습니다. 하지만...

희망은 마지막에 죽는다 (c) 민속 속담

첫 번째 질문에, 즉. 공개 가격 에서 신호 모듈을 테스트하고 틱으로 거래하는 방법, 나는 코드에 올라갈 필요가 없으며 일반적으로 받아 들여지는 것보다 훨씬 나은 솔루션을 찾았습니다.

그러나 코드를 선택하지 않고 위치를 유지하고 자본 및 위험을 관리하기 위한 모듈에서 신호 모듈의 표시를 읽는 방법은 아직 완료할 수 없었습니다. 소스코드를 올려서 정리했습니다. 신호 모듈은 방향() 메서드를 통해 결과를 발행합니다. 여하튼 위치를 유지하고 자본과 위험을 관리하기 위해 모듈에서 바로 이 모듈의 클래스 인스턴스를 참조하고 판독값을 읽기 위해 바로 이 메서드를 호출하는 것으로 충분합니다. 코드를 변경하지 않고 이 작업을 수행하는 방법은 아직 명확하지 않습니다.

 
Reshetov :

희망은 마지막에 죽는다 (c) 민속 속담

첫 번째 질문에, 즉. 공개 가격 에서 신호 모듈을 테스트하고 틱으로 거래하는 방법, 나는 코드에 올라갈 필요가 없으며 일반적으로 받아 들여지는 것보다 훨씬 나은 솔루션을 찾았습니다.

그러나 코드를 선택하지 않고 위치를 유지하고 자본 및 위험을 관리하기 위한 모듈에서 신호 모듈의 표시를 읽는 방법은 아직 완료할 수 없었습니다. 소스코드를 올려서 정리했습니다. 신호 모듈은 방향() 메서드를 통해 결과를 발행합니다. 여하튼 위치를 유지하고 자본과 위험을 관리하기 위해 모듈에서 바로 이 모듈의 클래스 인스턴스를 참조하고 판독값을 읽기 위해 바로 이 메서드를 호출하는 것으로 충분합니다. 코드를 변경하지 않고 이 작업을 수행하는 방법은 아직 명확하지 않습니다.

코드를 변경하지 않으면 작동하지 않을 수 있습니다.

 
uncleVic :

코드를 변경하지 않으면 작동하지 않을 수 있습니다.

모든 것이 아직 손실되지 않았습니다. 결국, СExpert, СExpertMoney 및 СExpertTrailing에서 상속된 클래스를 만들고 필요한 액세스 방법을 신호 모듈 클래스의 인스턴스에 추가할 수 있습니다. 하지만 여기서도 문제가 발생합니다. tk. 마스터 는 생성된 Expert Advisor에 #include <Expert\Expert.mqh>를 규정하고 그 자손이 아닙니다.

우리는 여전히 생각해야 합니다.

개발자가 하나의 신호 모듈을 기본 모듈로 다른 모든 모듈에 사용할 수 있고 필요한 경우 위치 추적 및 자본 관리를 위해 모듈에 추가 신호(이 마법사 구현에서와 같이)를 추가할 수 있다고 즉시 추측한 경우 위험을 감수하고 코드에서 이를 제공하면 모든 것이 훨씬 쉬울 것입니다. 따라서 각 모듈은 신호에 대한 추가 조건을 각각 규정해야 하고 추가 외부 설정이 필요하므로 최적화된 매개변수가 많은 일종의 괴물이 됩니다. 한 모듈의 신호가 충돌할 수 있다는 사실은 말할 것도 없습니다. 신호는 포지션을 열 수 있고, 추적 모듈은 시장 진입 조건과 시장 퇴출 조건이 서로 모순되는 경우 다음 틱에 포지션을 닫을 수 있습니다.

 
Reshetov :

모든 것이 아직 손실되지 않았습니다. 결국, СExpert, СExpertMoney 및 СExpertTrailing에서 상속된 클래스를 만들고 필요한 액세스 방법을 신호 모듈 클래스의 인스턴스에 추가할 수 있습니다. 하지만 여기서도 문제가 발생합니다. tk. 마스터 는 생성된 Expert Advisor에 #include <Expert\Expert.mqh>를 규정하고 그 자손이 아닙니다.

우리는 여전히 생각해야 합니다.

개발자가 하나의 신호 모듈을 기본 모듈로 다른 모든 모듈에 사용할 수 있고 필요한 경우 위치 추적 및 자본 관리를 위해 모듈에 추가 신호(이 마법사 구현에서와 같이)를 추가할 수 있다고 즉시 추측한 경우 위험을 감수하고 코드에서 이를 제공하면 모든 것이 훨씬 쉬울 것입니다. 따라서 각 모듈은 신호에 대한 추가 조건을 각각 규정해야 하고 추가 외부 설정이 필요하므로 최적화된 매개변수가 많은 일종의 괴물이 됩니다. 한 모듈의 신호가 충돌할 수 있다는 사실은 말할 것도 없습니다. 신호는 포지션을 열 수 있고, 추적 모듈은 시장 진입 조건과 시장 퇴출 조건이 서로 모순되는 경우 다음 틱에 포지션을 닫을 수 있습니다.



모든 것이 예정되어 있었습니다. 마스터는 "물고기" 고문을 만듭니다. 더 멀리:

  • 포함을 교체하는 것은 문제가 되지 않습니다.
  • 주 신호는 외부에서 특별히 생성됩니다(대체의 편의를 위해).
  • 일부 입력 및 설정 메소드 호출을 추가하시겠습니까?
 
uncleVic :

모든 것이 예정되어 있었습니다. 마스터는 "물고기" 고문을 만듭니다. 더 멀리:

  • 포함을 교체하는 것은 문제가 되지 않습니다.
  • 주 신호는 외부에서 특별히 생성됩니다(대체의 편의를 위해).
  • 일부 입력 및 설정 메소드 호출을 추가하시겠습니까?


그것은 처음에 다음과 같은 수치입니다.

  1. 거래 시스템에 포함된 모듈 클래스의 메서드에 대한 액세스는 읽기에도 닫혀 있으므로 작업을 조화시킬 가능성이 완전히 배제됩니다.
  2. 신호 모듈은 위치 추적 모듈과 쉽게 충돌할 수 있습니다. 신호가 다르므로 비호환성이 배제되지 않습니다.
  3. 모듈에는 서로 다른 신호가 있으므로 모두 별도의 설정을 가지므로 어드바이저에 대한 입력 설정이 많지는 않지만 많습니다. 설정이 다양할수록 스토리에 맞을 확률이 높아집니다.
  4. 마법사가 작동한 후 문제를 해결하기 위해 소스를 통해 올라가야 하는 경우가 있습니다. 프로그래밍을 모르는 최종 사용자에게는 일반적으로 적합하지 않습니다. 플러그 앤 플레이가 필요합니다. 프로그래머에게 이러한 오해는 또한 문제를 야기합니다. 자신의 코드를 다루는 것은 마스터가 힙에 덤프한 코드보다 훨씬 쉽습니다. 추가적인 복잡성은 클래스가 상속된다는 것입니다. 오해의 원인은 후손 수준에서는 거의 찾아볼 수 없지만 부모 클래스를 깊숙이 들여다봐야 한다.

우리는 최고를 원했습니다. 그것은 언제나처럼 밝혀졌습니다. (c) Chernomyrdin

일반적으로 오해의 상당 부분은 고칠 수 있지만, 이는 루트 부모 클래스 수준에서 이루어져야 하며, 수정된 클래스는 플랫폼 업데이트를 통해 배포되어야 합니다. 저것들. 위치 추적 및 돈 및 위험 관리 모듈에서 신호 모듈의 Direction() 메서드에 대한 액세스를 열어야 합니다. 개별 모듈 개발자가 상위 클래스의 소스 코드를 편집하면 소스가 호환되지 않고 생성된 모듈이 다른 컴퓨터에서 작동하지 않기 때문입니다. 모듈 개발자가 재정의된 메서드를 사용하여 부모 클래스를 만드는 경우 비호환성은 여전히 마스터 수준에 있습니다. 후자는 포함을 규정하므로 최종 사용자는 지침을 작성해야 하며 소스 코드에 들어가고 싶어하지 않을 것입니다. 그렇게 하면 오류는 단일 문자 또는 다른 위치 등에 있습니다. 등..

 
Reshetov :

그것은 처음에 다음과 같은 수치입니다.

  1. 거래 시스템에 포함된 모듈 클래스의 메서드에 대한 액세스는 읽기에도 닫혀 있으므로 작업을 조화시킬 가능성이 완전히 배제됩니다.
  2. 신호 모듈은 위치 추적 모듈과 쉽게 충돌할 수 있습니다. 신호가 다르므로 비호환성이 배제되지 않습니다.
  3. 모듈에는 서로 다른 신호가 있으므로 모두 별도의 설정을 가지므로 어드바이저에 대한 입력 설정이 많지는 않지만 많습니다. 설정이 다양할수록 스토리에 맞을 확률이 높아집니다.
  4. 마법사가 작동한 후 문제를 해결하기 위해 소스를 통해 올라가야 하는 경우가 있습니다. 프로그래밍을 모르는 최종 사용자에게는 일반적으로 적합하지 않습니다. 플러그 앤 플레이가 필요합니다. 프로그래머에게 이러한 오해는 또한 문제를 야기합니다. 자신의 코드를 다루는 것은 마스터가 힙에 덤프한 코드보다 훨씬 쉽습니다. 추가적인 복잡성은 클래스가 상속된다는 것입니다. 오해의 원인은 후손 수준에서는 거의 찾아볼 수 없지만 부모 클래스를 깊숙이 들여다봐야 한다.

우리는 최고를 원했습니다. 그것은 언제나처럼 밝혀졌습니다. (c) Chernomyrdin

일반적으로 오해의 상당 부분은 고칠 수 있지만, 이를 루트 부모 클래스 수준에서 하고 수정된 클래스를 업데이트를 통해 배포하는 것이 바람직하다. 모듈 개발자를 위한 부모 클래스의 소스를 편집하면 소스가 호환되지 않고 생성된 모듈이 다른 컴퓨터에서 작동하지 않기 때문입니다. 개발자가 재정의된 메서드를 사용하여 부모 클래스를 만드는 경우 비호환성은 이미 마스터 수준에 있습니다. 그는 포함을 규정하므로 최종 사용자는 지침을 작성해야 하며 소스 코드에 들어가고 싶어하지 않을 것입니다. 그렇게 하면 오류는 단일 문자 또는 다른 위치 등에 있습니다. 등..

구체적인 제안을 해보자. 우리는 고려할 것입니다.
 
uncleVic :
구체적인 제안을 해보자. 우리는 고려할 것입니다.

지금까지 위의 단점을 제거할 수 있는 것은 단 하나뿐입니다.

위치 추적 및 돈 및 위험 관리 모듈에서 신호 모듈의 Direction() 메서드에 의해 반환된 값 읽기에 대한 공개 액세스.

저것들. 예를 들어, 신호 모듈 클래스의 인스턴스를 참조하고 결과로 Direction() 메서드의 결과를 반환하는 식별자 double getMainSingnal()을 사용하여 위치 추적 및 돈 및 위험 관리 모듈에 메서드를 하나 더 추가합니다. 신호 모듈. 이 정보 교환은 읽기 전용 모드에서 이루어지므로 보안이 어떤 식으로든 손상되지 않습니다.

이를 위해 당신이 필요합니다

  1. CExpertSignal 클래스의 인스턴스 저장할 CExpertMoney 및 CExpertTrailing 클래스의 필드를 선택합니다. 메인 신호 모듈.
  2. CExpertSignal 클래스의 바로 이 인스턴스, 즉 신호 모듈은 이러한 동일한 모듈의 클래스 인스턴스를 초기화하는 동안 위치 추적 및 돈 및 위험 관리 모듈로 전송되어야 하며 1절에 지정된 필드에 저장되어야 합니다. 당연히 이 작업을 수행하기 전에 신호 모듈 클래스의 인스턴스가 이미 존재하는지 확인(확인)해야 합니다. 생성되었습니다.
  3. CExpertMoney 및 CExpertTrailing 클래스에서 클래스의 해당 데이터 필드에 저장된 신호 모듈 클래스의 인스턴스에 액세스하고 신호의 Direction() 메서드 결과를 반환하는 식별자 double getMainSingnal()을 사용하여 추가 메서드를 만듭니다. 기준 치수.

PS 신호 모듈 클래스의 인스턴스에 대한 링크를 저장하는 필드는 CExpert 클래스에 있습니다.

CExpertSignal    *m_signal;                   // trading signals object
저것들. CExpertMoney 및 CExpertTrailing 클래스에 대해 유사한 필드를 만들고 초기화하는 동안 동일한 CExpert 클래스의 위 필드에서 동일한 값을 전달해야 합니다.