
패턴 검색에서 무자비 대입 방식(5부): 새로운 시각
콘텐츠
소개
이 주제에 대한 마지막 글을 게시한 지 꽤 오랜 시간이 지났습니다. 그 이후로 저는 이전에 하던 많은 일에 대해 다시 생각해야 했습니다. 이를 통해 저는 수익성 알고리즘 트레이딩의 문제를 완전히 다른 각도에서 바라볼 수 있게 되었고 이전에는 고려할 수 없었던 사소한 부분까지 모두 고려할 수 있게 되었습니다. 저는 독자 여러분께 표준적이고 무미건조한 수학과 코드 대신에 완전히 다른 방식으로 문제에 접근할 것을 제안합니다. 이 글은 새로운 무언가의 시작이자 오래된 것의 재부팅이 될 수 있습니다. 저는 불필요한 방정식과 코드를 역사의 쓰레기통에 버리는 데 지쳤으므로 이 기사는 가능한 모든 독자가 간단하고 이해하기 쉽게 작성할 것입니다.
목표를 이루는 방법
저는 알고리즘 트레이딩으로 돈을 벌려고 하는 사람들을 성공적인 결과로 이끌거나 막다른 골목으로 몰아넣는 다양한 경로에 대해 생각하기 시작했습니다. 이론적으로는 여러 가지 경로가 있는 것으로 밝혀졌습니다:
- 정면으로 접근.
- 아름다운 사진.
- 기성 거래 시스템.
- 공개적으로 사용 가능한 알고리즘의 현대화 및 하이브리드화.
- 팀 접근 방식.
첫 번째 접근 방식은 고집이 센 사람들에게 가장 흔한 방법입니다. 사실 저 같은 사람에게 이 방식은 야망과 헛된 희망을 버리는 데 유용합니다. 이런 말씀이 별것 아닌 것 같지만 실제로는 여러분의 미래에 매우 유익한 일입니다. 이 접근 방식에는 많은 노력과 시간이 필요합니다. 만약 여러분이 어느 시점에서 멈추지 않으면 포럼 분야의 박사가 될 수도 있습니다. 여기서는 더 이상의 설명이 필요하지 않다고 생각합니다. 모두가 제 비꼬는 말을 잘 알아듣습니다. 그럼에도 불구하고 이 접근 방식을 사용하면 여러분은 제가 찾은 이론적 정보를 그대로 배울 수 있으며 그 가치는 절대적입니다. 가장 중요한 것은 제때 멈추는 것입니다. 물론 소요된 시간과 얻은 결과를 비교하면 결과는 완벽하지 않을 수 있습니다.
두 번째 접근 방식은 훨씬 더 간단하고 실제로 훨씬 적은 노력으로 사람들에게 성공했다고 설득하기만 하면 되기 때문에 시간 측면에서 훨씬 더 효율적입니다. 모든 것이 우리 머릿속에 있는데 저는 어느 순간 이것이 훌륭하게 작동한다는 것을 깨달었습니다. 사람들은 아름다운 포장지를 신뢰하는 경향이 있습니다. 여기에는 도덕성이나 다른 어떤 것도 들어설 자리가 없습니다. 중요한 것은 결과입니다. 냉소적으로 보일 수 있지만 전 세계가 이런 식으로 살아가고 있습니다. 여러분이 할 일은 특정 이미지를 만들기만 하면 됩니다. 마틴게일, 평균 또는 기타 트레이딩 기법을 사용할 수도 있습니다. 이것들은 그러한 이미지를 만들기에 충분합니다.
저는 세 번째 접근 방식이 현명하다고 생각합니다. 이 경우 소요되는 노력은 최소화되지만 결과는 실제적이기 때문입니다. 이 접근 방식을 올바르게 구현하면 몇 가지 단점이 있기는 하지만 부정적인 측면은 없습니다. 이 접근 방식을 구현하는 데 가장 중요한 것은 지식입니다. 제가 지금과 같은 경험이 없었다면 올바른 태도와 합리적이고 균형 잡힌 접근 방식으로 목표를 달성하더라도 이를 활용할 수 없었을 것입니다.
네 번째 접근 방식은 실제로 이 방식을 수행하는 사람이 있는지 모르겠습니다. 이론적으로는 시간이 덜 걸리지만 효율성에 대해서는 모르겠습니다. 일반적으로 모든 것이 가능하지만 저는 이 접근 방식은 가장 효과적이라고 생각하지 않습니다. 이 방식은 오히려 거래의 변동성을 높이고 더 일관된 거래 신호를 수신할 가능성을 높이기 때문에 앞의 방식과 함께 사용하는 것이 좋습니다.
다섯 번째 접근 방식은 아이디어가 많고 지속적으로 노력하는 경우에만 효과적일 수 있지만 각 팀원이 곧바로 접근하더라도 첫 번째 접근 방식보다 훨씬 낫습니다. 그러나 대부분의 거래 시스템 개발자는 자기애적 외톨이이며 소수만이 그러한 팀을 구성하고 가장 중요한 작업 스케쥴을 만들 수 있습니다. 그런 팀들이 있다는 것과 꽤 성공적이라는 것을 저는 알고 있습니다. 수익성 있는 알고리즘을 개발하기 위해 함께 일하는 팀에 속해 있으면 좋은 것입니다. 여기서는 개발의 총체적인 품질과 양이 결정적인 역할을 하고 경쟁력 있는 제품을 만들 수 있다는 점이 장점입니다.
물론 이것은 다소 이상적인 시나리오입니다. 모든 사람의 길은 제각각 이지만 그럼에도 불구하고 어떤 길을 선택하든 결과는 항상 어떤 종류의 지식을 습득하는 것이 될 것이라고 확실히 말할 수 있습니다. 결과는 반드시 기술적이거나 철학적인 것이어야만 하지 않겠지만 제 경우에는 둘 다입니다. 문제를 해결하기 위해서는 항상 모든 측면에서 문제를 바라봐야 하기 때문에 이것이 바로 그 방법인 것 같습니다.
자동매매 시스템을 통한 안정적인 수입 확보
자동 트레이딩에 대한 조화로운 접근법을 찾기 전에 우리는 먼저 아이디어를 구상하는 순간부터 실행에 이르기까지 전체 프로세스를 처음부터 끝까지 구조화해야 합니다:
- 아이디어.
- 실행 계획 세우기.
- 개발.
- 오류 수정하기.
- 개선 및 현대화.
- 광범위한 테스트.
- 최적화 및 적용 가능성 한계 결정
- 거래 준비(리소스, 데모 계좌)
- 실제 계좌로 거래
여러분이 초보자라면 어딘가에서 읽었거나 직접 만들어서 작동할 것이라고 확신했기 때문에 시스템이 작동할 것이라고 거의 100% 확신할 것입니다. 현실은 시장에 대한 수학적 모델이 없고 모델이 있다고 가정해도 시장은 너무 복잡해서 그 복잡성과 비합리성으로 인해 EA에서 사용할 수 없다는 것입니다. 그렇다면 어떻게 해야 할까요? 답은 생각만큼 간단하지 않습니다. 이것이 바로 제가 직접 무자비 대입 알고리즘을 고안한 이유입니다.
만약 여러분이 뛰어난 EA를 구축하는 작업을 하게 되면 원하는 결과에 도달하기 전에 이러한 단계를 많이 거치게 될 것이 분명합니다. 그러나 그 결과가 좋은 결과일지에 대해서는 저는 아니라고 봅니다. 저도 제 경험을 통해 잘 알고 있습니다. EA 개발이 실패한 후 가장 짜증나는 것은 EA를 버려야 한다는 사실입니다. 이는 얻은 경험의 모든 유용성에도 불구하고 개발을 위해 보낸 시간에 대한 실망감이 크다는 것을 의미합니다. EA를 직접 개발하는 경우 이는 불가피한 현상입니다. 프리랜스 주문에서 이런 일이 발생하면 더 슬픈 일입니다.
이와 관련하여 이 글은 주로 여러분의 시간에 관한 글이라는 점을 분명히 말씀드리고 싶습니다. 성공한 사람들은 시간의 가치를 정확하게 평가할 수 있는 능력이 있습니다. 시간을 투자해도 원하는 결과를 얻지 못하면 계속할 가치가 없는 것입니다. 다음은 표준 접근 방식에 대한 다이어그램입니다:
다이어그램 1.
다이어그램의 각 작업을 하기 위해서는 고유한 시간이 소요되며 전체 결과는 보유한 지식과 리소스에 따라 직접적으로 달라집니다. 자원은 반드시 투자에 사용할 수 있는 자금이 아니라 트레이딩 시스템을 지속적으로 테스트할 수 있는 컴퓨터나 필요한 장비를 구매할 수 있는 자금의 가용성을 의미합니다. 여러분의 목표 달성에 대한 열망과 여유 시간도 중요합니다. 문제는 좋은 거래 시스템을 찾거나 만드는 것은 시작의 절반에 불과하며 후반부는 언제나 시간이 거의 없다는 점을 고려할 때 이를 적절하게 관리하는 방법과 관련이 있습니다.
여러분이 이 문제를 조금이라도 이해하고 있다면 MQL5 시장이나 다른 출처의 기존의 거래 시스템을 사용할 경우 다이어그램이 어떻게 변경되는지 알 수 있을 것입니다. 모든 것을 다시 그릴 필요는 없으며 적절한 대체물만 표시하세요:
다이어그램 2.
다이어그램의 의미는 변하지 않지만 기존의 제품을 검색하고 선택하는 것이 많은 코드를 작성하는 것보다 훨씬 쉬울 것입니다. 다행히도 저는 두 가지를 모두 할 수 있습니다. 물론 이를 위해서는 지식과 경험이 필요합니다. 무엇보다도 이 다이어그램의 배경이 되는 아이디어는 시간이 지남에 따라 대다수의 EA는 관련성을 잃을 수 있으며 결국 폐기될 것이라는 점입니다. 만약 여러분이 또다른 EA를 버리고는 얼마 지나지 않아 다시 사용할 수 있을 것이라고 생각하지 않나요? 오랫동안 잊진 알고리즘을 찾기 위해 쓰레기 더미를 뒤지며 적용 방법을 고민하는 것도 많은 시간이 걸립니다.
그럼에도 불구하고 특정 EA 데이터베이스를 축적하고 현명하게 변경하면서 성공적으로 거래를 계속하는 것이 좋습니다. 이 경우 새로운 EA를 찾을 필요가 없으므로 작업은 훨씬 더 간소화됩니다. 가능한가요? 네, 맞습니다. 이상적으로 이 EA 컬렉션은 다음과 같은 특성을 가져야 합니다:
- 알고리즘 유연성.
- 신호 반전 가능성.
- 성능(리소스 소비 최소화).
- 주문 매직 넘버
이러한 데이터를 기반으로 선택한 EA 컬렉션의 결과에 대한 수학적 정의를 입력할 수도 있습니다. 우리는 이러한 것들을 찾아 EA의 특성과 그 수가 어떻고 무엇에 영향을 미치는지 더 명확하게 파악할 수도 있습니다. 또는 간단하고 이해하기 쉬운 목록을 만들 수도 있습니다:
- EA가 많을수록 컬렉션이 더 좋아집니다(EA가 많을수록 선택한 거래 영역에서 필요한 거래 기준을 충족하는 EA가 많아지기 때문입니다).
- EA에 속성이 많을수록 더 효과적으로 최적화할 수 있습니다.
- 바 기반의 EA가 더 좋습니다(사용 및 테스트, 최적화가 더 쉽고 핑, 미끄러짐 및 기타 문제에 대해 걱정할 필요가 없습니다).
- 거래 신호를 반전시킬 수 있다면 EA의 가중치는 두 배가 됩니다.
여기서 과도한 최적화와 히스토리에 대한 적합성에 대해서는 별도의 문제이므로 더 이상 언급하지 않겠습니다. 저는 여러분이 이 모든 작업을 올바르게 수행하는 방법을 알고 있다고 가정합니다. 모든 것이 올바르게 완료되면 다이어그램이 매우 단순한 디자인으로 변하게 됩니다:
다이어그램 3.
물론 EA가 많을수록 로봇을 더 잘 분류할 수 있습니다. 하지만 여기서 우리는 몇 가지 불쾌한 현실에 직면하게 됩니다. 더 나은 선택 품질을 달성하고자 할수록 우리가 선택을 하는 데 더 많은 시간이 소요됩니다. 또한 여러 번 선택해야 합니다. 여러분은 이 작업을 정기적으로 수행해야 합니다. 따라서 누군가가 모든 것을 대신해 주지 않는 한 그것은 또 다른 귀찮은 작업이 될 것입니다. 이와 관련하여 의문이 생깁니다: "위험성이 전혀 없는 일반 비즈니스의 검증된 사례가 이미 있는데 왜 굳이 이 과정이 필요한가요?"
또한 여러분의 성공적인 트레이딩을 위해서는 더 많은 터미널을 동시에 운영되어야 합니다. 즉 여러분은 각각의 터미널을 지속적으로 모니터링하고 새로운 EA를 추가 및 제거하고 작업을 구성 및 모니터링해야 합니다. 아시다시피 이 모든 것은 엄청난 양의 작업입니다. 새로운 EA를 지속적으로 개발할 필요가 없어졌음에도 불구하고 우리는 여전히 주요 루틴에서 벗어나지 못했습니다. 노동이 필요한 사항들을 나열해 보겠습니다:
- 최적화를 사용하여 EA를 선택합니다.
- 데모 계정에서 사전 테스트.
- 가장 내구성 있는 트레이딩 신호 선택하기.
- 가장 내구성 있는 조합을 사용한 실제 거래.
- 지속적인 컨트롤(종료, 일시 중지, 로봇 교체 등)(터미널 작업).
이 모든 것이 가능하기는 합니다. 그러나 그것은 여러분이 최적의 작업 상태를 유지할 때만가능한 것입니다. 하지만 물론 한계가 있습니다. 제 경험에 비추어 볼 때 여러분은 혼자 작업할 것입니다. 모든 것이 시간이 걸리기 때문에 빠른 작업은 불가능합니다.
저는 처음에는 간단한 알고리즘으로 수익성 있는 트레이딩을 할 수 있는지를 알아보기 위해 연구 목적으로 무자비 암호 대입 알고리즘을 개발했습니다. 저는 이것이 가능하다는 것을 깨달었습니다. 당시의 동원 가능한 역량상 총 EA의 수를 늘리기 위한 목적으로 추가적인 EA를 만드는 수 밖에 없었습니다. 간단한 EA가 얼마나 도움이 되고 이러한 EA를 올바르게 사용하는 방법을 더 잘 이해하려면 특정 알고리즘이 수익성 있는 거래를 가능하게 하는 방법이 무엇인지와 특정 EA를 올바르게 처리하는 방법이 무엇인지에 대해 조금 더 깊이 이해할 필요가 있습니다.
EA 및 패턴
알고리즘을 모아서 지속적으로 최적화하는 것만으로는 충분하지 않습니다. 최적화는 별도의 기술이며 숙련도에 따라 트레이딩 계좌에서 EA 사용 결과가 결정됩니다. 각각의 EA는 고유한 방식으로 작동하며 최적화와 사용시 모두 고유한 뉘앙스가 있습니다. 제가 모든 EA에 포함되어야 한다고 생각하는 중요한 옵션은 인버스 트레이딩 기능입니다. 즉 모든 거래 행위는 그 반대, 즉 매수는 매도로, 매도는 매수로 대체됩니다. 처음에는 모든 것이 의도한 대로 작동해야 한다는 잘못된 믿음이 있기 때문에 이 옵션은 완전히 불필요한 것처럼 보입니다.
이 사실을 이해하려면 우리는 먼저 패턴이 무엇인지 이해해야 합니다. 일반적으로 패턴은 일부 통계적 특성과 무작위 분포의 차이입니다. 이 문제를 피상적으로 고려할 때 우리는 패턴의 관성에 대해 생각할 수 있습니다. 그러나 이것은 이 패턴의 향후 가능한 시나리오 중 하나일 뿐입니다. 패턴의 일부만이 관성이 있습니다. 백테스트 또는 트레이딩 신호에서 발견된 패턴을 살펴 보겠습니다.
적절하다고 생각되는 몇 가지 특성에 따라 별도의 그룹을 만들 수 있는 매우 큰 로봇 데이터베이스가 있다고 가정해 보겠습니다. 특성은 그룹화만큼 중요하지 않습니다:
그림 4.
여기에는 무자비 대입 프로그램이 순서도의 요소로 처음 등장합니다. 실제로 이 프로그램은 각각의 사본의 설정이 다르기 때문에 이 그룹화를 수행합니다. 본질적으로 프로그램의 각 사본은 서로 다르게 구성되며 완전히 독립적인 로봇 그룹에서 선택될 수 있습니다. 생성된 로봇은 거래에 사용할 수 있습니다. 순서도 맨 아래에 나와 있습니다. 여기서 가장 중요한 것은 이 모든 로봇 그룹이 잠시 후 세가지 그룹으로 나뉜다는 것입니다:
- 직접적인 신호로 수익성이 있는 것들(패턴 관성에 기반한).
- 반전 신호로 수익 창출(즉각적인 패턴 변화 기준).
- 혼돈(히스토리에 단순하게 맞추기).
우리는 어떤 세트가 어떤 특정한 신호 그룹을 제공할지 미리 알 수는 없지만 일정 시간이 지나면 어떤 신호는 제외를 하며 필터링이 가능합니다. 이와 관련하여 우리는 이러한 독립적인 그룹과 신호가 많을수록 좋습니다. 각 EA 그룹에 대해 최소 두 개의 신호를 만드는 것이 좋습니다:
- 직접 신호.
- 반전 신호.
우리는 또한 서로 다른 그룹의 혼합 신호를 추가할 수도 있습니다. 이 모든 것이 오랫동안 작동 수 있는 조화롭게 구성된 EA 그룹을 효과적으로 찾을 수 있는 기회를 극대화합니다. 이 두 가지 사실을 통해 좋은 포트폴리오를 최대한 빨리 찾을 수 있습니다:
- 사용 가능한 EA의 최고 품질의 효과적인 그룹화(가능한 한 많은 독립 그룹).
- 각 그룹에 대한 직접 및 반전 신호 + 혼합 신호.
이러한 모든 요소는 궁극적으로 가장 많고 다양한 신호를 제공합니다. 이를 통해 우리에게 추후 실제 거래에 사용할 수 있는 최상의 샘플을 제공합니다. 이러한 그룹을 만드는 능력에 영향을 미치는 가장 중요한 요소는 EA 컬렉션의 규모와 다양성입니다. 제 프로그램의 경우 설정의 세심함과 분석 방법, 클러스터링 등 내부 알고리즘의 다양성이 가장 중요했습니다. 가변성을 높이는 보편적인 방법 중 하나는 클러스터링입니다:
그림 5.
이 경우 클러스터링은 로봇의 하위 그룹을 당일의 시간대 및 매일로 나눌 수 있는 가능성으로 표현되며 이는 이미 이 자체로 EA를 포트폴리오로 그룹화할 수 있는 가장 광범위한 기회를 제공합니다. 물론 우리는 다양한 클러스터링 옵션을 생각해낼 수 있지만 저는 이것이 가장 간단하고 효과적이라고 생각합니다. 또한 클러스터링은 특정 요일과 시간에 작동하도록 프로그램 자체를 구성하는 데 사용할 수 있습니다. 이를 통해 우리는 컴퓨팅 리소스 소비를 최대한 최적화하고 각 프로그램 사본에 대해 올바른 가중치를 설정할 수 있습니다. 각 설정에는 고유한 계산 복잡성이 존재하므로 이 테크닉이 필요합니다.
또한 복잡하고 간단한 EA에 대해 여러분께 몇 마디 말씀드리고 싶습니다. 이론적으로는 거의 모든 패턴과 관련하여 가능한 한 유연하고 가변적인 EA를 만들 수 있지만 시스템이 복잡할수록 시스템이 깨지기가 더 쉽다는 것은 누구나 알고 있을 것입니다. 물론 시스템이 매우 성공적이고 결함이 없는 것으로 판명될 수도 있지만 현실적으로 살펴봅시다. 소수의 사람들이 그러한 시스템을 가지고 있다고 가정해 보겠습니다(물론 이것은 유토피아라고 생각하지만) 그들은 절대 다른 사람들과 공유하지 않을 것입니다. 그렇다면 다른 사람들은 어떻게 해야 할까요?
성공적인 알고리즘 트레이더라면 제가 드리는 간단한 진리를 이해하고 있어야 하며 이러한 분들의 수익은 이러한 이해를 기반으로 합니다. 수익성 있는 트레이딩은 무엇보다도 도구를 올바르게 사용할 수 있는 능력이 중요합니다. 마법의 전략을 기다리는 것은 최선의 해결책이 아닙니다. 어떤 아이디어든 적절한 솔루션 세트를 통해 구현할 수 있습니다. 제가 특정 알고리즘에 초점을 맞추지 않고 이 글에서 보여드리고자 하는 것은 바로 이 부분입니다.
워크체인 자동화의 극대화
이 아이디어는 단순한 연구에서 점차 발전하여 안정적인 거래 신호를 찾는 완전 자동화로 발전했습니다. 이것이 이글의 주요 포인트입니다. 현재 제 시스템은 간단한 트레이딩 EA의 생성부터 MetaTrader 4 및 5 터미널에서의 거래에 이르기까지 모든 작업을 수행합니다. 제가 프로그램으로 지금 하고 있는 버전이 대략 이런 모습입니다:
그림 6.
이 구조는 다음과 같은 일상적인 작업을 완전히 덜어줍니다:
- EA 선택 및 그룹화.
- 차트에서 EA 활성화/비활성화 및 이후의 구성.
- 설정 최적화 및 선택.
- 새로운 EA를 검색.
- 새로운 EA 만들기.
이 구조의 비결 중 하나는 저의 텔레그램 채널에 들어가는 간단한 EA를 생성하는 것 외에도 동시에 터미널들의 내부에도 범용 EA가 있다는 사실입니다. 프로그램은 작동중인 새로운 EA를 찾을 때마다 차트에서 계속 제거하고 설치할 필요가 없습니다. 대신 프로그램은 EA 자체와 EA에 해당하는 별도의 텍스트 파일을 생성합니다. 파일은 터미널 공유 폴더에 저장되며 범용 EA가 여기서 설정을 읽는 해당 디렉터리가 있습니다. 이 모든 것은 제가 제어할 필요 없이 즉석에서 자동으로 이루어지며 EA 자체는 텔레그램 채널에서 끝납니다.
따라서 전체 시스템은 EA를 생성하고 채널에 게시하는 과정을 모두 자동으로 수행합니다. 저는 시스템을 확장하고 장비를 구입하고 거래 신호를 모니터링하기만 하면 됩니다. 이 모든 것이 전체 기능의 1% 수준에서 작동하지만 시험적인 실행에는 매우 적합하다고 생각합니다.
현재 제게는 컴퓨터가 한 대 뿐입니다. 꽤 오래되었지만 두 개의 독립적인 작업(무자비 대입 프로그램)이 교대로 작업하기에 충분합니다. 이 두 가지 설정을 기반으로 각각 직접 신호와 반전 신호 그리고 추가로 직접 신호와 반전 신호를 혼합한 두 가지를 만들었습니다. 두 달 동안 테스트한 결과를 바탕으로 여러분은 위에서 말씀드린 내용을 확인할 수 있습니다:
그림 1.
테스트 결과에 따르면 최소 용량으로 두 달 이상 연속 거래한 경우 명백히 긍정적인 신호는 단 두 번 뿐이었습니다. 다른 것도 있지만(혼합) 여기에 표시된 거꾸로 된 것과 거의 동일합니다. 이들은 완전히 다른 두 가지 트레이딩 알고리즘과 설정을 참조합니다. 여기서 우리는 직접 신호와 역 신호 모두에서 수익 거래를 얻을 수 있음을 알 수 있습니다. 전체 테스트 과정에서 생성된 EA는 제 텔레그램 채널에서 확인하실 수 있습니다. 저의 프로필과 글 끝부분에서 링크를 찾을 수 있습니다.
범용 수신기 EA
물론 더 품질이 높은 EA가 훨씬 더 효과적입니다. 이들 EA는 자동 트레이딩에 사용할 수 있습니다. 대부분의 EA는 반복해서 사용할 수 있습니다. 모든 알고리즘에는 적용을 할 수 있는 가능성의 한계가 있으며 개발자나 고객의 기대에 미치지 못하는 것처럼 보이는 많은 EA에도 자체적으로 사용되지 않은 리소스가 있습니다. 테스트 단계에 도달하지 못하는 트레이딩 시스템의 대략적인 비율을 추정해 보면(적어도 데모 계좌에서는) 그 수가 엄청나게 많다는 것을 알 수 있습니다.
사실 EA를 제대로 최적화하는 방법을 모른다면 EA는 버려질 수밖에 없습니다. 이 때문에 저는 흥미로운 EA를 꽤 많이 버렸습니다. 저는 그저 조금 다르게 사용할 수 있다는 사실을 몰랐을 뿐입니다. 안타깝게도 이 작업에는 약간의 경험이 필요합니다. 여기서는 이 주제를 다루지 않고 나중에 고급 최적화에 대한 별도의 글을 작성할 예정입니다.
본능적 수준인 여러분은 항상 슈퍼 EA 하나를 가져다가 단말기에 넣고 버튼 하나만 누르고 적어도 몇 주 동안 잊어버리고 싶어 합니다. 그래서 고급화를 위한 모험을 결정하는 것은 쉽지 않을 것입니다. 그러나 우리는 여전히 최고를 찾아서 우리가 필요로 하는 특성을 실제로 가지고 있는지 확인해야 합니다. 하지만 이 부분을 생각해 보세요: 여러분이 찾고 있는 동안에 여러분이 가지고 있는 모든 것을 가지고 가능한 한 다양한 구성을 실행할 수 있습니다.
물론 그러한 EA의 거래 프로세스를 유능하게 제어하려면 여러분은 많은 시간과 노력을 투자해야 합니다. 제 시스템에서는 이미 생성된 EA(설정)에 간단히 추가하는 범용 EA를 사용하여 이 문제를 피할 수 있었습니다. 이러한 EA의 첫 번째 이자 가장 간단한 버전에는 다음과 같은 중요한 변수가 포함되어 있습니다:
input int DaysToFuture=50;//Days to future input LOT_VARIATION LotMethod=SIMPLE_LOT;//Lot Style input bool bInitLotControl=false;//Auto lot bruteforce input double MinLotE=0.01;//Min Lot input double LotDE=0.01;//Lot (without variation) input double MaxLotE=1.0;//Max Lot input bool CommonE=true;//Common Folder input string SubfolderE="T_TEYLOR_DIRECT"; input int MinutesAwaitE=2;//Minutes To Check New Settings input bool bBruteforceInvertTrade=false;//Invert Bruteforce Trade
물론 이러한 변수가 전부는 아니지만 다음과 같은 중요한 작업의 자동화를 하는 데 필요한 변수입니다:
- 지정된 거래 허용 시간이 만료된 후 거래를 비활성화합니다(현재 설정 중에 새 거래가 생성되지 않아 이전 거래가 관련성을 잃은 경우).
- 거래 스타일(단순 랏/지정된 거래창 내에서 최소에서 최대로 점진적으로 랏 증가/지정된 거래창 내에서 최대에서 최소로 점진적으로 랏 감소).
- 현재 터미널 폴더/터미널의 공유 폴더에서 설정을 읽습니다.
- 하위 디렉터리를 선택할 수 있습니다.
- 설정을 업데이트하는 간격입니다.
- 신호 반전하기.
이를 통해 우리는 터미널과 무자비 대입 프로그램 간의 상호 작용을 유연하게 구성할 수 있으며 성능이 허용하는 한 하나의 머신에서 임의로 많은 수의 터미널과 무자비 대입 머신을 동시에 실행할 수도 있습니다. 유일한 문제는 제가 아직 범용 멀티 리시버를 만들지 않았기 때문에 각각의 차트에 별도의 EA를 할당해야 한다는 것입니다. 범용 멀티 리시버는 나중에 추가될 예정입니다. 더 나은 거래, 더 신중한 거래를 구현하려면 범용 멀티 리시버가 필요합니다. 그러면 다이어그램에서 모든 장단점을 확인하는 것이 매우 편리할 것입니다:
그림 8.
다이어그램에서 볼 수 있듯이 단순 리시버 EA와 고급 리시버 EA 모두에 두 시스템을 구현하는 것이 좋습니다:
- 병렬 거래 동기화 시스템.
- 병렬 거래 최적화 시스템.
이 둘은 모든 알고리즘에 매우 중요한 추가 기능으로 병렬 거래의 품질을 개선하고 거래 비용을 절감할 수 있습니다. 저는 조금 더 시간을 두고 운영할 계획이지만 현재로서는 이에 필요한 리소스가 없습니다.
하나의 EA로만 거래하는 경우에는 이 모든 것이 중복되지만 많은 EA의 병렬 운영에 대해 이야기할 때는 이러한 추가 기능이 필연적으로 필요합니다. 제 접근 방식의 장점은 모든 EA의 일관성을 기반으로 이러한 추가 기능을 보다 효율적으로 구현할 수 있다는 점입니다. 이는 외부 시스템과 내부 시스템 모두에 적용됩니다.
또한 멀티 리시버는 각각의 상품마다 작동하는 것이 아니라 하나의 차트에서 작동하도록 설계되었다는 점도 말씀드리고 싶습니다. 이러한 EA의 유일한 단점은 각 특정 상품에 맞게 커스터 마이징 하기가 더 어렵다는 것이지만 그럼에도 불구하고 단점보다는 장점이 더 많습니다. 다음 기사 중 하나에서 저는 이러한 시스템에 대해 더 자세히 설명할 것입니다. 지금은 이 기사를 작성하던 중 생각이 떠 오른 혁신의 기술에 대해 설명해 볼까 합니다.
동적 호가 수집을 위한 EA
이전에 저는 프로그램에서 수동으로 열어야 하는 텍스트 파일을 생성하는 간단한 EA를 사용했습니다. 물론 이 데이터는 시간이 지나면 관련성을 잃게 됩니다. 위에서 설명한 모든 구조의 작동을 보장하려면 우리는 새로운 호가에 액세스할 수 있어야 합니다. 이를 위해 저는 공유 터미널 폴더에 지속적으로 데이터를 쓰는 EA를 만들기만 하면 되었습니다. 거래 가능한 상품 및 기간 세트를 컴파일하기 위해 저는 프로그램 설정에 해당 목록을 추가하기로 결정했습니다:
그림 9.
이 기술을 사용하면 여러 폴더에 데이터를 복제할 필요 없이 각 브라우저마다 고유한 기간 도구 세트를 갖도록 구성할 수 있습니다. 이 경우 여러 대의 트레이딩 단말기 중 한 대의 단말기만 있으면 됩니다. 분석 간격을 연 단위로 설정하면 데이터 업데이트가 일시 중지되거나 지연될 가능성은 미미합니다. 또한 전체 시스템이 바 단위의 패러다임을 기반으로 하므로 모든 것이 가능한 한 안정적이고 거의 모든 비상 상황에 잘 견뎌냅니다. 이 봇에는 몇 가지 설정만 있습니다:
input bool CommonE=true;//Common Folder/Terminal Folder input double YearsE=10.0;//Years Of History Data input int MinutesForNew=2;//Rewrite Timeout In Minutes
EA는 모든 단말기의 공통 폴더 또는 현재 단말기의 자체 폴더에 씁니다. 현재 종료 시간에서 시작하여 거슬러 올라가는 지난 몇 년간의 히스토리를 기록합니다. EA는 분 단위로 지정된 시간이 초과한 후에 기록합니다. 이것은 모든 로직의 마지막 요소입니다. 가장 어려운 부분은 끝났습니다. 남은 것은 동일한 차트에서 작동하는 리시버 EA를 구현하는 것뿐입니다. 이미 리시버 EA의 구현을 위한 기능의 절반을 준비했습니다.
결론
이 기사에서 저는 일반적인 기술적인 부분에서 벗어나 제 경험을 바탕으로 조금 다른 각도에서 수익성 거래의 문제를 살펴보려고 했습니다. 보시다시피 수익에 일부만 관여하는 데에 불과한 EA도 있고 수익을 달성하는 데 도움이 되거나 노력을 방해할 수 있는 미묘한 차이와 뉘앙스가 많이 있습니다. 흥미롭게도 결과는 처음에 의도했던 것과는 거리가 멀었고
그 과정에서 저는 원래의 아이디어를 점차 현실에 맞게 조정해야 했는데 이는 완전히 통제할 수 없는 과정이었지만 오히려 이는 자연스럽고 불가피한 일이었습니다. 그 결과 필연적으로 실용적인 방법에서만 찾을 수 있는 이론적 교착 상태에서 벗어날 수 있는 방법을 찾았습니다. 이는 더 많은 로봇, 더 많은 신호, 더 많은 컴퓨터, 더 많은 자동화를 의미합니다. 이 글이 많은 이론가들과 성배를 찾는 사람들에게 다른 길을 찾을 수 있다는 것이 항상 가능하다는 사실을 보여주는 일종의 자극제가 되었으면 합니다. 다음 글에서는 제 시스템에 어떤 개선점이 있었는지 자세히 보여드리겠습니다. 하지만 아직 해야 할 일이 많이 남아 있습니다.
현재 사용 가능한 모든 신호는 여기에서 확인할 수 있습니다. 저는 이 글에서는 가장 중요한 내용만 소개했습니다. 더 많은 기능이 추가되고 개선됨에 따라 품질이 향상될 것입니다. 제가 안정적이고 다양한 신호 그룹을 끝낼 수 있을지 지켜봐 주시기 바랍니다. 자동으로 생성된 EA는 제 텔레그램 채널에서 확인할 수 있습니다. 지금은 품질이 최소 사용 가능한 용량과 비슷하지만 나중에 용량이 확장되면 다양성과 품질이 모두 향상될 것입니다.
링크
MetaQuotes 소프트웨어 사를 통해 러시아어가 번역됨.
원본 기고글: https://www.mql5.com/ru/articles/12446



