기고글 토론 "Expert Advisor 개발 기초부터(24부): 시스템 견고성(I)"

 

새로운 기고글 Expert Advisor 개발 기초부터(24부): 시스템 견고성(I) 가 게재되었습니다:

이 글에서 우리는 시스템을 더욱 안정적으로 만들고 강력하고 안전하게 사용할 수 있도록 하겠습니다. 이러한 견고성을 달성하는 방법 중 하나는 코드를 가능한 한 많이 재사용하여 다양한 경우에 지속적으로 테스트하는 것입니다. 하지만 이것은 여러 방법 중 하나일 뿐입니다. 또 다른 하나는 OOP를 사용하는 것입니다.

어떤 사람들은 간단하다고 생각할지 모르지만 여러가지가 그렇게 간단하지는 않습니다. 주문 시스템도 그중 하나입니다. 많은 사람들에게 유용하지만 어떤 사람들에게는 충분하지 않은 기본 시스템이었던 트레이딩 EA 처음부터 개발하기 기사에서 처럼 완벽하게 잘 작동하는 일반적인 시스템을 만들 수도 있습니다. 이제 모든 것이 바뀌기 시작한 순간이 왔습니다. 새로운 주문 시스템에 대한 이 시리즈의 첫 번째 부분에 우리는 이르렀습니다. 이는 트레이딩 EA 처음부터 개발하기(18부) 문서에서 확인할 수 있습니다. 바로 이 지점에서 우리는 MetaTrader 5의 지원을 받으면서 EA에 의해 관리되는 시스템을 개발하기 시작했습니다. 이 시스템의 아이디어는 차트에서 주문에 제한을 두지 않는 것이었습니다. 저 같은 경우 처음에는 이 시스템이 다소 대담해 보였고, EA가 아닌 MetaTrader 5에서 객체를 유지 관리하는 시스템을 만든다는 사실 자체가 무의미하고 비효율적으로 보였습니다.

그러나 시스템은 개발 중이었고 우리는 트레이딩 EA 처음부터 개발하기(23부) 기사에서 주문, 포지션 또는 손절매 수준(이익실현 및 손절매)을 쉽게 관리할 수 있는 고스트 시스템을 개발했습니다. 개발은 매우 흥미로웠지만 문제가 있었습니다. MetaTrader 5에서 지원하는 객체 수와 비교하여 사용 및 표시되는 객체의 수를 보면 지원되는 객체의 수가 항상 더 많기 때문에 여러분은 확실히 놀라게 될 것입니다.

대부분의 경우 문제는 그렇게 심각하지 않습니다. 하지만 시장 변동성이 큰 시기에는 시스템을 안정적이지 못하게 만든 두 가지 문제가 있었습니다. 일부 상황에서는 이 두가지 문제가 사용자가 잘못된 행동을 하게 만들기도 했습니다. 그 원인은 트레이더가 펜딩 주문을 추가하면 시스템이 이 주문을 서버로 전송하고 서버가 응답하는 데 평소보다 시간이 더 필요하기 때문입니다. 그래서 시스템은 어떤 순간에는 주문이 있다고 표시하고 다른 순간에는 주문이 없다고 표시합니다. 그리고 이러한 표시가 포지션에서 이뤄진 경우 (주문과 포지션의 차이점은 문서를 참조하세요). 우리는 과연 서버가 예상대로 명령을 실행했는지 알 수 없었기 때문에 훨씬 더 번거로웠습니다.

이 문제를 해결하는 방법에는 여러 가지가 있습니다. 일부는 더 간단하고 일부는 더 복잡합니다. 어쨌든 우리는 EA를 신뢰해야 하며 그렇지 않으면 우리는 어떤 상황에서도 EA를 사용해서는 안 됩니다.

작성자: Daniel Jose

사유: