바실리, 솔직히 더 나은 것을 기대했습니다. 이 작품에서 당신은 제안의 의미로 독자를 당황하게 만드는 데 성공했습니다.
하지만 "MT5 터미널에서 MQL4 로직으로 전문가 어드바이저를 거래하는 방법"이라고 훨씬 더 간단하게 부를 수도 있었을 것입니다. 그리고 이것이 바로 여러분이 주목해야 할 부분입니다.
이 초석에 집중했다면 훨씬 더 간결하고 이해하기 쉬웠을 것입니다.
그래서 먼저 동적 목록과 이 특정 사례에 대한 응용 프로그램을 로드했습니다. 그런 다음 가상 주문 테이블을 넣었습니다.
MQL4의 전체 로직은 두 가지 방법의 기능을 사용하여 MQL5에서 해결됩니다!
1. 터미널 기록에서 손절매 및 이익실현 티켓 복원
2. 둘 중 하나가 트리거되거나 메인 오더가 삭제될 때 추가 제어.
그런 다음이 두 가지 일반 함수를 설명한 후 동적 배열로 이동하여 "models-mql4-experts"를 구축합니다.
보류 주문에 대한 작업을 설명하지 않은 것은 매우 나쁩니다. 시장 주문보다 더 복잡하지는 않지만 실제 손절매 및 이익 실현 주문의 배치를 지연시킬뿐입니다.
어떤 이유로 그들은 그 기능을 아름답게 구현하지 않은 쓸모없는 파일 <Time.mqh>로 리더를로드했습니다.
그런 다음 주문 계산, 로트 제어 기능.
그들은 전문가와의 작업에 대한 모든 지식을 기사에 넣으려고 노력한 것 같고이 성장 아래 기사의 목적을 묻어 버린 것 같습니다.
글쎄, 그리고 주어진 모델에서-주문에서 손절매와 이익 실현을 어떻게 사용하는지 이해하지 못했습니다. IACD나 볼린저에서도 스톱 사용을 찾지 못했습니다.
일반적으로 나는 기사를 읽는 것을 좋아하지 않았습니다. 밝은 아이디어를 묻어 버린 불필요한 무게가 많이 있습니다.

- www.mql5.com
예, 계정 내역(또는 자신의 파일)에서 거래 목록을 복원하지 않으면 테스터의 장난감으로 판명되었습니다.
to:Udmurt2
제 글에서 MQL4 전문가의 논리가 어디에 있다고 생각하시나요? 귀하가 작성한 리뷰를 보면 자료에 대한 이해가 완전히 부족하다는 인상을 받았습니다. 물론 여러 측면에서 제 잘못입니다. 더 잘 구성했어야 했는데 그러지 못한 것 같습니다.
--------------------------------
기사 구조를 개선하기 위한 구체적인 제안이 있으신가요?
많은 부분이 '뒷전'으로 밀려났다는 데 동의합니다. 이 버전을 1.0 버전이라고 생각하세요. 다음은 도입 예정인 내용입니다:
1. 데이터 파일을 기반으로 한 데이터의 직렬화;
2. 주문 내역에 따른 모델 거래 내역 재구성;
3. 대기 주문에 기반한 모델에 대한 전체 설명 4;
상호 계산된 주문의 복잡한 시스템을 사용하는 거래 모델에 대한 설명 4;
5. 각 모델의 효율성에 대한 동적 제어 (모델 목록에서 비효율적 인 모델 제거).
6. 거래 모델에서 외부 기능 철회(예: 자본 관리 기능).
7. 멀티스레딩 지원(MT5 내부 병렬화 덕분에 현재 부분적으로 사용됨).
...
보시다시피 여전히 고려해야 할 자료가 너무 포괄적이어서 이에 대한 다른 기사, 말하자면 두 번째 부분을 작성할 때입니다. 이 기사는 고무 기사가 아니며 어쨌든 내가 스스로 설정 한 작업이 해결되었다고 생각합니다. 그리고 여기서 Udmurt2는 특히 잘못되었습니다. 제안 된 접근 방식의 기본은 보류중인 주문으로 전혀 작동하지 않는 동적 목록입니다 (어떤 이유로 그에게 보였 듯이). 그렇기 때문에 그들에게 많은 관심을 기울이고 있습니다. 대체로 보류 주문을 사용하지 않고 해결할 수없는 전략은 없을 것입니다. 그러나 제가 제안한 접근 방식은 동일한 스탑 및 테이크 아웃을 시뮬레이션하는 보류 주문 사용에 대한 제한을 부과하지 않습니다. 그러나 이 경우 추가적인 확인과 프로그램 하위 시스템이 필요하며, 특히 Trade() 이벤트를 설명하는 구조가 매우 유용할 것입니다. 그리고 그러한 구조는 없지만 (MQL5가 개발 중이기 때문에) 존재하지 않는 가능성에 대한 제어 시스템을 작성하는 것은 완전히 미친 짓이라고 생각합니다.
그건 그렇고, 가장 간단한 경우에는 몇 시간 안에 파일에서 거래 복원기를 작성할 수 있습니다. 그러나이 문제는이 솔루션을 급하게 작성하는 것이 아니라 잘 생각하고 싶기 때문에이 기사에서는 고려되지 않았습니다. 어쨌든 이 문제는 두 번째 파트에서 해결해야 할 많은 흥미로운 문제 중 하나가 될 것입니다.
MQL5는 현재 개발 중입니다. 제안된 접근 방식과 MQL5도 시간이 지남에 따라 발전하고 기회를 얻게 될 것입니다. 어떤 사람들에게는 현재 단계에서는 테스터를 위한 장난감처럼 보일 수 있습니다. 이 경우 메타트레이더 5는 데모 계좌용 장난감이라고 말할 수 있습니다. 하지만 시간이 얼마 지나지 않아 MT5가 사실상 표준이 될 것이며 제가 제안한 접근 방식은 다중 통화 / 다중 프레임 / 다중 시스템 거래를위한 강력한 솔루션이 될 것이라고 믿습니다. 지금 가장 중요한 것은 기본을 이해하는 것입니다. 이러한 기본 사항은 제가 이 글에서 설명한 내용입니다. 이를 이해하면 지정가 주문의 모든 장점과 파일에 거래를 암기하는 방법을 사용해 자신만의 트레이딩 모델을 쉽게 작성할 수 있습니다.

- www.mql5.com
내 글에서 MQL4 전문가들의 논리가 어디에 있다고 생각하시나요?
우리가 해결해야 할 주요 과제는 다음과 같습니다:
- 전문가 어드바이저는 한 번에 여러 거래 시스템을 기반으로 거래해야 합니다. 동시에 하나의 트레이딩 시스템과 여러 트레이딩 시스템을 동시에 거래하는 것도 똑같이 쉬워야 합니다;
- 전문가용 어드바이저에 포함된 모든 트레이딩 시스템이 서로 충돌하지 않아야 합니다. 각 트레이딩 시스템은 종합 포지션에 대한 기여도와 해당 주문만 처리해야 합니다;
- 모든 종합 시스템은 상품의 한 차트주기와 모든 차트주기를 한꺼번에 거래할 수 있어야 합니다.
- 모든 종합 시스템은 하나의 거래 상품과 사용 가능한 모든 상품을 한 번에 거래하는 것이 똑같이 쉬워야 합니다.
그리고 이 모든 점에서 MT4 터미널의 로직은 명확하고 절대적으로 식별됩니다.
1. 마술과 순 포지션의 부재 덕분에 여러 전문가 고문을 동시에 이끌 수 있습니다.
2. 전문가들은 동일한 마술과 순 포지션의 부재 덕분에 서로 충돌하지 않습니다.
3. 모든 상품은 모든 시간대에 거래됩니다
4. 모든 상품에서 모든 것이 거래됩니다.
질문:MT4 터미널에 없는 새로운 기능은 무엇인가요?
위에서 MQL4를 기반으로 추론을 구축하고 구현을 개발할 수 있다고 썼기 때문에 말하고자 하는 바를 훨씬 더 명확하게 알 수 있을 것입니다.
저는 마술 티켓으로 정류장을 계산하는 것부터 트레이딩 전문가 어드바이저-mt4
모델을 만드는 것까지 단계별로 구축한 다음 여러 전문가 어드바이저를 제어하는 방법으로 넘어갈 것입니다. (목록/비목록은 이미 신청할 분위기가 될 것입니다.)
이 버전을 1.0 버전으로 간주하세요. 도입 예정인 내용은 다음과 같습니다:
2. 주문 내역에 따른 모델 거래 내역 재구성;
3. 대기 주문에 기반한 모델에 대한 전체 설명;
4. 상호 계산되는 복잡한 주문 시스템을 사용하는 거래 모델에 대한 설명;
포인트 2-4는이 기사에서 즉시 해결해야 할 사항입니다. 다른 모든 것은 악마의 것입니다. 프로그래머의 재량에 맡기거나 두 번째 기사에 남겨 둘 수있었습니다.
동적 목록은 제어 및 회계 방법 중 하나 일뿐입니다. 일반 배열로 할 수 있습니다.
이러한 유연성과 제어성을 가진 다른 제안 된 접근 방식은 무엇입니까?
모든 MT4 전문가 :)))
바실리, 너무 열심히 일하고 있나 봐요. 때로는 처음으로 돌아가서 모든 것을 다시 실행해야 할 때가 있습니다. 나는 사람들이 모든 것을 복잡하게 만드는 경향이 있다는 것을 이미 천 번째로 확신합니다. 선형 장치로 MT4 터미널 작동의 마더 로직에서 기본 클래스를 다시 실행하는 것이 좋습니다. 많은 것들이 더 명확해질 것입니다.
그렇지 않으면 두 번째 기사를 써야 할 것입니다 :)
네, 맞아요 ;)
하지만 MT는 마무리 중입니다. 그리고 기사에서 제안 된 코드는 실제에 대한 관점에서 즉시 작성되었을 수 있습니다.
그건 그렇고, 챔피언십 EA는 어떻습니까? 재부팅으로 어려움을 겪었나요?
고통은 있었지만 크게는 아니었습니다. 물론 초기화/비초기화 이벤트 핸들러가 내장되어 있었습니다. 하지만 한 가지 고려하지 않은 점이 있었는데, 바로 챔피언십 주최 측이 토요일과 같이 업무 외 시간에 초기화 및 초기화 해제를 진행할 수 있다는 점입니다. 이것은 단 몇 줄의 코드로 해결되지만 그렇게 교활한 조합에 대해 깨닫지 못했기 때문에 (모든 것을 고려할 수는 없습니다) 어딘가에서 1 로트가 손실되었습니다.
가까운 시일 내에 간단한 데이터 직렬화를 작성하여 기사에 삽입하려고합니다 (원칙적으로 이틀이 걸립니다). 이를 통해 실시간 계정 (데모 및 실제) 작업을위한 본격적인 제품이 될 것입니다. 그래서 당신은 이것이 테스터를위한 장난감이라고 말합니다. 실제 계정에서 안정적으로 사용하기 위해 유지 관리 코드의 5-6 % 만 부족합니다.
추상적인 거래 모델이 있다고 가정해 봅시다. 보류 중인 주문 (스탑, 테이크아웃, 진입점)만 사용합니다. 엔진에서 이를 사용하는 방법에는 두 가지가 있습니다. 모든 진입점은 가상이므로 브로커의 눈에는 보이지 않습니다. 두 번째 옵션: 신뢰성을 높이기 위해 모든 테이크 스탑과 진입 지점이 지정가 주문에 있습니다. 각 모델에 대해 두 가지 유형의 가상화 (보류 및 가상)가 있다는 것이 흥미 롭습니다. 즉, switch virtual_orders=true; - 모든 주문은 가상이며 브로커의 눈에는 보이지 않습니다. switch virtual_orders=false; - 모든 주문은 마술처럼 보류 상태가 됩니다. 가장 좋은 점은 모델에서 특별한 지원이 필요하지 않으며 모든 것이 엔진 수준에서 구현된다는 것입니다. 모델은 진입 지점에 대한 주문 유형만 지정하면 되고, 스톱 및 테이크 유형은 가상 주문 스위치에 따라 독립적으로 선택됩니다.

- www.mql5.com
받는 사람:우드무트
제가 무엇을 했어야 했고 무엇을 하지 말았어야 했는지 말하지 마세요. 나는 당신의 이익을 위해 봉사하지 않으며 당신을 위해 일하지 않습니다.
나는 당신이 자신의 진술의 본질조차 완전히 이해하지 못하기 때문에 우리의 대화가 넌센스라고 생각합니다. 예를 들어 500개의 다른 거래 모델을 동시에 거래하는 등 MQL4를 정말로 이해하고 있다는 것을 증명하고 이에 대한 거래 전문가를 작성하십시오. 예를 들어 5개 전략 * 20개 상품 * 5개 차트주기를 가정해 봅시다. 귀하의 전문가 고문이 적어도 테스터에서 분명히 작업 할 때, 그때 만 당신이 말하는 과열 된 말도 안되는 말이 실제로 말도 안되는 것이 아니라 지적인 사람의 유용한 발언이라는 것을 인정할 것입니다. 이제 저는 당신에게 부탁하고 싶습니다. 괜히 귀찮게하지 말고이 전문가의 소스 코드 없이는 저와 의사 소통을 시도하지 마십시오.
새로운 기고글 Trading Model 기반 Multi-Expert Advisor 양성 가 게재되었습니다:
MQL5에서 객체 지향 접근 방식을 사용하면 다중 통화/다중 시스템/다중 타임 프레임 Expert Advisors 생성이 크게 간소화됩니다. 하나의 EA가 수십 가지 거래 전략, 사용 가능한 모든 상품 및 모든 가능한 타임 프레임에서 거래한다고 상상해보십시오! 또한 EA는 테스터에서 쉽게 테스트되며 구성에 포함된 모든 전략에 대해 하나 또는 여러 개의 자금 관리 시스템이 있습니다.
일반적으로 우리가 구축 한 상호 작용 시스템은 다음 체계로 설명 할 수 있습니다.
위 코드에 표시된대로 모델 정렬은 OnTick() 함수 내부에서 발생합니다. 그럴 필요는 없지만요. 정렬주기는 OnTrade() 또는 OnTimer()과 같이 원하는 다른 함수에 쉽게 배치 할 수 있습니다.
작성자: Vasiliy Sokolov