English Русский 中文 Español Deutsch 日本語 Português Français Italiano Türkçe
Expert Advisor를 주문하고 원하는 결과를 얻는 방법

Expert Advisor를 주문하고 원하는 결과를 얻는 방법

MetaTrader 5트레이딩 | 11 10월 2021, 15:04
98 0
Andrey Khatimlianskii
Andrey Khatimlianskii


개요

자동화된 거래가 새로운 동력을 얻고 있습니다. 새로운 MQL5을 통해 MetaTrader 5의 출시가 완료되었습니다. 자동화 거래 챔피온쉽 2010을 성공적으로 통과했으며, 브로커들이 새로운 버전의 트레이딩 플랫폼을 적극적으로 홍보하고 있습니다. MetaTrader 5의 전신인 MetaTrader 4는 여전히 수백 명의 브로커와 전 세계 수백만 명의 트레이더에 의해 활발하게 사용되고 있습니다.

이러한 인기에도 불구하고(또는 그것 때문에) 평균적인 거래자의 전문적 수준은 점점 낮아지고 있습니다. 다른 어느 분야와 마찬가지로 수량이 질로 바뀌는 경우는 거의 없습니다. 자동화된 거래(거래와 프로그래밍의 연결)를 고려한다면 상황은 더욱 악화됩니다. 컴퓨터 프로그래밍 학위를 가진 거래자는 극히 드물며, 대다수의 경우, 기술적인 마인드를 가진 사람일지라도 프로그래밍의 마스터링은 매우 어려울 수 있습니다. 또한 프로그래밍에 관심이 없는 사람들을 잊지 말아야 합니다. "우리가 가장 잘 하는 일을 해야 한다"고 그들은 말하는데, 저는 그 의견에 반대할 수 없습니다.

이 모든 것이 차츰 우리 기사의 주제를 이끌어냅니다. MetaTrader 프로그래밍 서비스에 대한 수요가 계속 증가하고 있습니다. 수요가 있는 곳에는 공급이 있습니다. 이것이 시장의 법칙입니다. 실제로 전략을 자동화하려는 트레이더와 돈을 벌고자 하는 프로그래머가 충분히 있습니다. 하지만 안타깝게도, 그들의 의사소통이 항상 상호 이익을 가져다 주는 것은 아닙니다. 개념 설명에 지친 프로그래머뿐만 아니라 불만족스러운 고객들도 많습니다.

이 글은 "고객 - 프로그래머"의 커뮤니케이션 중에 발생할 수 있는 문제를 다룹니다. 무엇보다도 먼저, 그것은 트레이더들을 위한 것입니다. 그들은 종종 다른 정신 구조를 가진 사람들을 대하는 경험이 부족합니다. 그러나 프로그래머들에게 이 기사가 매우 유용할 것이라는 데에는 의심의 여지가 없습니다. 관계는 항상 양면성을 가지고 있으며, 합작회사의 성공은 두 가지 측면 모두에 똑같이 달려 있습니다.


컨텐츠

  1. 아이디어 확인
  2. 환상 제거
  3. 목표 정립
  4. 어휘 동기화
  5. 요구사항 사양 준비
  6. 응용 프로그램/개발자 선택
  7. 사기를 당하지 않도록 자신 방어하기
  8. 결과 확인
  9. 피드백 제공


1. 아이디어 확인

아이디어 확인고객이 좌절하는 가장 일반적인 원인은 전략 상실에 있습니다. 거래자는 반자동 Expert Advisor나 지표가 아닌 전체 거래 시스템에 있어서 Expert Advisor에게 유일하게 수익성 있는 거래를 기대합니다.

그래서 프로그래머로부터 고대하던 편지를 받고 클라이언트 터미널을 출시하고 테스트를 시작합니다...그리고 그의 기발한 아이디어가 어떻게 보증금을 잃게 되는지 지켜볼 겁니다. 매개 변수를 다시 확인하고 기록 데이터를 업데이트합니다... 다시 한번 보증금 손실을 보게 됩니다.일부 트레이더는 프로그래머에게 분노에 찬 편지를 즉시 쓰기 시작합니다(물론 그의 잘못입니다!). 인내심이 강한 트레이더는 결과를 테스트하고 문제가 무엇인지 파악하려고 합니다. 그러나 그것은 사실을 바꾸지 않습니다 - 그들이 믿었던 생각은 수익성이 없는 것으로 밝혀졌습니다.

다음으로 여러 가지 가능한 옵션이 있습니다. 어떤 사람들은 프로그래머가 서툴다고 비난하고, 일에 돈을 지불하지 않고, 다른 프로그래머를 찾기 시작했습니다. 다른 사람들은 이 상황을 어떻게 고칠지 열렬히 고민하기 시작하고, "몇 가지 작은 변화들"을 만들어 달라고 요구합니다.(물론, 그것들은 너무 작기 때문에 무료입니다!) 공정하게, 자신의 실수를 당연하다고 받아들이고 프로그래머에게 책임을 전가하지 않는 고객도 있다는 점을 유념해야겠습니다. 하지만 이 장은 그들을 위해 쓰여진 것이 아니라 그들은 자기비판 의식이 뛰어납니다.

이는 결과일 뿐이며, 마운트 해제의 의미가 없습니다. 문제의 원인을 찾아 제거하는 것이 훨씬 더 타당합니다. 문제는 거래자가 너무 게을러서 그의 아이디어를 확인할 수 없다는 것입니다. 이를 위해서는 과거 데이터의 임의 간격을 선택하고, 매일 전략이 어떻게 작동하고 어떤 결과가 나올지 주의 깊게 관찰해야 합니다. 시각적 테스트 모드에서는 더 쉽고 빠르게 수행할 수 있습니다(MetaTrader 5에서 곧 사용할 수 있을 것입니다). 그러나 테스트는 데모 계정으로 1~2주 동안 실시간으로 수행할 수도 있습니다.

실제로 모든 전략을 과거 데이터에서 테스트할 수 있는 것은 아닙니다. 개인적인 경험을 통해 일부 아이디어를 확인하는 데 시간이 많이 걸릴 수 있다는 것을 알고 있습니다. 때로는 차트 위에 연필을 놓고 몇 시간씩 앉아 있는 것보다 Expert Advisor 비용을 지불하는 것이 더 쉽다는 것을 이해합니다. 그러나 테스트되지 않은 구현 아이디어를 보낼 때 결과가 매우 불쾌할 수 있습니다.

기억하세요! 프로그래머는 당신의 전략의 수익성에 책임이 없으며, 그의 임무는 당신이 승인한 알고리즘으로 동작할 프로그램을 작성하는 것입니다.

때로는 프로그래머가 시스템의 약점을 알려줄 수 있지만(당신이 이 작업을 처음 수행한 것은 아님), 이는 오직 그의 호의에 의한 것입니다. 그는 여러분을 실수로부터 보호하거나 상담할 의무가 없으며, 물론 여러분의 아이디어를 무료로 확인할 의무도 없습니다. EA를 주문할 때는 전략에 대해 완전히 자신감을 갖거나, 이것이 단지 시도일 뿐이라는 것을 이해해야 합니다. EA의 독점적인 결과로 인해 당황할 것 같지는 않습니다.

따라서 우리의 중간 결론은 전략을 실행하기 전에 여러 번 확인하는 것이 최선이라는 것입니다.


2. 환상 제거

Escher의 불가능 큐브우리는 우리가 보고 싶은 것만 봅니다. 그리고 우리는 요트, 바다에 있는 섬, 그리고 돈이 가득한 여행 가방을 원합니다. 차트를 보고 성공한 지표 신호만 봅니다. 우리는 눈을 감고 정신적으로 우리 계좌의 잔액에서 0의 숫자를 셉니다. 프로그램은 알고리즘에 따라 작동하며 우리의 환상을 드러냅니다.

두 번째로 크고 가장 빈번한 실망의 원인은 혼란과 자기 기만입니다. 만약 당신이 첫 번째 단계를 밟고 당신의 아이디어를 확인하기로 결정했다면, 그 과정을 비판적으로 받아들이세요. 이 단계에서는 많은 실망을 피할 수 있습니다. 장미색 안경을 벗고 전략을 현명하게 살펴보십시오.

매우 일반적인 상황: 인터넷에서(포럼, 블로그, 온라인 북에서) 전략에 대해 읽고 이를 위한 Expert Advisor를 만들기로 결정했습니다. 차트를 보고 계산의 정확성을 계산한 다음 "자, 드디어 여기 있습니다. 성배!"라고 생각했습니다. 전략이 적용되는 이 수퍼지표를 다운로드(또는 구매 금지)하여 상황이 악화됩니다. 이제 작업의 90%가 이미 완료되었으며 아직 할 일이 조금 남아 있다는 착각을 갖게 됩니다.

이 시점에서 여러분 중 절반이 스스로에게 "왜 이 전략이 퍼블릭 도메인에 있습니까?"(또는 구매의 경우, "저자가 사용하는 대신 판매하는 이유")라는 간단한 질문을 던진다면, 저는 지금 가지고 있는 고객의 정확히 절반을 가질 수 있을 것입니다. 하지만 우리는 기적을 믿고 다른 방법으로 우리를 설득하지 않습니다! 맞습니다, 그러지 않을것입니다. 그런데 어떤 이유로 개인 돈을 쓰실 건지 그걸 확인할 수 없으신가요?

여기 여러분 자신의 환상이나 누군가의 나쁜 의도에 빠지는 것을 피할 수 있도록 도와줄 몇 가지 규칙이 있습니다. 가능한 모든 문제를 해결하지는 못하더라도 가장 흔한 실수를 덜어줄 것입니다.

  1. 소스 코드가 없는 지표에 대해 매우 회의적으로 하세요!
    • 여러분은 그들이 어떻게 일하는지 약간만 이해할 수 있을 것이고, 아무도 미래에 그들의 행동의 불변성을 보장할 수 없을 것입니다.
    • 오래된 신호를 다시 그리게 하는 코딩 오류 또는 특정 계측기 또는 계정 유형에서 작업할 때 부적절한 동작, 고의적인 속임수(기록 데이터에 미리 알려진 신호 그리기) 또는 작업 시간 또는 계정 번호에 대한 간단한 제한 등 모든 것을 포함할 수 있습니다.

    프로그래밍을 전혀 이해하지 못하더라도 항상 프로그래머에게 프로그램 "검사"를 요청하거나 Expert Advisor를 주문하기 전에 직접 요청할 수 있습니다.

  2. 지표의 작업을 실시간으로 관찰하십시오!
    • 온라인 표시기가 어떻게 작동하는지 알지 못한 채, 히스토리의 신호를 고려하는 것은 말이 되지 않습니다 - 그것은 단순히 예쁘지만 (하지만, 불행하게도, 쓸모 없는) 사진일 수도 있습니다.
    • 이상적으로 거의 모든 지표가 마지막(완료되지 않은) 막대의 값을 변경할 수 있습니다 - 이는 정상입니다. 히스토리(양식 막대)에서는 이러한 변경 사항을 볼 수 없으며 완료된 막대에 표시된 지표 데이터를 볼 수 없습니다는 것을 이해해야 합니다. 즉, 신호(화살표, 지시선/가격선 교차)는 시스템이 나타난 후 다음 막대에서만 (한 포지션을 열 때) 사용할 수 있습니다. Expert Advisor가 테스트하는 동안 (바 폐쇄를 기다리지 않고) 신호를 사용하려고 하면 화살표와 크로스오버(따라서 열린 포지션)가 많았지만, 바 폐쇄 시 대부분의 신호가 사라졌습니다. 차트에는 포지션이 표시되지만 해당 신호는 표시되지 않습니다 - 막대 모양을 추적할 때만 표시됩니다.
    • 일부 표시기는 마지막 막대뿐만 아니라 이전 막대의 값도 변경할 수 있습니다. 때로는 지표의 본질을 유발하기도 합니다(예: 프랙탈의 형성을 위해서는 오른쪽에 2개의 막대가 있어야 하며, 새로운 단면의 조건이 충족될 때까지 ZigZag의 마지막 단면을 오랫동안 다시 그릴 수 있어야 함). 그러나 종종, 그러한 행동은 의도적인 속임수의 증거입니다 - 많은 지표가 오직 아름다움을 위해 히스토리 데이터에 도면이 생성되고(그것을 팔기 위해), 실질적으로 트레이드에 그것을 사용하는 것은 불가능합니다.

      히스토리에 나타난 지표가 최저가로 구매하라는 신호와 맨 위에서 판매하라는 신호를 보여준다면 이는 매우 좋은 지표가 아니라 반대로 "과거를 예측하고 있다"는 표시입니다.

    • 온라인 차트를 몇 시간 동안 앉아서 볼 필요는 없습니다 - 많은 지표가 시각적 테스트 모드에서 테스트될 수 있습니다. 그러나 가장 신뢰할 수 있는 테스트 방법은 데모 계정으로 실행하고 모니터링하는 것입니다. 표시기를 차트에 첨부하고 잠시 기다렸다가 다시 부착할 수 있습니다(동일한 파라미터로) - "실제"인 경우(이전 값의 재그림을 사용하지 않음) 표시기의 두 복사본의 그림이 동일해야 합니다. 표시기의 새 사본이 다른 신호를 표시하는 경우 표시기의 신호를 이력에서 분석하는 것은 무용지물입니다.

  3. 전략을 기록의 다른 간격으로 확인하십시오!
    • 종종 여러분은 무의식적으로 시험을 위해 매우 편리한 히스토리의 간격을 선택하는 경우가 있습니다. 표시기의 신호에 의한 진입이든, 주문의 격자든, 또는 패턴 인식기에 따라 - 항상 전략이 수익을 올릴 수 있는 간격이 있습니다. 그러나 사용 가능한 모든 기록 데이터에 대해 Expert Advisor를 테스트하면 가장 실패한 간격을 바로 확인할 수 있습니다. 직접 찾아보세요.
    • 기록의 임의 간격을 몇 개 선택합니다. 예를 들어 2008년 1월, 2009년 10월 및 2010년 8월을 예로 들어 눈으로 스캔하여 수익성 신호와 손실 신호의 비율을 계산합니다. 다른 계측기와 시간 프레임에서 신호의 품질을 살펴봅니다. 아이디어에 코어가 있는 경우, 다른 조건(약간 수정된 지시 파라미터 또는 정지 레벨)에서도 작동될 가능성이 높습니다.
    • 한 번의 검사를 위해 시스템 매개변수를 변경하지 마십시오. 8월을 보는 동안 특정 지표 매개변수를 사용하고 9월로 이동한 후에는 다른 매개변수를 취할 것입니다. 즉, 단순히 자신을 속이는 것입니다. 동일한 조건에서 검사가 수행되어야 합니다. 그렇지 않으면 원하는 항목만 표시됩니다. 시스템 매개변수가 항상 동일하게 유지되어야 한다는 것은 아니지만, "즉시" 변경하려면 변경 기준을 고려해야 합니다. 기록에 대한 결론을 내리는 것은 항상 간단하지만, 미래에 무슨 일이 일어날까요?
    • 전략에 대한 가장 복잡한 기록 간격을 찾아 해당 전략에서 시스템을 테스트합니다. 매우 일반적인 전술(채널 사용 및 후진 대기, 다음 포지션들의 시작 시에, 로트의 2배로 백업)은 히스토리의 일부 구간에서 매우 효과적입니다. 그러나 시장은 채널의 장기적 움직임과 강한 흐름을 가지고 있으며, 두 시스템 모두 주기적으로 보증금을 잃게 됩니다. 시스템에 가장 위험한 기록 간격(고장-고장 전술, 강력한 단방향 이동 - 전술, 후진 이동)을 찾고 이 간격에 따라 거래할 때 발생하는 문제를 관찰합니다.

      그리고 미래에는 더 긴 평탄하고 더 극단적인 경향의 움직임을 볼 수 있다는 것을 잊지 마십시오. 시장은 끊임없이 변화하고 있습니다. 항상 "안전 여유"를 준비하십시오.

  4. 오버헤드(스프레드, 스왑, 커미션, 마진 요구사항, 주문 설치를 위한 최소 여유 공간)를 고려하십시오!
    • 대부분의 장기 전략의 경우, 몇 점의 오차는 중요하지 않기 때문에 이러한 모든 비용은 중요하지 않습니다. 그러나 자동거래의 발전 추세는 적은 이익과 높은 빈도의 거래로 점점 더 많은 전략이 개발되고 있으며, 스프레드 2 포인트 또는 스톱스 레벨 10 포인트 상승이 상당히 두드러질 수 있음을 보여줍니다.
    • 모든 MetaTrader 차트(4차 및 5차 버전)는 입찰 가격을 사용하여 작성되며, 롱 포지션의 오프닝과 쇼트 포지션의 클로징은 애스크 가격에 의해 실행됨을 기억하세요. 마음속으로 거래할 때, 스프레드를 고려하는 것은 불편하지만, 우리는 항상 거래의 총 결과를 고려하여 거래 수를 빼서 스프레드에 곱하면 결과를 현실에 더 가깝게 만들 수 있습니다.
    • 히스토리를 분석할 때, 몇 년 전만 해도 거래조건이 매우 달랐다는 것을 잊지 마세요. 1999년의 "플러피" 차트는 현재 스프레드를 사용하여 거래한다면 스캘핑 전략에 이상적입니다. 하지만 1999년에는 그 확산이 3-4배 더 컸습니다! 각 거래에서 해당 기간의 실제 분포를 뺀다면 사실상 귀사가 얻은 이익에서 남는 것은 없을 것입니다. 상황은 다른 조건과도 유사합니다. 몇 년 전만 해도 사용 가능한 최대 레버리지가 1:100이었고, 보류 중인 주문을 배치할 수 있는 거리는 수십 개의 점으로 측정되었습니다.
    • 뉴스 보도에서 거래 조건이 바뀔 수 있으며(물론 더 나쁜 경우), 주문 실행이 지연되어 하락할 수 있다는 점을 기억하십시오. 히스토리에 대해 "기발한 뉴스 시스템"을 발명하지 말고 최소한 마이크로 리얼 계정에서 테스트해 보십시오. 2 포인트 스프레드 및 순간 실행을 예상할 경우 시스템에 대한 시각이 크게 달라지지만, 5초 후 포지션이 열리며, 미끄러짐 10점으로 벌어지며, 적어도 패하지 않고는 포지션을 닫기 어려울 정도로 스프레드가 확대됩니다.
    • 거래 조건과 관련하여 항상 "안전 여유"를 가지십시오. 만약 여러분의 시스템이 확산의 작은 변화나 포지션 오픈의 몇 초 지연으로부터 "끊어진"다면, 그것은 "진짜 싸움"에서 살아남을 것 같지 않습니다.

      스프레드는 대부분의 전략에 대해 보증금을 상실한 이유, 즉 정확성 확률이 50%에 가까운 거래 방향을 선택하는 것이므로 스프레드가 결과에 큰 영향을 미치지 않도록 전략을 최대한 개선하도록 노력해야 함을 기억하세요.

모든 점검 후에도 여전히 시스템에 대한 믿음이 확고하고 자동화에 대한 욕구가 있다면 다음 단계로 넘어갈 수 있습니다.


3. 목표 정립

목표 정립왜 Expert Advisor가 필요한지 궁금하신 적이 있습니까? 전략 테스터에서 아이디어를 확인하시겠습니까? 아니면 마이크로 리얼 계정으로 준비된 전략을 사용하시겠습니까? 아니요, 알고 있습니다. 2년 동안 시스템을 거래해 왔으며 보증금 10만 달러의 실제 계좌로 Expert Advisor를 즉시 시작합니다.

쓸모없어 보이는 이러한 질문은 매우 드물게 던져집니다. 일반적으로 그것은 이해가능합니다 - 답변은 기술 요구사항의 세부사항, 지원자/개발자의 선택, 작업 비용 등 일부 사소한 부분에만 영향을 미칩니다. 하지만 생각해 보면 서로 다른 접근 방식 간의 차이가 매우 클 수 있습니다.

대부분의 경우 프로그래머는 전략 테스터(Strategy Tester)를 위한 Expert Advisor를 작성할지(최소한의 검사와 예외 처리 없이) 실제 거래를 위해 작성할지 여부에 상관하지 않습니다. 오랫동안 MQL에 글을 쓰고 있고 프로그램의 안정성에 대해 아무런 불만이 없다면, 그는 어떤 알고리즘도 구현할 수 있는 근거가 있었을 것이며, 실제 계정을 위한 전략 테스터 버전 또는 버전을 작성하는 접근 방식에는 차이가 없을 것입니다.

하지만 운이 좋게도 그런 사람과 함께 일하게 되더라도 기술 요구사항을 작성할 때 차이를 느낄 수 있을 것입니다.

예를 들어 설명하겠습니다:

  1. 상황 1 - 아이디어를 테스트하기만 하면 됩니다(어디선가 발견/듣고/읽은 적이 있음). 그 의미는 다음과 같습니다:
    • 실제 계정으로 실행할 계획이 없습니다. 모든 종류의 수표와 예외 처리를 수행할 필요가 없습니다.
    • Expert Advisor는 능동적으로 테스트하고 최적화합니다. 최대한의 성능을 달성해야 합니다(아마도 견고성을 희생해야 할 것입니다).
    • 첫 번째 버전을 확인한 후에는 Expert Advisor를 쉽게 확대하고 확장할 수 있어야 합니다.
    • 알고리즘의 "병목 현상"(최소 허용 거리에서의 주문 설정, 포지션 열기 및 닫기 시퀀스, 최대 로트 제한의 우회, 연결 해제 후 작업 재시작 등)은 최종 버전에서 관련성을 유지할지 모르기 때문에 처리할 필요가 없습니다.

  2. 상황 2 - 전략이 준비되고, 실제 고객에게는 유효한 Expert Advisor 가 필요합니다. 이전 버전과는 다음과 같이 다릅니다:
    • 모든 거래 작업은 가능한 한 정확해야 하며, 사용자 정의 파라미터의 값을 테스트해야 할 뿐만 아니라 모든 값이 작업 프로세스 동안 계산됩니다(로트 크기, 중지 주문 수준 등).

      거래 요청의 "품질"은 서버와 사용자 계정의 "관계"에 직접적인 영향을 미칩니다. 서버에 잘못된 거래 주문이 쏟아지면 계정을 쉽게 차단할 수 있으며, 상황에 대한 통제력을 잃게 됩니다.

      심각한 오류가 발생할 경우 사용자에게 (화면의 메시지, 이메일, Skype, ICQ 또는 SMS를 통해) 알려야 합니다.
    • 업무 수행 속도와 달리 업무의 건전성이 전면에 부각됩니다. 몇 가지 추가 점검이 오류 발생을 예방하는 데 도움이 된다면 Expert Advisor에 포함되어야 합니다. 테스트 및 최적화의 속도가 느려지더라도(실시간 작업 시 실행 속도가 눈에 띄지 않는 경우가 대부분입니다) 그래야만 합니다.
    • 미래의 개선은 필요하더라도 미미합니다. 따라서 확장 용이성에 대한 구체적인 요구사항은 명시되어 있지 않습니다.
    • 모든 알고리즘 "병목 현상"은 철저히 생각하고 정확하게 처리해야 합니다. 오류가 발생할 수 있는 최소한의 상황이 있어야 합니다(불행하게도 모든 오류를 대비할 수는 없습니다).
      • Expert Advisor는 일시적으로 연결을 끊거나 계정에 다시 연결하거나 클라이언트 터미널을 다시 설정한 후에 정상 작업을 복원할 수 있어야 합니다.
      • 보류 중인 주문이나 중지 주문을 설정할 수 없는 경우 주문을 가상으로 추적하고 가격이 도달하면 시장 가격에 따라 실행해야 합니다.
      • 만약 당신이 N번의 시도 내에서 시장 가격에 대한 입장을 열 수 없다면, 최대 허용 하락폭을 증가시켜야 합니다.
      • 보류 중이거나 중지된 주문이 트리거될 때 알고리즘에 의해 제공되지 않은 레벨에 의해 가격 차이가 있는 경우 모든 종속 주문의 레벨을 조정해야 합니다(예: 볼륨도 조정됨).
      • 예금 크기(예: 로트 계산)로 작동하는 모든 기능은 일반적으로 잔액이 있는 비거래 영업(잔액 또는 인출)을 허용해야 합니다.
      이 목록은 오랫동안 지속될 수 있습니다. 그런 뉘앙스가 무궁무진하고 각각의 전략에도 디테일이 있습니다.
    • 또한 Expert Advisor는 사용 가능한 계측기 목록, 해당 사양 및 기타 서버 설정(최대 보류 주문 수, Stop Out 수준, 포지션/주문을 반대 방향으로 열 수 있는 기회, 등)을 고려하여 다른 브로커와 원활하게 작업해야 합니다.(MetaTrader 4 에만 해당)
  3. 상황 3 - $100 000의 보증금 실제 계좌에서 Expert Advisor를 시작할 준비가 되어 있습니다. 실제 계정의 이전 버전과 비교했을 때 어떤 변화가 일어날까요? 모든 것은 당신의 편집증에 달려 있습니다.(죄송해요, 당신의 예지력을 말한거에요):
    • 더 많은 로그 파일을 생성해도 전혀 해를 끼치지 않으며, 그래프의 스크린샷을 정기적으로 저장하면 문제나 분쟁을 분석하는 데 매우 유용해질 수 있습니다.
    • 전용 서버에서 Expert Advisor를 실행할 계획이라면 다른 (병렬 실행) 복사본을 사용하여 작업을 제어/수정할 수 있는 가능성을 예상할 수 있습니다. 예를 들어, Expert Advisor를 전용 서버와 집에서 동시에 실행할 수 있으며, "서버" 복사본이 5분 이상 연결이 끊긴 경우 "홈" 복사본이 상황을 제어할 수 있어야 합니다.
    • EA 작업을 지속적으로 모니터링할 수 없는 경우 현재 계정 및 거래 상황에 대한 시간별(또는 매일) 보고를 구현할 수 있습니다. 심각한 오류에 대한 알림은 어떤 경우에도 존재해야 합니다.
    • 전화기만 있는 경우에도 거래 프로세스를 제어하려면 SMS, 이메일, Skype, ICQ를 통해 또는 보류 중인 명령을 설정하여 Expert Advisor에게 명령을 전송하는 기능인 "피드백"을 구현할 수 있습니다.

차이를 느끼시나요? 그리고 이것은 그 방법을 한 눈에 보여주는 것입니다. 각각의 요소들은 전체적으로 생각할 수 있고 무한대로 확장될 수 있습니다. 그리고 우리가 아직 언급하지 않은 세부사항들이 너무 많습니다!

세부 사항을 살펴본 후, 알고리즘 세부 사항에 대한 생각은 Expert Advisor의 목적과 고객의 요구사항에 따라 달라집니다.

프로그래머에게 모든 뉘앙스의 동일한 구현 품질을 기대할 수는 없습니다. 안타깝게도 이러한 품질 표준은 아직 존재하지 않습니다. 따라서 Expert Advisor가 필요한 용도를 결정하고, 다양한 상황에서 어떻게 작동해야 하는지 생각해 보고, 기술 요구 사항에 반드시 언급해야 합니다.

간단한 오류(리퀘스트, 유효하지 않은 중지 등)에 대한 표준 처리 기능은 자존심 강한 EA 개발자가 추가합니다. 그러나 이러한 "표준적 행동"이 특정 전략에 적합하다고 보장되지는 않습니다.

예를 들어, 계산된 수준(다른 주문들)으로 설정할 수 없거나 진행 중인 일련의 포지션의 최대 손실이 이에 따라 달라질 수 있는 경우 손실 중지 레벨을 최소 허용 거리로 설정하는 것이 항상 최선의 방법은 아닙니다. 따라서 실제 계정에 대한 EA를 만드는 중이라면 작업 준비 단계에서 최대한의 시나리오를 고려해야 합니다.

언제든지 프로그래머에게 가능한 상황 목록을 준비하고 처리 알고리즘을 개발하도록 요청할 수 있습니다. 그러나 전략의 분석 및 개선뿐만 아니라 알고리즘의 생성은 Expert Advisor 작성과 직접적인 관련이 없다는 점을 잊지 마십시오. 이것은 작업의 별도 부분이며 그 결과는 Expert Advisor 코드가 아니라 알고리즘 텍스트입니다. 일부는 이 작업에 대해 상당한 추가 보수가 필요할 수 있습니다. 그가 시간을 투자하고 있고, 여러분은 중급이지만 여전히 결과를 얻고 있으며, 다른 프로그래머에게 이 알고리즘을 적용할 수 있기 때문입니다.

그리고 모든 프로그래머가 실제 계정으로 일한 경험이 있는 것은 아니라는 것을 잊지 마세요. 기본적으로, 그들은 일어날 수 있는 모든 놀라움을 인식하지 못할 수도 있습니다. 글쎄요, 아마 모든 종류의 거래처, 가능한 모든 상품, 그리고 다른 시장 상황에서 절대적으로 모든 회사와 함께 일한 사람은 단 한 명도 없을 겁니다. 경험을 공유하고(있는 경우) 프로그래머에게 자신의 경험을 공유하도록 요청하되, 모든 놀라움에 대해 보험에 가입되어 있다고 생각하지 마십시오. 유감스럽게도 이건 비현실적입니다.

가장 중요한 부분인 기술 요구 사항의 준비에 근접했지만, 한 가지 작은 편차를 만들기 전에는 그렇지 않았습니다.


4. 어휘 동기화

대화를 시작하기 전에 누구와 대화할 것인지 이해합니다. "다른 쪽 끝"에는 완전히 다른 사람이 있고, 그의 지식은 독자 분과는 상당히 다를 수 있습니다.

"단어를 동기화"하기 전까지는(공통 언어 찾기, 용어 정의), 공통 목표를 향한 움직임이 불쾌하고 어려울 수 있습니다. 초보적인 경우, 간단한 Expert Advisor를 개발하면 며칠(또는 몇 주)에 걸쳐 관계를 확인할 수 있을 정도로 많은 혼란을 야기할 수 있습니다.

조금 우회해서 가요.

수도꼭지를 바꿔야 한다고 상상해 보세요. 배관공을 불러서 "세수할 물건을 망가뜨렸어요!"라고 말해요. "한 손으로 켤 수 있는 새로운 것을 원합니다." 바보같이 들리지 않나요? 하지만 제 말을 믿으세요, 트레이더들이 받은 임무 중 일부는 더 바보처럼 보입니다!

이제 배관공의 입장이 되어 보세요. 네, 그는 대략 무슨 일이 일어나고 있는지 이해했지만, 이 "과제"를 위해 아무것도 할 수 없습니다. 그리고 텔레파시만이 당신이 원하는 수도꼭지가 무엇인지 정말로 이해할 수 있을 것입니다.

다른 방법으로 시도해 보죠. "제 욕실에 수도꼭지를 새로 설치해야겠어요. 온수 및 냉수용 파이프 직경은 13mm이고 파이프에서 싱크대 밑부분까지의 거리는 20cm입니다. 압력과 수온 조절은 반드시 한 개의 핸들로 이루어져야 합니다. 여러 모델 중에서 선택할 수 있는 것이 바람직합니다.

빙고! 이제 배관공은 a) 수도꼭지 손잡이가 필요함을 알게 되었습니다; b) 밸브 2개와 핸들 제어 장치 1개가 있어야 합니다; c) 길이 20-25cm, 직경 13mm의 호스를 연결해야 합니다. 그가 독자 분의 집에 도착하면, 그는 독자 분이 선택할 수 있는 몇 가지 해결책을 제공하고 그의 일을 신속하게 할 수 있을 것입니다.

MQL로 작성하는 많은 프로그래머는 거래에 대한 지식이 풍부합니다. 고객과 더 많이 소통하고 Expert Advisors를 더 프로그램화 할수록 분석에 대한 접근 방식의 다양성을 더 잘 이해할 수 있습니다. 또한 그들 중 상당수는 스스로 전략을 개발하여 트레이딩 분야를 공부하고 주제포럼에 참여하기도 했습니다.

하지만 그들에게 너무 많은 것을 요구하지는 마세요! 일상 생활에서 사용할 수 있는 "마지막 2개의 프랙탈로 섬유 그리드를 늘립니다."라는 문구는 경험이 부족한 기술자를 교착 상태에 빠뜨릴 수 있습니다. 일반적으로 사용되는 "잠금 트리거링 후"라는 문구로 마무리합니다. 또는 "런던 오프닝에서 정지를 손익분기점으로 설정"하면 고객은 준비가 완료됩니다. 즉, 긴 시간 동안 질문하고 확인할 수 있습니다.

일반적인 "MA"를 "평활 기간이 36인 이동 평균 기술 지표"라고 불러야 한다는 것이 아닙니다. 광신도 필요 없습니다! 하지만 여러분이 대화하는 사람은 지식의 짐과 비전이 다르다는 것을 항상 기억하도록 노력하세요.

중간 결과 - 몇 가지 팁:

  1. 약어와 전문 용어를 사용하지 말고 간단하고 이해하기 쉬운 단어로 자신을 설명하세요.
  2. 일반적인 용어를 사용합니다. 툴이나 이벤트를 호출하는 방법을 모를 경우, 참고 자료나 교과서에서 나오는 문구를 사용하는 것을 주저하지 마십시오.
  3. 사물을 철저하고 자세하게 설명하세요. 당연하다고 생각하는 것조차도 이야기하세요. 종종, 그것은 당신에게만 명백하다는 것이 밝혀집니다!
  4. 마지막으로 상대방이 당신을 이해하는지 확인합니다. 유도 질문을 하거나, 그에게 자신의 말로 과제를 공식화하도록 요청하세요. 같은 것을 말하고 있는지 확인하세요.

친애하는 동료 여러분, EA 작가 여러분! 앞서 말한 내용이 오직 거래자와만 관련이 있다고 잘못 생각하셨다면, 서둘러 실망시키겠습니다! 우리는 기술적으로 유능한 인원으로서 전체 작업 프로세스의 정확성에 대한 책임이 있습니다. 그리고 우리는, 그것의 성공에 대한 책임이 더 큽니다.

이 과제를 정확하고 정확하게 공식화할 수 있는 거래자는 거의 없습니다. 이는 사실입니다. 제가 EA를 작성하면서 6년 동안 일한 고객 두 명을 기억합니다. 그것은 정말 놀라운 작업이었습니다. 이 고객은 MQL로 전송되기만 하면 되는 기성 프로그램이었습니다. "원하는 바를 이해하고 자신의 생각을 표현할 수 있다"는 꼬리표가 붙은 몇 명이 더 붙었습니다. 그들의 알고리즘을 읽고 난 후, 저는 미래의 프로그램이 어떻게 실행될지 확실히 이해했습니다. 그러나 대다수의 고객은 초보 거래자이며, EA의 행동을 명확하게 설명해야 할 필요성뿐만 아니라 "알고리즘"이라는 단어에 겁을 먹고 있습니다.

약간 심리학자가 되십시오. 파트너의 수준을 결정하고, 파트너의 (수준) 용어와 개념에 맞는 것을 사용하십시오. 당신의 지성을 그에게 짓밟지 말고 관대하게 대해주세요. 가능하면, 토론에서 모든 프로그래밍 뉘앙스를 제거하세요. 사용자는 주기가 무엇인지, 막대의 번호가 어디서 시작되는지, 그리고 파일에 순서 정보를 저장하는 함수가 어떤 조건에서 실행되는지 알 필요가 전혀 없습니다.

그렇다고 해서 고객이 "옹알이"를 해야 한다는 뜻은 아니며, 조금이라도 동의하지 않는 기미가 보이면 EA를 다시 작성해야 한다는 의미도 아닙니다. 말도 안돼요! 하지만 그에게 좋은 기술자뿐만 아니라 즐거운 대화 상대가 되도록 노력하세요. 그는 분명히 그것에 감사할 것입니다.

드디어 가장 중요한 부분인 알고리즘 제작에 도달했습니다. 자, 시작하죠!


5. 요구사항 사양 준비

작업 준비

당신의 사촌은 거래와 아무 관련이 없어요 당신의 준비된 알고리즘만 가지고 당신의 시스템을 거래할 수 있을 거예요.

약간만 변경된 이 고전적인 문구는 우수한 기술 사양의 주요 특성을 매우 명확하게 보여줍니다:

  1. 이 작업은 완전히 자급자족할 수 있어야 합니다(시스템 담당자가 전혀 알지 못할 수도 있음).
  2. 이 작업은 가능한 한 상세해야 합니다(거래에 관한 한 경험이 없는 사람이라도 이해할 수 있음).

"거래와는 아무 상관이 없다"는 말이 얼마나 단정적이고 과장된 표현인지요. 사실 거래와 거래 터미널의 기본은 시스템의 본질에 더하여 사람에게 설명하기가 어려울 것입니다. 다시 한 번 고전적인 문구로 돌아가겠습니다:

불과 두 달 전에 MetaTrader를 설치했고 지금까지 데모 계정으로만 거래해 온 사촌입니다... 나머지는 우리가 아는 이야기죠.

하지만 이건 에센스를 바꾸지 않아요! 열 명의 다른 사람에게 알고리즘을 제공하고 시스템에서 교환을 요청하면, 그들은 완전히 동일한 결과를 얻어야 합니다. 여러분 중 몇 명이나 그런 경험을 자랑할 수 있나요?


5.1. 우리는 어디서부터 시작할까요?

처음부터 시작할게요. 대체적인 생각을 묘사하고 원하는 것이 무엇인지 말하세요. 프로그램에 대한 목표와 요구 사항은 이제 구체화될 수 있으므로 잊지 마십시오.

프로그래머는 귀하와 귀하의 시스템에 대한 일반적인 생각을 가지고 있으므로 귀하의 의도의 심각성을 평가하고 대략적인 작업량을 가정할 수 있습니다.

이러한 항목의 몇 가지 예:

MetaTrader 4에 대한 지표가 필요합니다. 작업 - 주 차트 하위 창에 임의 통화 쌍의 반전 차트를 그립니다. 지표는 4-5-digit 쿼트와 비표준 상징 이름(즉, EURUSDFXF)과 함께 작동해야 합니다.

MetaTrader 5의 Expert Advisor가 필요합니다. 단일 통화로 거래하는 입력 신호는 사용자 지정 표시기(코드 첨부)를 기반으로 합니다. 포지션 닫기 - SL, TP 및 역방향 신호에 의해 수행됩니다. 모든 포지션에는 다른 표시기에 따라 후행 정지가 수반됩니다(코드도 사용 가능). 로트는 잔액의 백분율로 계산됩니다.
Expert Advisor(MetaTrader 4)를 완료하여 실제 계정에서 작업해야 합니다. 필요한 모든 검사를 배치하고, 연결 실패 후 정상 작동을 복원하고, 오류가 발생한 포지션을 열려는 시도를 몇 번 추가하고, 다른 작업을 수행할 수 있습니다.
우리는 채널을 뚫기 위한 전략을 테스트하기 위해 EA가 필요합니다. 지정된 계수를 가진 로트의 증가; 즉 거래 실패 후 보류 중인 주문에 의해 시장에 진입하는 지표를 사용하여 채널의 경계를 결정합니다. 또한 첫 번째 주문 설정이 허용되는 낮의 작업 시간도 지정해야 합니다. 그래서 MetaTrader 4의 코드를 얻었습니다.

이 부분이 가장 덜 어려운 부분입니다. 하지만 불행히도 이 부분은 모든 것이 끝나는 부분입니다... 잊지 마세요. 그것은 단지 서론일 뿐이고, 일반적인 아이디어에 대한 설명일 뿐입니다. 프로그램을 작성하기 위해서는 더 많은 것이 필요합니다.


5.2. 어떻게 작업을 공식화할까요?

사실, 알고리즘이 가장 중요한 부분입니다. (특히 프로그래머가 아닌 사람에게는) 공식화하는 것이 가장 어렵고, 정말 많은 노력이 필요합니다.

알고리즘을 즉시 논리적 하위 섹션으로 나누십시오. 읽기 어려운 문장 하나로 시스템의 모든 섬세함을 전달하려고 하지 마십시오.

Expert Advisor를 작성할 때 다음과 같은 논리적 섹션을 구분할 수 있습니다(그 수와 내용은 전략에 따라 다를 수 있음).

  1. 일반 조건: 작업 시간(일 이내, 요일 내, 특정 요일 내), 실행 순서(예: 버튼을 눌러 거래 시작), 기록 분석 깊이 및 전체 작업과 관련된 기타 조건(개별 지점 제외)입니다.

  2. 시장 진입 신호(첫 번째 포지션이 열리거나 첫 번째 주문이 설정됨)는 지표, 특정 가격 패턴, 단순히 정해진 시간 또는 사용자의 명령에 따라 결정됩니다. 여기에는 첫 번째 입구(필터)에 대한 제한 사항도 포함될 수 있습니다. 즉, 너무 오랜 시간 동안 손실이 발생한 후, 허용할 수 없는 거래 조건(너무 큰 스프레드 또는 정지 수준) 또는 사용 가능한 자금 부족 시, 다른 지표에 의한 제한 사항도 포함될 수 있습니다. 로트 계산 방법과 손실 중지 및 이익 취하기 수준은 별도로 지정해야 합니다(모든 포지션에 대한 계산 규칙이 동일할 경우 독립 조항으로 구분할 수 있습니다).

  3. 보류 중인 주문 트리거링 또는 포지션의 SL/TP 처리(필요한 경우)입니다. 예를 들어, 구매 중지 주문이 트리거될 때 판매 중지 주문을 제거하는 것, 추가 판매 제한 주문 설정, 이전에 설정된 판매 제한 주문이 트리거될 때, 손실 중지 트리거링 후 두 배의 볼륨을 판매하기 위한 포지션이 열리는 것 등이 있습니다.

  4. 추가 포지션(열린 포지션이 있는 경우) 또는 추가 주문 설정(필요한 경우)을 위한 신호입니다. 예를 들어, 다른 지표의 신호에 의해 또는 개방된 포지션의 손실의 특정 이익에 도달할 때 이 작업을 수행할 수 있습니다. 여기에는 로트의 계산 규칙, 즉 손실 중지 및 이익 취하기(위에서 설명한 규칙과 다를 경우)도 있어야 합니다.

  5. 포지션 트레일링 및 순서(별도 - 시리즈 첫 번째, 별도 - 추가 포지션 또는 모두, 규칙이 동일한 경우). 예를 들어 보류 중인 중지 주문의 시장 진입(가격이 반대 방향으로 이동하는 경우), 포지션 후행 중지(일반적인 경우, 지표 또는 기타 일부), 특정 이익에 도달할 때 해당 포지션의 부분 마감 등이 있습니다.

  6. 닫기(전체, 부분) 또는 포지션 반전 신호입니다. 보류 중인 주문 제거에 대한 규칙.

  7. 계정 상태와 관련된 일반적인 조건 - 모든 포지션의 폐쇄 및 지정된 기간 내 업무 중단, 예금 비율 사용 감소, 잔액이 일정 수준으로 증가 등입니다. 이러한 조건은 첫 번째 점에 적용되지만, 사용 순서와 같이 마지막에 설명하는 것이 더 쉽습니다.

  8. 그리고 결국 차트에 대한 몇 가지 추가 정보, 포지션 개시/종료 가격 수준 화살표, 저널의 상세 정보, 보류 중인 주문을 트리거할 때 이메일을 보내는 것, 거래와 관련이 없지만 인터페이스와 관련된 기타 모든 정보가 필요할 수 있습니다.

우리가 지표에 대해 이야기한다면, 다른 한편으로는, 모든 것이 훨씬 더 쉽습니다. 논리는 더 원시적이고 덜 복잡하지만, 다른 한편으로는, 약간의 미묘함이 있습니다.

개요는 다음과 같습니다:

  1. 필요한 데이터: 분석된 계측기 목록(여러 개일 경우), 사용된 모든 계측기의 기록 깊이 및 교역 서버의 표준 시간대.
  2. 도면 유형(선, 신호 화살표, 캔들스틱 차트, ZigZag와 같은 횡단면, 기하학적 형상 등).
  3. 첫 번째 값(왼쪽 막대의 값)이 기본 알고리즘과 다른 경우 값을 계산하는 알고리즘.
  4. 개별 막대에 대한 공식을 도출하기 어려운 경우(예: Zig-Zag의 경우) 단일 막대를 계산하거나 계산 프로세스를 설명하기 위한 기본 알고리즘입니다.
  5. 그리고 필요한 경우 오디오 신호, 스크린샷 저장, 이메일로 알림 보내기 등과 같이 매우 편리한 기능도 제공합니다.


이론에서 실무로 이동하고 샘플 작업 중 일부를 완료해 보겠습니다.

MetaTrader 4에 대한 지표가 필요합니다. 작업: 차트의 기본 창에 임의 통화 쌍의 반전 차트를 그리기. 지표는 4-5-digit 쿼트와 비표준 상징 이름(즉, EURUSDFXF)과 함께 작동해야 합니다.

  1. 설정에서 기기의 이름 (심볼 파라미터)을 지정하고, 표시되어야 합니다(예: "GBPUSD_m"). 이름이 지정되지 않은 경우 표시기가 부착된 차트의 기호를 사용합니다. "Market Watch" 창에 이러한 기호가 없는 경우 오류 메시지가 있는 창을 표시해야 합니다.
  2. 표시기는 일본식 캔들 스틱으로 표시되어야 합니다. 성장 및 하강 캔들스틱의 색상과 그림자(별도 - 상부 및 하부)를 입력 매개 변수로 설계해야 합니다.
  3. 각 막대에 대한 OHLC 값의 계산은 다음 공식으로 이루어집니다:
    • Open (indicator) = 1 / Open (symbol );
    • Close (indicator) = 1 / Close (symbol);
    • Low (indicator) = 1 / High (symbol);
    • High (indicator) = 1 / Low (symbol).
  4. 모든 "라운드" 가격 수준(1.3200, 1.3300, 1.3400, 1.3500, ...)에서 100포인트의 4자리 배수를 갖는 수준에서는 수평선을 그려야 합니다(스타일 및 색상은 입력 매개 변수로 설계되어야 함).
Expert Advisor가 이 작업을 수행하면 조금 더 어려워질 것입니다:

MetaTrader 5의 Expert Advisor가 필요합니다. 단일 통화로 거래하는 시장 진입 신호는 사용자 지정 표시기(코드 첨부)를 기반으로 합니다. 포지션 닫기 - SL, TP 및 역방향 신호에 의해 수행됩니다. 모든 포지션에는 다른 표시기에 따라 후행 정지가 수반됩니다(코드도 사용 가능). 로트는 잔액의 백분율로 계산됩니다.

  1. 포지션 열기 신호 - iSignalArrow 지표자(모든 표시기 매개 변수를 조정할 수 있어야 함)의 화살표:
    • 표시기의 화살표가 마지막 닫힌 막대에서 (차트 아래)를 가리키면 롱-포지션이 열립니다;
    • 표시기의 화살표가 마지막 닫힌 막대에서 아래(차트 위)를 가리키면 쇼트-포지션이 열립니다;
    • 현재(완료되지 않은) 막대의 화살표는 무시되고 완료된 막대만 분석됩니다.
  2. 포지션 볼륨은 현재 잔액의 백분율로 계산됩니다: 로트 = 잔액/필요마진 * LotPercent / 100 입니다. 여기서:
    • 잔액 - 현재 계정 잔액;
    • 필요마진  - 1 로트의 크기로 포지션을 여는 데 필요한 마진입니다;
    • LotPercent - 입력 매개 변수(로트 계산에 대한 백분율)입니다.
      예를 들어, 1:100 레버리지가 LotPercent = 5일 때, EURUSD(현재 가격 1.3900)에 대한 로트: 10 000 / 1 390 * 5 / 100 = 0.3597
      얻어진 결과는 일반 규칙에 의해 가장 가까운 정확도 값(DC가 0.01 이하의 정밀도를 허용하거나 로트 스텝 = 0.1인 경우 최대 0.36 - 최대 0.4 -)으로 반올림됩니다.
  3. 손실스탑 (SL) 그리고 이익획득 (TP) - 고정되며, 매개 변수 StopLoss(손실스탑)TakeProfit(이익획득 )로 조정할 수 있습니다:
    • 수준은 4자리 쿼트로 지정됩니다.
    • 열린 포지션의 가격(롱 포지션의 경우-요청가격과 짧은 포지션의 경우- 비드가격)에 비례하여 레벨이 계산됩니다.
    • 값이 너무 낮으면 정지를 최소 허용 거리로 설정해야 합니다;
    • 0 값을 지정한 경우 중지 기능이 사용되지 않습니다.
  4. 열려 있는 모든 포지션은 다음과 같이 iTrailingLine 표시기 (모든 표시기 매개 변수를 조정할 수 있어야 함)에 의해 트레일링 스톱(trailing stop)을 동반합니다:
    • 만약 롱-포지션이 열려 있고 표시기 선이 현재 가격보다 낮으면, 정지점이 표시기 선의 레벨로 이동합니다;
    • 만약 쇼트 포지션이 열려 있고 표시기 선이 현재 가격보다 높으면, 정지점이 표시기 선의 레벨로 이동됩니다;
    • 표시기 값은 완료된(형성된) 막대에서 가져오며, 현재 막대(완료되지 않음)는 사용되지 않습니다. 즉, 수정은 바에서 한 번 이상 자주 수행되지 않아야 합니다;
    • SL 이동은 포지션의 수익 방향으로만 허용됩니다 - 롱 포지션의 경우, , 그리고 쇼트 포지션의 경우, 아래;
    • 만약, 그 선 레벨에서 SL을 설정할 수 없는 경우 허용 가능한 최소 거리로 설정해야 합니다(단, 수익 방향으로 이동하는 이전 규칙을 준수하는 경우에만 해당).
    • 후행 중지(trailing stop) 기능을 구성할 수 있어야 합니다(후행허가 = 참/거짓 매개변수).
  5. 열린 포지션이 있고 반대 신호가 있을 경우, 열린 포지션은 닫혀야 하고 (반대 방향으로) 새로운 표지션을 열어야 합니다.
    새 포지션의 경우, 열린 포지션을 닫은 후, 로트의 계산을 불러야 합니다.
  6. 기타:
    • Expert Advisor를 실행할 때 지정된 매개 변수를 사용하여 사용된 표시기를 부착해야 합니다;
    • SL의 포지션 개폐 및 변경에 대한 정보는 저널에 저장해야 합니다;
    • 오류가 있으면 오류를 설명하는 메시지를 인쇄해야 합니다.

이 양식에서는 알고리즘이 시스템에 대한 충분한 세부 정보를 포함하고 MQL로 쉽게 "번역"될 수 있습니다. 하지만 주문을 서두르지 말고 끝까지 생각해 보세요.


5.3. 무엇을 잊어서는 안 됩니까?

무엇을 잊어서는 안 됩니까?이러한 알고리즘 중 하나를 기반으로 작성된 프로그램은 사용자나 다른 프로그램의 개입 없이 별도의 클라이언트 터미널에서 계정에 한 번 액세스할 수 있는 이상적인 조건에서 정상적으로 작동합니다.

이러한 환경의 예시 - 전략 테스터, 연결 끊김 오류, 실수로 닫힌 포지션이 없음. 그 외 기타 거래 전문 어드바이저. 하지만 일상생활에서 이러한 조건은 극히 드물며, 이 프로그램은 "외부"와 함께 작동할 가능성이 높습니다.

다른 기호로 또는 다른 설정으로 프로그램 사본을 여러 개 실행할 수 있습니다. 터미널을 다시 시작하고, 계정을 수동으로 교환하거나 다른 Expert Advisor와 교환하고, 한 터미널에서 다른 계정으로 연결합니다. 이 모든 상황은 명백하게 알고리즘으로 주어지지 않으면, 프로그램에 영향을 줄 수 있습니다.

전략 테스터에서 프로그램을 테스트하는 것보다 더 큰 규모의 목표를 가지고 있다면 외부와의 상호작용 규칙을 즉시 설명해야 합니다.

  1. Expert Advisor는 수동으로 열린 포지션 또는 기타 Expert Advisor에 대해 어떻게 대응해야 합니까?
    일반적으로 세 가지 옵션 중 하나를 선택합니다:
    • 모든 "기타" 포지션을 완전히 무시합니다. 시스템이 자급자족할 경우 다른 Expert Advisor 또는 사용자의 거래 조치가 시스템에 영향을 미치지 않아야 합니다.
    • "수동" 포지션만 사용하십시오. Expert Advisor가 수동으로 열린 포지션과 함께 사용하도록 설계된 경우, 다른 Expert Advisor의 포지션을 방해해서는 안 되며, 일반적으로 자신의 포지션은 오픈되지 않습니다. 수동 거래(손실 중지 이동, 신호로 포지션 닫기 등)를 돕는 작업이 수행됩니다.
    • 보다 보편적인 해결책은 사용자에게 자신의 포지션만을 사용하여 작업하거나 특정 조건(특정 기호 또는 특정 매직 넘버)을 충족하는 포지션에 함께 작업하도록 하는 옵션입니다.

    MetaTrader 5에서는 "자체"와 "기타"로 거래를 구분하는 것이 특히 중요합니다. 터미널은 여러 Expert Advisor의 거래에서 기호가 "수집"된 경우에도 기호의 총 포지션만 표시합니다. 거래에 대한 완전한 회계처리는 (단일 기호에 따라 여러 EA의 정상 운영을 위한) 구현이 더 어려우므로 비용이 더 많이 들 수 있습니다. Expert Advisor가 일반적으로 다른 Expert Advisor와 동일한 기호로 작업하는지 여부를 신청자/개발자와 함께 확인합니다.

  2. Expert Advisor는 다른 거래 계정에? 어떻게 대응해야 합니까? 실제 계정에서 실행할 특별한 절차가 필요합니까?
    저는 많은 트레이더가 단순한 관심 부족, 즉 실제 계정에 대한 우발적 연결, 실행 중인 Expert Advisor로 터미널을 시작하거나 개방형 포지션이 있는 상태에서 Expert Advisor 매개변수를 변경함으로써 발생하는 손실을 "자랑"할 수 있다고 생각합니다. 이러한 오류는 알고리즘에서 간단히 고려하기만 하면 방지할 수 있습니다.
    예를 들어 다음과 같습니다:
    • 실제 계정에서 EA를 실행할 때 차트에 트레이딩을 허용하는 버튼을 생성해야 합니다. 작업은 사용자가 클릭한 후에 시작해야 합니다.
    • 계정을 변경할 때 EA는 이 사실을 사용자에게 알리고 새 실행이 실행될 때까지 작업을 중지해야 합니다(대안 - 작업을 계속해야 하는지 여부를 사용자에게 묻습니다).
    • 외부 매개변수가 변경되었을 때 EA에 의해 열린 포지션이 있는 경우(또는 설정된 주문), EA는 설계된 알고리즘에 따라 포지션(주문)을 수정해야 합니다. 예를 들어, StopLoss 값이 변경되었을 경우, 열려 있는 모든 포지션의 Stop Loss(손실 중지)를 수정해야 합니다. 그러나 아직 후행 정지에 의해 이동되지 않았을 때만 그렇습니다. 여기서는 범용 레시피를 제공할 수 없으며 각 매개변수를 별도로 설명해야 합니다. 또한, 서로 다른 전략의 경우 동일한 파라미터의 변경에 대해 서로 다른 반응이 있을 수 있습니다.
  3. 유사한(또는 동일한) 매개 변수를 사용하여 프로그램 복사본을 여러 개 실행할 필요가 있습니까?
    Expert Advisor가 여러 개의 표시기 복사본을 실행하고 하나의 매개 변수 값만 변경하여 차트에 그래픽 개체를 배치하는 경우, 이 매개 변수에서 생성된 모든 개체에는 이 매개 변수의 값이 포함된 이름이 있어야 합니다. 그렇지 않으면 다음 실행 때마다 이전 매개 변수의 결과가 왜곡됩니다.
    Expert Advisor의 경우 일반적으로 ExpertId 또는 MagicNumber라는 특수 매개 변수가 추가되어 다른 매개 변수 세트로 EA의 복사본을 실행할 수 있습니다. 어떤 설정 및 어떤 조합에 대해 프로그램을 동시에 실행할 수 있는지 작업에서 지정합니다. 모든 상황은 프로그래머가 직접 제공하지 않습니다.
  4. 동일한 계정에 연결된 다른 터미널로 EA의 마이그레이션을 어떻게 구현해야 합니까? Expert Advisor가 일부 데이터를 터미널의 파일이나 전역 변수에 저장할 수 있습니까?
    대부분의 프로그램의 경우 중간 정보를 저장할 필요가 전혀 없으며, 해당 알고리즘은 통화 쌍의 과거 데이터 및 계정 거래 기록을 기반으로 합니다(이 데이터는 사용자의 계정에 연결된 모든 터미널에서 얻을 수 있음). 그러나 일부 정보를 파일에 저장하고 다음 출시 시 검색해야 하는 경우가 많습니다. 이를 통해 실행 속도를 높일 수 있으며, 그렇지 않으면 실행 가능한 프로그램을 만들 수 없는 경우도 있습니다. 프로그래머에게 EA 이전 프로세스에 대한 특별한 요구 사항을 알리거나, 귀하의 경우를 위해 특별히 이 프로세스를 설명해 달라고 요청하십시오.

유감스럽게도 모든 미묘한 것들은 제공될 수 없습니다. 예를 들어, EA 슬롯에서 계산한 포지션(다른 EA에서 열린 포지션들 때문에)을 열기에 충분한 여유가 없는 경우 신호를 건너뛰거나 더 작은 볼륨으로 열어야 합니다.

다른 EA가 거래 컨텍스트(MetaTrader 4에만 해당)를 사용하는 경우 EA는 거래할 수 없습니다. 그리고 최대 미결 주문 수 제한이 있으면 새 주문을 설정할 수 없습니다. 그러나 이러한 인스턴스는 대부분 알고리즘에 제공되므로 상황이 악화되지는 않습니다. 경험을 쌓으면 각각의 새로운 버전의 EA가 더 우수하고 안정적일 것입니다.


5.4. 어떻게 하면 이해를 간소화할 수 있을까요?

정보가 잘 설명되면 훨씬 쉽게 소화됩니다.

간단한 전략을 이해하려면 텍스트 설명이 있으면 충분하지만, 시스템이 특이하고 복잡한 경우 프로그래머를 돕기 위한 몇 가지 단계를 수행하십시오.

  1. 작업에 몇 개의 스크린샷을 첨부하고 알고리즘의 여러 점(신호 발생 시간, 후행 중지 작업 시연, 보류 중인 순서 설정 등)을 보여줍니다. 알고리즘 텍스트에 부분적으로 중복되더라도 주저하지 말고 간략한 설명이 포함된 그래프를 제공합니다.
  2. 작업 텍스트를 포멧합니다.: 다른색을 사용합니다. 그리고 쇼트 포지션, 외부 변수 (당신이 구성하길 원하는 매개 변수)를 하이라이트 해주고, 중요 포인트 그리고 공식들을 표시합니다. 텍스트를 읽는 것이 더 쉬워질 뿐만 아니라, 텍스트 탐색도 훨씬 쉬워집니다.
  3. 예시를 곁들이세요. 구체적인 숫자로 표시된 모든 공식은 훨씬 더 명확해집니다.
  4. 번호를 매기세요. 알고리즘의 문단과 하위 문단에 번호를 매겨 토론 중에 항상 참조할 수 있도록 합니다. "포지션 2.1.4의 오류 - 시리즈의 두 번째 롱 포지션에 대한 Stop Loss 레벨이 계산되는 곳의 오류보다 훨씬 짧고 정확합니다.


5.5. 문자, 음성, 비디오?

문자, 음성, 비디오?저는 고객이 저에게 작업을 보내는 대신, 120페이지에 달하는 포럼에 관한 전략 토론 링크, 70페이지 분량의 책 또는 1시간 30분 분량의 비디오 강의를 보내줄 때 항상 재밌습니다. 사실 프로그래머들은 세상의 모든 시간을 가지고 있고, 관리할 것도 없습니다. 그들은 이것을 연구하는데 시간을 들일 것입니다... 이 정보의 유용한 부분이 페이지 알고리즘의 절반에 맞거나 이 설명을 공식화하는 것이 불가능하다는 사실은 어느 누구와도 관련이 없는 것 같습니다.

이 자료를 이미 조사하셨다면, 이 자료가 무엇에 관한 것인지, 전략이 어떻게 작동할지에 대한 좋은 생각이 있다면, 알고리즘을 공식화하기만 하면 됩니다. "낭비"(대개 정보의 80%로 구성됨), 어색한 일시 중지, 산만한 토론, 밝은 미래에 대한 이야기, 테스트 결과의 관찰을 제거하면, 신청자/개발자는 프로그램을 작성하는 데 필요한 내용만 받게 됩니다.

하지만 책이나 강의 내용이 무엇인지 아직 모르시더라도, 이것이 완전한 자동 거래 시스템을 만들기에 충분한지 확신이 안 든다면, 질문을 다르게 공식화하세요! 당신이 전략을 가지고 있을 때는, "이 전략을 기반으로 Expert Advisor를 작성하는 데 비용이 얼마나 드나요?"라고 물을 수 있습니다.

그리고 우리의 경우엔 일정량의 정보만 있을 뿐입니다. 품질(정식화, 세부사항 등)은 아직 알려지지 않았습니다. 그러니 프로그래머가 "아이디어"를 위해 이 자료를 공부하는 데 관심이 있는지, 없다면, 이 "긴 토론"에서 거래 시스템에 대한 완전한 규칙을 작성하는 데 얼마를 받을 것인지 자유롭게 물어보세요. 저를 믿어보세요, 질문의 형식 자체로도 지원자/개발자와의 관계를 설명할 수 있습니다.

모든 프로그래머가 여러 페이지의 논문을 읽거나 일부 전략에 대한 토론에 관심이 있는 것은 아닙니다. 검증이 보류 중인 아이디어를 충분히 보유하고 있기 때문에 새로운 정보는 전혀 필요하지 않습니다.

누구나 좋아하는 영화 대신 추세선의 구성과 시스템에서의 역할에 대해 이야기하는 강사의 모습을 보고 싶어하지는 않을 것입니다. 이것은 종종 꽤 지루하고, 더 나쁜 것은 공식화하기가 어렵습니다. 어떤 순간은 문자 그대로 자신을 발명해야 하고(가장 논리적인 설명 찾기), 어떤 것은 실험을 통해 추측하거나 선택해야 하며, 어떤 문제에 대해서는 추가 정보를 찾고 연구해야 합니다. 일반적으로 프로세스는 상당히 힘들고 창의적입니다. 과소평가하지 마십시오.

스카이프나 전화로 소통하는 것을 좋아하는 사람들을 따로 언급하고 싶습니다. 가장 자주, 여러분의 전략을 구두로 묘사하고 싶은 이유는 추가 조치를 취하는 것을 꺼리기 때문일 뿐만 아니라(키보드에 타이프를 치는 것), 저자가 전략에 대해 이해하지 못했기 때문입니다.

일련의 거래 규칙을 구성하는 것은 불가능하며, 저자의 추측과 직관에 근거한다면 정서적이고 지저분한 스토리를 짜는 것은 매우 어렵습니다. 그리고 긴 비디오 강의의 경우처럼 프로그래머는 프로그램을 작성하기 위해서는 알고리즘이 필요하기 때문에 항상 이러한 "계시"를 듣는 데 관심이 있는 것은 아닙니다.

현대 기술의 중요성을 과대평가하기는 어렵습니다. 음성이나 비디오로 통신할 때, 모니터에서 동료에게 이미지를 보여줌으로써 공통 언어를 찾기가 훨씬 쉽습니다. 그러나 종이에 생각을 공식화하고 이미 준비된 텍스트에 대한 사소한 설명만으로 본격적인 과제를 준비할 수 있다면 대화는 훨씬 더 생산적일 것입니다.

위에서 내린 결론은 다음과 같습니다:

설명에서 명확한 전략 알고리즘을 그릴 수 있는 경우 직접 그려서 프로그래머에게 필요한 정보만 제출합니다.
공식화 과정이 매우 복잡하고 많은 작업이 필요한 경우 프로그래머가 무료로 공식화 작업을 수행할 것이라고 기대하지 마십시오.

이제 작업이 무엇인지 잘 이해하셨기를 바라며, 특정 실행자를 선택하는 것에 대해 이야기를 나눌 수 있기를 바랍니다.


6. 지원자/개발자 선택

실행자 선택프로그래머를 선택하는 문제는 이 선택이 생기자마자 매우 중요해졌습니다. 모든 고객은 최대한 적은 비용으로 최고 품질의 결과를 얻기를 원합니다. 이상적인 것은 최고의 전문가가 소프트웨어를 작성하는 동시에 무료로 소프트웨어를 작성하는 것입니다. 이것은 값비싼 전문가와 초보자를 통해 조율하고 노력하는 것이 이상적입니다.

첫 번째 작업을 구현할 개발자를 선택할 때 다음 기준을 평가하는 것이 좋습니다:

  1. 퍼블릭프로그램 작성의 경험: MQL4/MQL5
    만약 EA 개발자가 일주일 전에 시장에 진입했다면 그도 일주일 후에 떠날지도 모릅니다. 물론 2년 경력의 "프로"도 갑자기 사라질 수 있지만, 그럴 확률은 훨씬 낮습니다. 개발자와 소통이 끊기면 새 주문을 만들 능력을 위협받을 뿐만 아니라, 또한:
    • 지원 부족(오류 없는 소프트웨어는 없고 제대로 테스트되지 않은 프로그램만 있을 뿐)의 위협도 있습니다;
    • 최소한의 개선이라도 해야 하는 복잡성이 있습니다 (다른 사람의 코드는 항상 작업하기가 더 어렵기 때문에 다른 개발자는 사소한 변경에도 상당한 양을 요구할 수 있습니다.)

  2. 실제 고객의 피드백.
    실천은 진리의 기준입니다. 사람이 실제 사람들이 사용하는 프로그램을 썼다면 작동한다는 뜻입니다. 그렇지 않았다면, 당신은 항상 그의 전문성 부족을 드러내는 피드백에 부딪혔을 것입니다.
    프로그래머의 서비스를 이미 사용한 적이 있는 트레이더 친구가 있다면 조언을 구하세요. 적어도 그렇게 하면 기대 결과를 얻을 수 있을 것입니다.

  3. 온라인 가용성.
    누구도 편지에 대한 답장을 며칠 동안 기다리는 것을 좋아하지 않습니다. 그리고 어떤 사람들에게는 2시간도 너무 길어요.
    사용자가 자주 "온라인" 상태인지, 메시지에 빠르게 응답하는지 여부를 관찰합니다. 미래에는 이렇게 하면 엄청난 시간을 절약할 수 있습니다.

  4. 소통 방법.
    오늘날 인터넷을 통해 통신하는 방법에는 이메일, 메신저, 음성 및 비디오 채팅 프로그램, 인터넷 리소스에서의 개인 메시지 등 다양한 방법이 있습니다. 누군가는 한 가지 방법에 익숙하고 누군가는 다른 방법에 익숙합니다. 의사소통을 잘 하기 위해서는 두 분 다 편한 방법을 선택하셔야 합니다. 프로그램을 하나 더 설치하는 데는 문제가 없지만, 일부 사용자는 이 작업이 필요하지 않다고 판단하기 때문에 원하지 않을 수 있습니다.
    라이브 통신이 필요하면(즉, Skype를 통해) 개발자에게 문의하여 준비가 되었는지 확인하십시오. 특히 전화 통화를 원하거나 직접 만나고 싶다면 미리 준비하세요. 모든 사람이 "오프라인"으로 업무를 수행하는 것에 동의하지는 않을 것입니다.

  5. 협력 조건.
    주문하기 전에 모든 협력 조건을 확인해야 합니다:
    • "직업" 서비스를 이용할 수 있습니까? 이 질문에 대한 긍정적인 답변은 대부분의 다른 질문을 무효화합니다.
    • 선결제가 필요합니까, 그렇다면 얼마인가요?
    • 프로그램은 어떻게 점검됩니까? 데모 버전을 받아보시겠습니까?
    • 프로그램의 소스 코드를 가져오시겠습니까? 만약 그렇다면, 언제입니까 - 결제 완료 후입니까, 아니면 바로 가져오시겠습니까?
    • 프로그램 배포 권한은 누가 소유합니까?
      프로그래머의 무결성을 확인하는 것은 성공할 것 같지는 않지만, 이 점을 공식적으로 명확히 하는 것은 가치가 있습니다. 프로그래머가 고객 EA나 알고리즘을 판매했다는 의심을 반복적으로 받는다면, 그의 명성은 훨씬 멀어져 갈 것입니다.
    • 기술 지원 기간은 어떻게 됩니까? 오류 수정(알고리즘과의 불일치)이 무료로 이루어집니까? 작은 개선에는 비용이 얼마나 들까요?
    이 모든 뉘앙스는 금융 관계가 시작되기 전에 명확히 해야 하는데, 그 이후에는 더 하기 힘들 것이기 때문입니다.

  6. 결제 방법.
    개발자는 어떤 전자 결제 시스템을 사용합니까? 결제는 은행 이체나 신용카드로 할 수 있나요?
    지불 통화에 대한 요구 사항을 반드시 확인하세요 - 인터넷은 국제적이므로 모든 사람이 러시아 루블을 필요로 하지는 않을 것입니다.

  7. 캐릭터.
    단일 협업이 아니라 지속적인 파트너를 찾고 있다면 각자의 캐릭터에 적합한지 알아보세요. 서로 어울리고, 상대방의 요구 사항을 표시하며, 자신의 세계관, 원칙 및 약점을 설명합니다(자기 비판이 허용하는 범위까지).
    대안 - 처음에 주문을 하고 프로세스의 모든 항목을 분류합니다. 하지만 첫 번째 시도와는 거리가 먼 파트너가 발견될 수도 있습니다.

  8. 작업비용.
    마지막이지만 가장 중요하죠. 10달러로 자신의 작품을 소중히 여기는 남자에게 진지한 프로그램을 써줄 것이라고는 믿지 않지만, 1000달러도 지불할 의사가 없기 때문에 그 사이에서 무언가를 선택해야 합니다. 반면에 가격은 실행자의 전문성을 나타내며, 다른 한편으로는 그의 흥미와 업무량에 따라 달라집니다. 5달러에 "메르세데스"를 기대하지 말고 "뷔익"에 대해 과다하게 지불하지 마세요.


우리는 "프로그래머 목록"(일부 준비된 전문가 목록과 연락처 정보 및 고객 리뷰)이라는 주제를 반복적으로 제기해 왔습니다. 이러한 목록을 작성하려는 시도는 여러 번 있었습니다 - 직접 제가 "트레이더를 위한 Expert Advisor의 주문 메뉴얼"이라는 mql4.com 기사에서, 독립 포럼 사용자 및 이 주제에 무관심한 사람들에 의해서 말이죠. 그리고 첫 번째 주문을 선정하는 데 정말 도움이 될 수 있습니다.

그러나 몇 년 전과 마찬가지로 포괄적이고 지속적으로 업데이트되는 목록은 없습니다. 우리가 힘을 합쳐 다시 한 번 만들어 볼 수는 있지만, 이 아이디어에 대한 논의는 이 기사의 범위를 벗어난다고 생각합니다.


7. 사기를 당하지 않도록 자신을 방어하기

제각기 사람들이 다르고 상황도 다릅니다. 가장 신뢰할 수 있는 EA 개발자도 작업을 완료하지 못하고 사라질 수 있으며, 가장 책임 있는 사람도 상황에 따른 압박으로 약관을 위반할 수 있습니다. 불필요한 경우에는 모험을 하지 말고 "직업" 서비스를 이용하십시오!

자동 거래 전략의 개발에 따라 2010년 중반에 MetaQuotes 소프트웨어 회사는 고객과 개발자 간의 관계 구성을 주요 목적으로 하는 새로운 서비스를 출시했습니다. 6개월이 지난 지금도 이 서비스는 충분히 인기가 있으며, 많은 거래자와 프로그래머들이 매일 사용하고 있습니다.

이 서비스에 대한 자세한 내용은 포럼의 공식 발표사용법에 대한 기사를 참조하십시오.

MQL5.community의 "직업" 서비스와 다른 웹 사이트의 유사한 리소스 및 서비스 대다수의 주요 차이점은 보안입니다. 고객과 프로그래머는 공동 작업 기간 내내 서로의 소홀한 행동으로부터 안전합니다. 분쟁이 발생할 경우, MetaQuotes Software Corp.중재자 역할을 맡을 준비가 되어 있습니다.

서비스의 모든 철저함과 형식에도 불구하고, 그것을 사용할 때 여전히 문제가 발생합니다. 몇 가지 간단한 규칙을 따르면 이러한 문제를 방지할 수 있습니다:

  1. 새 주문을 처리하거나(거래자인 경우), 구현 제안을 하기 전에(프로그래머인 경우) 서비스 약관을 검토하십시오. 부주의한 읽기와 규칙에 대한 이해 부족으로 인해 많은 분쟁이 발생합니다. 만약 어떤 요점이 불분명하거나, 혹은, 독자 분께서 생각하기에 모호하게 해석될 수 있다면, 특별 지부에서 몇 가지 명확한 질문을 하세요 - 아마도, 독자 분의 질문은 규칙을 더 간단하고 명확하게 만들 것입니다.

  2. Expert Advisor를 주문할 때는 명확한 알고리즘을 준비합니다.
    이 기사에는 이러한 측면에 대한 몇 개의 장이 있으므로 여기서는 반복하지 않겠습니다.

  3. 적절한 가격과 적절한 작업 타이밍을 가진 적절한 지원자/개발자를 선택하고 "무료 치즈"의 유혹을 받지 마십시오. 그런 것은 없습니다.
    개발자의 포트폴리오를 보고 완료된 작업에 대한 피드백을 읽어보십시오. 그가 다른 일로 너무 바쁘지 않도록 하세요. 아마도 이것이 당신의 주문을 제시간에 끝내지 못하게 할 것입니다.
    그리고 구현 시간은 2단계(요구 사항 협상)를 완료한 후 계산됩니다. 프로세스 세부 사항은 규제되지 않으며 작업 일정은 사용자와 프로그래머에게만 달려 있습니다.

  4. 모든 논의를 통해 "직업" 서비스의 메시지를 사용하여, 차익거래 케이스에 사용할 수 있습니다.
    ICQ 또는 Skype를 통해 통신하는 경우에도 직업 서비스의 코멘트에 있는 모든 주요 순간을 "문서화"해 보십시오.

  5. 고객 또는 실행자로서 관련 없는 작업 업데이트 추적: SMS 알림을 받으려면 정기적으로 개인 메시지를 살펴보고, 전자 메일로 알림을 보내도록 허용하거나, 프로필에 휴대폰 번호를 추가합니다.
    워크플로우를 추적하지 않을 경우 귀하에게 유리한 것이 아니라 본인 없이 워크플로우가 완료될 수 있습니다. 만료일에 상대방이 강제로 워크플로우를 종료할 수 있습니다.

그렇지 않은 경우, 중간자 없는 작업과 다를 바 없습니다. 다만 개발자가 프로세스를 구성하기 위해 "직업" 서비스에 소액의 수수료를 지불한다는 점이 다릅니다.


8. 결과 확인

우리의 여정의 마지막 단계는 완료된 작업을 확인하는 것입니다. 프로그램이 승인된 알고리즘에 따라 작동하도록 하려면 신중하고 철저하게 테스트해야 합니다.

  1. 서로 다른 조건(다른 유형의 계정, 통화 쌍, 시간 프레임, 다른 매개 변수 조합)에서 테스트합니다. 프로그램은 모든 상황에서 동일하게 올바르게 작동해야 합니다(알고리즘에 "관용성"이 명확하게 지정되지 않았다면).

  2. 전략 테스터 뿐만 아니라, 데모 계정에서도 프로그램을 확인하십시오. 전략 테스터를 사용하면 명백한 오류를 신속하게 찾을 수 있으며, 기록 간격을 달리하여 전략을 확인할 수 있으며, 온라인 테스트에서는 실제 오류에 가까운 조건에서 프로그램이 어떻게 작동하는지 확인할 수 있습니다. 프로그램에 대한 "분산"을 만들 수 있습니다. 클라이언트 터미널을 다시 시작하고, 다른 계정에 연결하며, 다른 Expert Advisor 또는 표시기를 실행하고, 작업 중에 설정을 변경할 수 있습니다. 이 단계에서는 프로그램 동작의 특징을 서로 다른 상황에서 배우는 것이 좋습니다.

  3. Expert Advisor의 작업을 시스템 수익성에 대한 기대보다는 승인된 알고리즘과 비교하십시오. 확인 과정에서 알고리즘에 오류가 있는 경우 필요한 내용을 변경하고 개발자에게 Expert Advisor 수정을 요청하십시오. 그러나 이러한 작업을 무료로 수행할 것이라고는 기대하지 마십시오(특히 개선이 유의한 경우). 이 오류는 그의 잘못이 아닙니다.

문제가 발견되면 지원자/개발자에게 보고합니다.

  1. 프로그램에서 잘못 처리되거나 잘못된 작업이 시작되는 알고리즘 부분을 표시합니다.
    논리를 위반하는 구체적인 위치를 찾기 어렵다면 자신의 말로 문제를 설명하되 알고리즘에서 너무 벗어나지 않도록 하십시오.

  2. 테스트가 수행된 조건을 설명합니다:
    • 프로그램 매개변수가 포함된 세트 파일을 첨부합니다(Expert Advisor의 "옵션" 창의 "저장" 버튼);
    • 차트의 사용된 통화 쌍과 기간을 지정합니다;
    • 터미널이 연결된 서버 주소와 계정 유형(데모, 실제, 콘테스트 또는 기타)을 지정합니다;
    • 클라이언트 터미널의 빌드 버전("도움말" 메뉴 - "정보")을 지정합니다.
    • 전략 테스터에서 선택한 경우 전략 테스터의 설정(테스트 기간, 실행 유형 및 모드, 초기 보증금, 레버리지)을 지정합니다.

  3. 문제를 설명하는 스크린샷을 첨부합니다.

  4. 문제가 포지션 개설 또는 폐쇄와 관련된 경우 전략 테스터 보고서에서 발췌한 내용을 복사하거나 계정 기록에서 몇 줄 복사하십시오.

  5. Expert Advisor의 로그 파일을 첨부합니다(클라이언트 터미널의 "전문가" 탭 또는 전략 테스터의 "져널" 탭에서 "오픈" 선택).

프로그래머가 더 많은 정보를 가질수록 문제를 더 쉽게 찾고 해결할 수 있습니다. 이 모든 단계별 설명이 끝난 후에 당신이 원하는 것을 얻기를 바랍니다. 하지만 트레이더의 바쁜 평일로 서둘러 돌아가지 말고, 당신의 경험을 다른 사람들과 공유하세요.


9. 피드백 제공

피드백 제공

MQL은 성장하는 커뮤니티이며, 여러분은 그 일부입니다.

프로그래머를 선택하고 첫 번째 작업 사양을 어떻게 준비했는지 기억하십시오. 이 과정에서 어떤 도움이 되었습니까? 경험을 공유하세요!

명확한 알고리즘을 작성하고 본보기가 되도록 합니다. 신규 사용자들이 전략을 공식화하는 것을 도와주세요, 아니면 그것이 불가능하다는 것을 보여주세요 - 희망의 붕괴로부터 다른 성배를 찾는 사람을 구해주세요.

프로그래머에 대한 경험을 말씀해주세요, 프로그래머의 장점과 단점을 나타내고, 가장 좋았던 점과 문제점은 무엇이었는지 설명해주세요. 10분 정도 걸리겠지만 거래하는 동료 트레이더들의 시간과 비용을 크게 절약할 수 있을 겁니다.

저는 건설적인 논평에 긍정적인 태도를 가지고 있으며, 이 기사에 대한 어떠한 비판도 감사히 받겠습니다. 일부 섹션에 대한 작업이 필요하다고 생각하거나, 무언가가 누락되었거나, 반대로 추가 작업이 있다고 생각되면, 이에 대해 말씀해 주십시오.

이 기사는 직무 설명을 작성하기 위한 도구로 구상되었지만, 실제로 많은 관련 주제를 다루었습니다. 읽기 쉽고, 필요한 모든 정보를 공개하고, 많은 도움이 되었으면 합니다. 지금까지 읽으셨다면, 몇 분만 시간을 더 내어 피드백을 남겨주시기 바랍니다. 귀하의 의견 덕분에 이 기사는 더 나아질 수 있습니다.

동료 Expert Advisor 개발자들로부터 회의적인 반응을 예상하여, 이 기사는 MetaQuotes Software Corporation의 요청에 의해 작성되었음을 알려드립니다. 저의 서비스를 홍보하는 것이 아니라 고객과 프로그래머의 문화 관계를 돕는 것이 목적입니다.

진정한 전문가로서 이 계획을 지지해 주시고, 우리의 전반적인 비즈니스를 한 단계 끌어올리는 데 도움이 되기를 바랍니다. 저는 귀하의 댓글과 의견을 기다리고 있습니다.


결론

자동 거래는 계속해서 새로운 동력을 얻고 있습니다. 어떻게, 어디로 향해 갈지는 우리에게 달려 있습니다.

이제 관계의 문화를 조성해 봅시다. 그러면 여러분은 곧 고품격 Expert Advisors의 형태로 보상을 받게 될 것입니다.

MetaQuotes 소프트웨어 사를 통해 러시아어가 번역됨.
원본 기고글: https://www.mql5.com/ru/articles/235

MQL5 마법사에 나만의 Expert Advisor 만들기 MQL5 마법사에 나만의 Expert Advisor 만들기
이제는 프로그래밍 언어를 몰라도 매매 봇을 만들 수 있게 되었습니다. 옛날에는 프로그래밍을 할 줄 모르면 자신의 매매 전략을 도입하여 봇을 만들기가 무척 어려웠습니다만, MQL5 마법사가 도입되면서 상황은 급반전하였습니다. 이제 신규 트레이더들은 프로그래밍 경험이 없다고해서 두려워할 필요가 없어졌습니다. 새로운 MQL5 마법사와 함께라면 Expert Advisor를 짜는데에 프로그래밍 경험은 필요 없습니다.
기술 분석: 어떻게 분석합니까? 기술 분석: 어떻게 분석합니까?
이 글은 표시기 다시 그리기, 다중 시간대 표시기, 일본 캔들스틱 시세 표시에 대한 저자의 의견을 간략히 설명합니다. 이 문서에는 프로그래밍 관련 내용이 없으며 일반 문서입니다.
보조 인디케이터 메모리 소모량 감소시키기 보조 인디케이터 메모리 소모량 감소시키기
인디케이터가 다른 인디케이터들의 값을 받아와 계산하는 경우 많은 메모리량이 필요합니다. 본 문서에서는 보조 인디케이터를 사용할 때에 소모되는 메모리량을 감소시키는 다양한 방법에 대하여 논할 것입니다. 메모리를 절약하면 클라이언트 내에서 동시에 이용 가능한 화폐쌍, 인디케이터, 전략을 늘려 더욱 ㅏㄴ은 여지를 줍니다. 이는 매매 포트폴리오의 안정성을 증진시킵니다. 이러한 간단한 관리만으로도 당신의 컴퓨터 리소스가 자산으로 환원될 수 있습니다.
기술 분석: 무엇을 분석해야 합니까? 기술 분석: 무엇을 분석해야 합니까?
이 자료에서는 MetaTrader 클라이언트 터미널에서 사용할 수 있는 견적 표현의 몇 가지 특성을 분석하려고 합니다. 기사는 일반적이고 프로그래밍과는 무관합니다.