Friday 9 March 2018

다중 통화 거래 시스템


복수 통화 다중 시스템 전문가 고문 작성.


소개.


나는 하나 이상의 거래 기호를 거래하고 여러 전략을 사용하는 꽤 많은 상인이 있다고 생각한다. 이 접근법은 잠재적으로 이익을 증가시킬뿐만 아니라 효율적인 돈 관리를 통해 상당한 인출 손실을 최소화 할 수 있도록합니다. Expert Advisor를 만들 때 프로그램 전략의 효율성을 확인하는 첫 번째 단계는 최적의 입력 매개 변수를 결정하기위한 최적화입니다.


매개 변수 값을 확인하면 전문 조언자가 기술적으로 거래 준비가 완료됩니다. 그러나 그것은 하나의 중요한 질문에 답을 남기지 않을 것입니다. 상인이 자신의 모든 전략을 하나의 전문 고문으로 구성 할 수 있다면 테스트 결과는 어떻습니까? 몇 가지 상징이나 전략에 대한 축소가 어느 시점에서 겹칠 수 있으며 엄청난 총 축소 또는 마진 콜을 초래할 수 있다는 사실은 때때로 불쾌한 놀라움으로 다가올 수 있습니다.


이 기사에서는이 중요한 질문에 대한 답변을 찾을 수있는 다중 통화 다중 시스템 전문가 고문을 만드는 개념을 소개합니다.


1. 전문가 고문의 구조.


일반적으로 Expert Advisor의 구조는 다음과 같습니다.


그림 1. 다중 통화 다중 시스템 전문가 고문의 구조.


보시다시피, 프로그램은 for 루프를 기반으로합니다. 각 전략은 각 반복이 각 기호를 개별적으로 거래하는 루프에서 배열됩니다. 여기서 루프 수를 무제한으로 조정할 수 있습니다. 중요한 것은 컴퓨터가 그러한 프로그램을 "처리"할 수있는 충분한 자원을 확보하는 것입니다.


MetaTrader 5에는 거래 된 기호 하나당 하나의 위치 만있을 수 있습니다. 이러한 위치는 이전에 실행 된 많은 매수와 매수의 합계를 나타냅니다. 따라서 하나의 기호에 대한 다중 전략 테스트의 결과는 동일한 기호에 대한 동일한 전략의 개별 테스트 결과의 합과 동일하지 않습니다.


Expert Advisor의 구조를 면밀히 고려하기 위해 두 가지 전략을 취할 것입니다. 각 전략은 두 가지 기호를 교환합니다.


구매 : 낮은 가격을 기준으로 계산 된 Bollinger Bands 지표의 낮은 밴드에 도달하는 가격을 묻습니다.


마감 : 입찰가는 고가를 기준으로 계산 된 볼링거 밴드 지표의 하위 밴드에 도달합니다. 팔다 : 입찰가는 고가를 기준으로 계산 된 볼링거 밴드 지표의 상단 밴드에 도달합니다.


마감 : 저렴한 가격을 기준으로 계산 된 Bollinger Bands 지표의 상단 밴드에 도달하는 가격을 묻습니다. 제한 사항 : 주어진 바에서 하나의 거래 만 실행할 수 있습니다.


구매 : 이전 막대는 약세 (가까운 & lt; 개방)이고 가격은 이전 막대의 최고에 도달합니다.


마감 : 손절매 또는 이익 실현. 판매 : 이전 막대는 강세 (닫히고 & gt; 열림)하며 입찰 가격은 이전 막대의 낮음에 도달합니다.


마감 : 손절매 또는 이익 실현. 제한 사항 : 주어진 바에서 하나의 거래 만 실행할 수 있습니다.


Expert Advisor가 테스트되거나 거래 될 심볼에 대한 새로운 틱 (tick)과 독립적이므로 OnTimer () 함수를 사용하여 다중 통화 모드로 거래하는 것이 좋습니다.


이를 위해 Expert Advisor를 초기화 할 때 EventSetTimer () 함수를 사용하여 프로그램 계산 호출에 대한 이벤트 생성 빈도를 지정하고 초기화가 완료되면 EventKillTimer () 함수를 사용하여 터미널에 이벤트 생성을 중지하도록 알립니다.


EventSetTimer () 대신 EventSetMillisecondTimer ()를 사용할 수도 있습니다. 빈도는 밀리 초 단위로 정확하게 설정되어 있지만 너무 자주 프로그램 계산을 호출하여 잘못 사용해서는 안됩니다.


계정, 위치 및 기호 설정, 거래 기능에 액세스하기 위해 CAccountInfo, CPositionInfo, CSymbolInfo 및 CTrade 클래스를 각각 사용합니다. Expert Advisor에 포함시켜 보겠습니다.


Expert Advisor는 for 루프를 기반으로하므로 외부 매개 변수에 대한 배열을 만들어야합니다. 먼저 각 전략의 기호 수와 동일한 상수를 만듭니다.


그런 다음 외부 매개 변수를 만듭니다. 상수를 사용하여 복사 할 배열의 크기를 결정합니다. 또한 표시기 핸들 및 기타 전역 변수를 만듭니다.


전략 А의 한 심볼에 대한 예는 다음과 같습니다.


특정 심볼에 대한 거래를 금지 할 가능성을 갖기 위해 우리는 for 루프의 맨 처음에 놓일 부울 변수 IsTrade_A0을 만들었습니다.


2. 전문가 고문의 초기화.


먼저 모든 전략에 필요한 값을 얻습니다. 이점. 레버리지는 거래 계정에 적용되고 전략이나 기호와 아무 관계가 없기 때문에 값을 배열에 복사 할 필요가 없습니다.


그런 다음 외부 변수를 배열에 복사합니다.


외부 매개 변수가 다른 매개 변수로 변환해야하는 유형으로 정의 된 경우, 이는 배열에 복사 할 때보다 편리하게 수행 할 수 있습니다.


이 경우 BBPeriod_A0은 사용자가 음수 값을 설정하지 못하도록 uint로 생성 된 것을 볼 수 있습니다. 여기서는 int로 변환하여 int로 생성 된 배열로 복사합니다. 그렇지 않으면 표시기 핸들에 uint 유형 매개 변수를 삽입하려고하면 컴파일러에서 경고를 표시합니다.


거래 된 심볼이 마켓 워치에서 사용 가능한지와 한 전략 내에서 두 번 이상 사용되었는지 여부를 더 살펴 보겠습니다.


기호가 올바르게 선택 되었다면 각 기호에 대한 입력 매개 변수의 오류를 확인하고 표시기 핸들을 만들고, 로트 계산에 필요한 데이터를 얻고, 필요한 경우 주어진 전략에 따라 다른 작업을 수행하십시오.


우리는 위에서 언급 한 액션을 for 루프 안에 구현할 것이다.


그런 다음 CTrade 클래스의 Trade_A 개체를 사용하여 전략 A의 거래 작업에 대한 매개 변수를 설정합니다.


동일한 절차가 각 전략에 대해 반복된다.


외부 변수를 배열에 복사하십시오.


마지막으로 여러 전략에서 하나의 동일한 기호가 사용되는지 확인하는 것이 좋습니다 (두 가지 전략의 예는 아래에 제공됨).


3. "For"루프 거래.


OnTimer () 함수 내 for 루프의 프레임 워크는 다음과 같습니다.


단일 전략을 기반으로하는 단일 기호 전문가 고문이 모든 후속 계산을 중단해야하는 조건을 갖는 경우 우리는 반환 연산자를 사용합니다. 이 경우에는 현재 반복을 종료하고 다음 심볼 반복으로 진행하면됩니다. 이를 위해 continue 연산자를 사용하는 것이 가장 좋습니다.


모든 후속 계산의 종료 조건이 포함 된 for 루프가있는 전략을 추가하여 다중 전략 Expert Advisor를 향상시키려는 경우 다음 패턴을 사용할 수 있습니다.


for 루프의 프레임 워크를 만든 후에는 다른 EA의 코드를 삽입 한 다음 일부 변수를 배열 요소로 대체하기 만하면됩니다.


예를 들어 사전 정의 된 _Symbol 변수를 Symbol_A [i] 또는 _Point를 Point_A [i]로 변경합니다. 이 변수의 값은 주어진 기호의 전형적인 값이므로 초기화시 배열에 복사됩니다.


예를 들어 표시기 값을 찾으십시오.


구매 포지션 마감을 구현하기 위해 다음 코드를 작성합니다.


구매 위치 열기 :


타이머 이벤트 생성을 종료하고 초기화 취소시 표시기 핸들을 삭제해야합니다.


4. 시험 결과.


Expert Advisor가 준비되면 각 전략과 심볼을 개별적으로 테스트하고 모든 전략과 심볼을 동시에 거래 할 때 테스트 모드에서 얻은 결과와 테스트 결과를 비교합니다.


사용자가 이미 입력 매개 변수의 최적 값을 식별했다고 가정합니다.


Strategy Tester의 설정은 다음과 같습니다.


그림 2. Strategy Tester 설정.


전략 A에 대한 검색 결과, EURUSD :


그림 3. 전략 A, EURUSD에 대한 테스트 결과.


전략 A, GBPUSD에 대한 결과 :


그림 4. 전략 A, GBPUSD의 테스트 결과


전략 B, AUDUSD에 대한 결과 :


그림 5. 전략 В, AUDUSD에 대한 테스트 결과.


전략 B, EURJPY 결과 :


그림 6. 전략 В, EURJPY에 대한 테스트 결과.


모든 전략과 기호에 대한 테스트 결과 :


그림 7. 모든 전략과 기호에 대한 테스트 결과


결론.


결과적으로, 우리는 귀하의 전략을 사실상 배치 할 수있는 다중 통화 다중 시스템 전문가 고문의 편리하고 간단한 구조를 갖게되었습니다.


이러한 전문 고문은 모든 전략을 사용하여 거래의 효율성을 더 잘 평가할 수있게 해줍니다. 또한 하나의 전문가가 특정 계정에서 작업하도록 허용 된 경우 유용 할 수 있습니다. Expert Advisor의 소스 코드는 위의 정보를 쉽게 이해할 수 있도록 기사에 첨부되어 있습니다.


MetaQuotes Software Corp. 에서 러시아어로 번역


복수 통화 Forex Authorized Center.


외환 거래 소개.


외환은 외화 가치의 작은 변동을 이용하면서 매일 수십억 달러의 수익을 창출하는 가장 큰 유동성 금융 시장 중 하나입니다. 오늘날 외환은 소규모 기업가가 상대적으로 저렴한 금액의 현금을 투자하고 막대한 이익을 거둘 수있게 해주는 명예로운 무역입니다. 증권 거래소에서는 투자자가 큰 현금 보유액으로 이익을 낼 수 있지만 외환 시장은 훨씬 역동적이어서 투자자는 1,000 USD의 초기 예산으로 이익을 얻을 수 있습니다.


외환 시장은 정치적 지위, 국가 경제 진보 및 수십개 국가의 소비자 물가 지수와 같은 미리 정해진 수많은 요인에 따라 변화하고 있습니다. 복잡한 외환 거래가 들리더라도 미세한 사건을 계산하고 신뢰할 수있는 예측을 산출하는 고급 시스템을 사용합니다.


Multiforex는 외환 거래의 세계로가는 관문입니다. 나스닥과 같은 위험한 금융 시장에 개입하지 않고도 수익을 현명하게 낼 수있는 기회입니다. 온라인 외환 거래는 세계 최대의 금융 시장과 외화의 즉각적인 거래에 지속적으로 연결되도록 허용합니다. 이 교육 외환 센터는 초보자 외환 거래자를 위해 만들어져 돈을 블로깅하거나 전문 외환 거래자를위한 외환 시장 뉴스 및 통화 거래 추천을 찾을 수 있습니다. 많은 삶의 상황에 대한 해결책을 찾고 있다면, 코칭은 그들을 찾아내는 강력한 방법입니다. 용량 수명 코칭.


Forex Trading Pal에서 확장 된 Forex 중개인 리뷰.


최신 기사.


외환 연구 : 유럽 연합 (EU) 구축.


06/10/2007 03:00 PM.


유럽 ​​연합은 외환에 큰 영향을 미치는 세계에서 가장 큰 정치 조직 중 하나입니다. 우리는 앞으로 EU가 직면하게 될 도전 과제를 점검하기위한 토대를 논의하기 위해 일련의 기사를 시작합니다. [. ]


Forex : 자산에 대한 헤징.


06/10/2007 03:00 PM.


헤징은 특히 국제 금융 거래가 부수적 인 사람들을위한 행동의 완벽하게 정상적인 종류입니다. 외화로 순 약정을 피하기 만하면 빠르게 변화하는 국제 통화 조건을 지키지 않는 시간과 노력을 아낄 수 있습니다. [. ]


Right Forex Trading Psychology.


06/10/2007 03:00 PM.


외환 거래자로서 성공하기 위해서는 외환 시장의 발전에 대해 심리적으로 어떻게 적응해야 하는지를 알아야합니다. 통화 거래 분야에서 심리적 거인이 될 수있는 방법에 대해 알아보십시오. [. ]


다국간 Forex 거래의 수학적 기대.


일부 외환 거래자는 모든 통화에 대해 동일한 거래 전략을 사용하는 반면, 다른 외환 거래자는 거래되는 통화 쌍에 따라 완전히 다른 전략을 사용합니다. 또는 거래자는 여러 가지 외환 쌍을 가진 여러 전략을 사용하여 이익을 증가시키면서 단일 전략에 과도한 집중으로 인한 인출 위험을 줄일 수 있습니다.


전문가 조언자 (EA)는 입력 매개 변수를 최적화 할 수있게 해주지 만 별도의 전략을 단일 시스템에 함께 넣는 것이 더 쉽지는 않습니다. 또한, 서로 다른 외환 전략을 병합 할 때 중복 또는 상호 연관된 약화로 인한 위험이 증가 할 수 있습니다.


알고리즘을 사용하여 거래 시스템은 통화 쌍을 확인하고 입력 매개 변수에 따라 특정 작업을 수행 할 수 있습니다. 모든 거래 전략을 나란히 평가하기 위해 다중 통화, 다중 시스템 EA를 만들 수 있습니다. 이는 단일 EA만이 주어진 계정에 액세스하도록 허용 된 경우에 유용 할 수 있습니다.


다양한 조건 하에서 서로 다른 통화 쌍에서 잘 작동하는 외환 거래 시스템을 개발하는 것은 어려울 수 있습니다. 다중 통화 거래를위한 널리 알려진 시스템의 대부분은 Donchian 채널 탈주와 같은 추세 추적 전략에 기반을두고 있으며 매우 장기적인 추세에서 이익을 얻도록 설계되었습니다. 그러나 다중 통화 전략은 외환 거래자에게 일반적인 시간대에 대해 명확한 우위를 보여 주어야합니다.


예를 들어, 시스템이 EUR / USD와 USD / JPY 모두에서 잘 작동하려면 변동성과 잠재적 인 상관 관계가 있음에도 불구하고 신호의 성공 확률이 높아야합니다. 그리고 거래는 매우 짧은 기간 동안 승자가되어야합니다. 그렇지 않다면, 거래 상관 쌍은 과도 집중과 과도한 인출의 위험을 초래할 수 있습니다.


네 가지 주요 통화 쌍을 거래 할 때 수익성있는 기회가 많이 있습니다. EUR / USD, GBP / USD, USD / JPY 및 USD / CHF. 저는 Mathematical Expectation (ME)에 기반한 전략을 사용하여 좋은 성공을 거두었습니다. 나는 ME를 사용하여 데이터를 분석하고 포괄적 인 거래 기회를 찾고 4 대 통화 쌍 거래를위한 출입국 점을 계산합니다.


수학적 기대는 외환 거래가 이길 가능성을 예측합니다.


잘 프로그래밍 된 EA는 ME 도구를 사용하여 여러 통화 쌍에서 작동하는 시스템을 구축하는 데 도움을줍니다. 필자는 실시간으로 작동하고 백 테스트를 통해 장기적인 수익성을 보여주는 몇 가지 시스템을 개발하는 데 도움을주었습니다.


최근 거래자들은 데이터 마이닝 기법을 사용하여 외환 거래 시스템의 전략을 백 테스트하고 세부적으로 조정할 때 발생하는 단점을보다 잘 인식하고 있습니다. 시스템 매개 변수 순열 (SPP)과 같은 대체 시스템 개발 방법을 사용할 수 있으며 데이터 마이닝 편향 문제를 피할 수 있습니다.


신중하게 실행하면 SPP 또는 데이터 마이닝은 네 가지 주요 통화 쌍 전반에 신호를 생성하는 양질의 지표 세트를 구축하는 데 도움이됩니다. 그런 다음 전문가 고문은 Mathematical Expectation을 계산하여 해당 거래가 수익성이 있는지 여부를 확인합니다.


마지막으로, 수익성 높은 신호를 지속적으로 발생시키는 정확한 전략을 찾기 위해 필터를 지정하고 테스트하는 문제입니다. 진입 점과 종점은 현재 변동성에 맞게 조정 된 수학적 기대를 사용하는 기계 거래 시스템에 의해 계산됩니다.


성공에 대한 수학적 기대치 계산.


Mathematical Expectation (ME)은 무역이 개방 된 전체 시간 동안 경험 한 가장 큰 일시적 이익을 측정하는 통계입니다. Ralph Vince가 개발 한 Optimal-F 포지션 사이징 및 금전 관리 규정에 따라 처음 보급되었습니다. 방정식은 다음과 같습니다.


수학적 기대 = MFE - MAE.


수학적 기대치 도구를 통해 다기능 외환 거래자는이기는 시스템을 개발할 때 예측 가능한 "우위"를 확보 할 수 있습니다. ME는 최대 유리한 ​​견학 (MFE) 및 최대 반작용 (MAE)의 개념에 따라 정의됩니다. ME의 가치는 기계 거래 시스템에 의해 실시간으로 계산 될 수 있습니다.


최대 유리한 ​​여행은 매일, 시간당 또는 미세하게 여부에 관계없이 기간 동안 최종 마감 가격에 관계없이 외환 거래가 종료되기 전에 유리한 무역에서 가장 큰 균형입니다. MFE는 거래가 진행되는 동안 달성 된 가장 높은 양의 균형입니다.


최대 불리한 여행은 무역이 패자로 끝났는지 여부에 관계없이 무역 중 가장 큰 미실현 또는 일시적인 손실입니다. MAE는 개방 기간 동안 가장 낮은 마이너스 잔고 다.


주어진 외환 쌍으로부터 ME를 정량화하고 분석하기 위해서, 거래자들은 과거의 많은 거래에 대해 평균 MFE와 평균 MAE를 계산할 수 있습니다. 수학적 기대는 최대 유리한 ​​견학에서 최대 반작용을 뺀 것과 같습니다.


평균 MFE가 평균 MAE보다 큰 경우 수학 기대는 양수입니다. 주어진 통화 쌍에 대한 MFE와 MAE의 비율이 클수록 잠재적 인 무역에 대한 전망이 유리합니다.


Mathematical Expectation에 기초한 다자간 외환 거래 전략.


Mathematical Expectation을 기반으로 한 다중 통화 전략을 사용하여 EUR / USD, GBP / USD, USD / JPY 및 USD / CHF를 거래 할 때이 메트릭은 일반적으로 긍정적이며 일반적으로 높으며 다양한 통화 쌍 중에서 유사합니다.


전문가 고문이 진입 점을 분석하는 동안 위치 크기 또는 거래 종료 규칙 또는 기타 매개 변수를 평가하지 않는 것이 중요합니다. 이 매개 변수는이 기사의 뒷부분에서 설명하는 바와 같이 변동성을 위해 조정 된 ME를 기반으로 한 기계 거래 시스템에 의해 독립적으로 설정할 수 있습니다.


진입 점과 거래 방향을 결정한 후 기계 거래 시스템은 MFE 및 MAE 값을 일반적으로 진입 가격을 초과 한 10 개의 막대에서 먼저 계산 한 다음 15 개의 막대를 초과 한 다음 항목 가격을 초과하여 20 개의 막대를 계산합니다.


진입 점을 신호하는 것에 더하여, ME는 또한 외환 거래의 이점이 그 직위를 열면 가장 좋았는지 혹은 그 직위에 오른 후 평균 간격으로 가장 좋은지를 보여줍니다.


가장 간단한 다기능 거래 전략은 일일 차트를 사용하고 3 가지 가격 기반 규칙과 성공을 예측하기 위해 수학적 기대치를 사용하는 몇 가지 매개 변수의 조합에 의존합니다.


장단기 거래에 대한 규칙은 다음과 같습니다.


다음과 같은 경우에 오랫동안 거래하십시오 (그리고 짧은 거래를 종료하십시오) :


닫기 & ​​gt; 이전 닫기.


열기 & gt; 이전 낮음.


이전 닫기 & gt; 이전 마감.


짧은 무역 (그리고 긴 무역을 종료 할 경우) :


닫기 & ​​lt; 이전 닫기.


개방 & lt; 이전 높음.


이전 닫기 & lt; 이전 마감.


이 시스템은 신호가 바뀌면 거래를 되돌립니다. 따라서 "짧은"신호가 수신 될 때 시스템이 "긴"위치를 열면 시스템은 긴 위치를 닫고 대신 짧게됩니다. 마찬가지로, 시스템에 짧은 & # 8221; 긴 & # 8221; 레벨이 수신되면 짧게 닫히고 곧바로 길게 갈 것입니다.


이 시스템의 또 다른 매개 변수는 15 일 또는 20 일 평균 트루 범위 (ATR)보다 약간 큰 값으로 설정된 중지 손실 트리거입니다. 이 값은 새로운 신호가 같은 방향으로 수신 될 때마다 업데이트됩니다.


그럼에도 불구하고 동일한 방향으로 새로운 신호가있는 경우, 내 시스템은 새로운 순위를 추가하지 않습니다. 그 이유는 드로우 다운이 추가 이익보다 중요하다는 것을 발견했기 때문입니다.


마지막으로, 포지션 규모와 관련하여 시스템은 하나의 높은 ME 무역에 대해 최대 2 %의 계정 자본을 할당합니다. 여러 통화 쌍으로 여러 신호가있는 경우 ME 계산이 신호간에 상관 관계를 보여 주므로 총 위치 크기는 형평성의 2 %를 넘지 않습니다.


거래 결과.


이 간단한 다단계 외환 거래 시스템은 실제 거래에서 괜찮은 결과를 보여 주었으며 20 년 동안의 백 테스트를 통해 20 년 중 적어도 16 년 동안 수익이 좋은 결과를 얻었을 것입니다. 수익률은 거의 1.4인데 비해 보상 리스크 비율은 약 1.7, 승자 비율은 약 45 %입니다.


그래도 인출은 길어질 수 있습니다. 백 테스트에서 본 최장 기간은 1000 일 이상이었습니다. 이 전략을 사용할 때의 수익 감소 비율은 구매 및 보유 주식의 수익률과 비슷하며 백 테스트 기간 동안이 비율은 약 0.35이었으며 20 년간의 백 업 기간 동안 총 수익은 500 % 이상이었습니다. 테스트.


ME를 사용한 다자간 거래 전략의 리스크 관리.


평균 MFE 및 MAE 값을 알면 외환 거래자는 최대 유리한 ​​견학 또는 최대 반입 견적 값을 초과 한 계산 된 수의 핍을 추가하여 결정되는 이익 목표 또는 중단 손실 시점에서 거래를 종료하도록 다중 통화 기계 시스템을 프로그래밍 할 수 있습니다.


평균적으로, 시간이 지남에 따라 이기기 위해서는 외환 거래 시스템이 중단 손실 종료 레벨에 접촉하는 것보다 더 자주 이익 목표에 도달해야합니다.


예를 들어 시스템에 평균 35 pips의 평균 MFE와 55 pips의 평균 MAE가있는 경우 거래 가능한 기회가 있습니다. 이익 목표는 MFE보다 5 pips 적은 50 pips로 예상 할 수 있으며 정지 손실 출구는 MAE보다 5 pips 높은 30 pips로 설정할 수 있습니다.


시스템 설계와 관련하여 고정 된 수의 pips를 설정하는 대신 변동성에 따라 이익 목표 및 중단 손실 포인트를 정의하도록 거래 시스템을 프로그래밍하는 것이 중요합니다.


변동성은 다중 통화 거래의 종료 시점을 결정하는 데 도움이됩니다.


앞서 언급했듯이, 기계 거래 시스템은 MAE 및 MFE를 계산하여 출구 포인트를 설정하기 위해 변동성에 따라 ATR (Average True Range)을 쉽게 사용할 수 있습니다. 시스템은 ME 분석에 따라 실행 가능한 ATR의 백분율을 더하거나 뺀 엔트리 가격을 결정합니다. 충분히 큰 표본을 가지려면 보통 ATR을 설정하여 이전 15 또는 20 시간 프레임을 계산합니다.


예를 들어, EUR / USD가 평균 약 100 pips / day로 이동하는 시장에서 시스템은 현재 변동성 및 ME 분석을 기반으로 목표 이익 포인트와 중단 손실 포인트를 계산해야합니다.


따라서 무역이 55 pips의 유리한 방향으로 움직이고 현재 ATR이 85 pips이면 이동은 55 pips로보고되지 않습니다. 대신 MFE는 ATR의 64.7 %로보고됩니다.


시간이 지남에 따라 4 가지 주요 통화 쌍인 EUR / USD, GBP / USD, USD / JPY 및 USD / CHF에 대한 MFE가 ATR의 MFE 값 약 60 %와 평균 MAE 약 40 근처에서 변동하는 것으로 나타났습니다. 15 회의 기간 이후 전형적인 진입에 대한 ATR의 %.


변동성에 따라 외환 거래 결과를 미세 조정하기 위해 기계 거래 시스템은 다양한 수준에서 이익 목표 및 중단 손실 포인트를 설정할 수 있습니다. 예를 들어, 시스템에서 MFE 전체 값 60 %가 아닌 진입 점에서 ATR 값의 55 %에있는 이익 목표 종료점을 설정할 수 있습니다.


그리고 변동성은 ATR의 40 %가 아니라 진입 점을 넘어서 ATR 가치의 45 %에서 정지 손실 출구 점을 설정해야 할 수도 있습니다. 그럼에도 불구하고이 시스템은 목표 손실 수준보다 더 자주 목표 이익 수준에 도달 할 가능성이 높으며 목표 이익이 중도 상실보다 크게 설정되는 한 승자는 더 커야합니다.


모든 거래에 대해 목표 이익과 중단 손실에 대한 계산 된 핍 수는 ATR에 반영된대로 거래 시점의 변동성을 기준으로합니다.


신호가 발생하면 거래 시스템은 현재 ATR의 가치를 확인한 다음 목표 이익 및 손절매 수준에 도달하는 정확한 핍 수를 계산합니다.


예를 들어 EUR / USD가 길어질 신호가 있고 현재 ATR이 100 pips라고 가정합니다. 따라서 목표 이익은 엔트리 가격 (ATR 가치의 55 %)보다 55 pips가 될 것입니다. 그리고 막판 손실은 엔트리 가격 (ATR의 45 %)에 따라 45 pips입니다.


수학적 기대에 대한 몇 가지 생각.


수학적 기대치는 일반적으로 "짧은"거래의 경우 더 낮으며, 일부 거래자는 열린 후에도 18 개의 막대만큼 ME가 증가하고 열린 후에는 80 개의 막대만큼 가격 변동 동안 쇠퇴하는 것을 보았습니다.


"긴"거래의 경우 ME는 일반적으로 30 일까지 빠르게 증가 할 수있는 값으로 수명이 길어지고 약 75 시간까지 천천히 계속됩니다. 이 시스템을 사용하면 평균 거래 기간은 약 25 일입니다.


EUR / USD, GBP / USD, USD / JPY 및 USD / CHF 거래가 약 30 기간 동안 발생하는 것으로 보이는 가장 좋은 거꾸로. 호의적 인 움직임이 그 평균점을 지나서 계속된다면, 시장에서 어떤 종류의 근본적인 편향은 움직임을 연장시킬 가능성이 있습니다.


요약하자면, 이 기본적인 다단계 외환 거래 전략은 네 가지 주요 통화 쌍에 걸쳐 공유되는 긍정적이고 높은 ME를 활용합니다. 항목, 수익 목표 및 중단 손실 포인트는 모두 ME를 기반으로합니다.


수학 기대 지표가 성공할 것으로 예상되면 네 가지 주요 통화 쌍인 & # 8212; EUR / USD, GBP / USD, USD / JPY 및 USD / CHF는 성공적으로 거래 될 수 있습니다.


QuantStart.


빠르게 성장하는 소매점 퀀텀 트레이더 커뮤니티를 지원하는 Quantcademy 개인 회원 포털에 가입하십시오. 당신은 당신의 가장 중요한 퀀트 트레이딩 질문에 대답 할 준비가되어있는 지식이 풍부하고 마음이 맞는 퀀트 트레이더 그룹을 찾을 수 있습니다.


퀀트 트레이딩에 관한 나의 eBook을 확인해보십시오. 여기서 저는 파이썬 툴로 수익성 높은 체계적인 트레이딩 전략을 만드는 법을 가르쳐드립니다.


Python 및 R을 사용하여 시계열 분석, 기계 학습 및 베이지안 통계를 사용하는 고급 거래 전략에 관한 새로운 전자 책을 살펴보십시오.


2015 년 4 월 22 일 Michael Halls-Moore


어제 QSForex 소프트웨어에 몇 가지 중요한 변경 사항을 게시했습니다. 이러한 변화로 인해 시스템의 유용성이 현저하게 높아져 통화 쌍의 범위에 걸쳐 다중 일 틱 데이터 백 테스트가 거의 준비가되었습니다.


Github에 다음과 같은 변경 사항이 게시되었습니다.


포지션 및 포트폴리오 오브젝트에 대한 추가 수정으로 여러 통화 쌍을 거래 할 수있을뿐 아니라 계좌 통화로 표시되지 않는 통화도 거래 할 수 있습니다. 따라서 예를 들어 GBP - deonominated 계좌는 현재 EUR / USD를 거래 할 수 있습니다. 위치 및 포트폴리오가 단위의 개폐, 계산, 추가 및 제거를 계산하는 방법에 대한 완전한 정비. Position 객체는 이제 비교적 무거운 Portfolio 객체를 남겨두고 "무거운 짐을 싣는"작업을 수행합니다. 첫 번째 중요하지 않은 전략, 즉 단순 이동 평균 (SMA) 한 쌍으로 잘 알려진 이동 평균 크로스 오버 전략을 추가합니다. backtest. py를 수정하여 단일 스레드 및 결정적으로 만듭니다. 멀티 스레드 접근 방식이 시뮬레이션 정확도에 너무 해롭지는 않을 것이라는 낙관적 인 견해에도 불구하고 멀티 스레드 접근 방식으로 만족스러운 백 테스트 결과를 얻는 것이 어려웠습니다. 포트폴리오의 주식 곡선을보기위한 매우 기본적인 Matplotlib 기반 출력 스크립트를 도입했습니다. 지분 곡선 생성은 초기 단계이며 많은 작업이 필요합니다.


QSForex에 익숙하지 않고 처음으로이 forex 일기 시리즈에 오는 사람들을 위해 이전 항목에서 언급했듯이 다음과 같은 일기 항목을 읽으면 소프트웨어 속도를 높이는 것이 좋습니다.


QSForex의 Github 페이지뿐만 아니라 :


복수 통화 지원.


이 일기 항목에서 계속 논의해온 기능은 여러 통화 쌍을 지원하는 기능입니다.


이 단계에서 저는 이전에 GBP가 하드 코딩 된 통화 였기 때문에 다른 계정 단위를 허용하도록 소프트웨어를 수정했습니다. 일본 엔 (JPY)으로 된 기본 또는 견적으로 구성된 통화 쌍을 제외하고는 다른 통화 쌍으로도 거래 할 수 있습니다. 후자는 틱 크기가 JPY 통화로 계산되는 방식 때문입니다.


이를 달성하기 위해 단위가 제거되거나 위치가 닫힐 때 이익이 계산되는 방식을 수정했습니다. 다음은 position. py 파일에서 pips 계산을위한 현재 스 니펫입니다.


이득 또는 손실을 실현하기 위해 위치를 닫는 경우 position. py 파일에서도 close_position에 다음 스 니펫을 사용해야합니다.


첫째로 우리는 입찰을 얻고 거래되는 통화 쌍과 "견적 / 주택"통화 쌍 모두에 대해 가격을 묻습니다. 예를 들어 EUR / USD를 거래하는 GBP로 표시된 계정의 경우 EUR는 기본 통화이고 USD는 따옴표이므로 "USD / GBP"에 대한 가격을 받아야합니다.


이 단계에서 위치 자체가 길거나 짧은 지 여부를 확인한 다음 remove_price 및 qh_close가 각각 제공하는 적절한 "제거 가격"및 견적 / 집 "가격 제거"를 계산합니다.


그런 다음 포지션 내의 현재 및 평균 가격을 업데이트하고 마지막으로 pips, 견적 / 자택 제거 가격을 곱한 다음 폐사 할 단위 수를 곱하여 P & L을 계산합니다.


우리는 중복 변수 인 "노출"에 관해 논의 할 필요성을 완전히 제거했습니다. 그런 다음이 공식은 P & amp; L을 어떤 (외화로 표시되지 않은) 통화 쌍 거래에 대해 올바르게 제공합니다.


포지션 및 포트폴리오 처리 정비.


여러 통화 쌍으로 거래 할 수있는 능력 외에도 포지션 및 포트폴리오가 개장 및 포지션의 책임을 "공유"하는 방법과 단위 추가 및 제거 방법을 개선했습니다.


특히, 나는 portfolio. py에있는 position-handling 코드를 position. py로 옮겼다. 포지션은 자신을 돌보고 포트폴리오에 위임하지 않아야하므로 더 자연 스럽습니다!


특히, add_units, remove_units 및 close_position 메소드가 작성 또는 향상되었습니다.


후자의 두 가지 방법을 통해 이익 계산을위한 새로운 공식을 구현하는 방법을 알 수 있습니다.


따라서 Portfolio 클래스의 많은 기능이 그에 따라 축소되었습니다. 특히 메소드 add_new_position, add_position_units, remove_position_units 및 close_position은 계산 작업이 Position 객체에서 수행되고 있다는 사실을 고려하여 수정되었습니다.


본질적으로 이들 모두 (add_new_position 제외)는 해당 통화 쌍의 위치가 존재하는지 확인한 다음 필요한 경우 수익을 고려하여 해당 Position 메소드를 호출합니다.


이동 평균 크로스 오버 전략.


주식 거래의 맥락에서 QuantStart 이전에 Moving Average Crossover 전략에 대해 논의했습니다. 백 테스터가 제대로 작동하는지 확인하기 위해 손으로 계산을 복제하는 것이 (적어도 더 낮은 주파수에서!) 쉽게 수행 할 수 있기 때문에 매우 유용한 테스트 베드 표시기 전략입니다.


전략의 기본 아이디어는 다음과 같습니다.


특정 시계열의 룩백 기간이 달라지는 두 개의 개별 이동 평균 필터가 만들어집니다. 더 짧은 룩백 이동 평균이 더 긴 룩백 이동 평균을 초과하면 자산 구매 신호가 발생합니다. 더 긴 평균값이 이후에 더 짧은 평균값을 초과하면 자산은 매각됩니다.


이 전략은 시계열이 강한 추세에 진입 한 후 천천히 추세를 뒤집을 때 잘 작동합니다.


구현은 간단합니다. 첫째, 모든 단계에서 SMA를 완전히 다시 계산할 필요없이 이전 기간 SMA 계산을보다 효율적으로 활용하여 새로운 것을 생성 할 수있는 calc_rolling_sma 메소드를 제공합니다.


둘째, 두 가지 경우에 신호를 생성합니다. 짧은 SMA가 긴 SMA를 초과하고 통화 쌍이 길지 않은 경우 첫 번째 경우에 신호를 생성합니다. 두 번째 경우에는 긴 SMA가 짧은 SMA를 초과하고 이미 긴 신호 인 경우 신호가 생성됩니다.


짧은 SMA의 경우 500 틱이고 긴 SMA의 경우 2,000 틱이되도록 기본 창을 설정했습니다. 분명히 프로덕션 환경에서는 이러한 매개 변수가 최적화되지만 테스트 용도로는 잘 작동합니다.


단일 쓰레기 백 테스터.


또 다른 주요 변경 사항은 백 테스트 구성 요소를 멀티 스레드가 아닌 단일 스레드로 수정하는 것입니다.


라이브 환경에서 발생하는 방식으로 실행되도록 스레드를 동기화하는 데 매우 힘든 시간을 보내고 있었기 때문에이 변경 작업을 수행했습니다. 기본적으로 진입 및 퇴출 가격은 매우 비현실적이었으며 실제 진드기가 접수 된 후 종종 가상 시간에 발생했습니다.


따라서 backtest. py의 다음 스 니펫에서 볼 수 있듯이 TickEvent 객체의 스트리밍을 백 테스팅 루프에 통합했습니다.


ticker. stream_next_tick () 라인을 주목하십시오. 이것은 이벤트 대기열을 폴링하기 전에 호출되므로 대기열이 다시 폴링되기 전에 항상 새로운 틱 이벤트가 도착하도록 보장합니다.


특히, 미끄러짐으로 인해 주문 프로세스에서 약간의 지연이 있더라도 새로운 시장 데이터가 도착하면 신호가 실행됨을 의미합니다.


또한 백 테스트 루프가 지속되는 기간을 제어하는 ​​max_iters 값을 설정했습니다. 실제로 이것은 여러 날 동안 여러 통화를 처리 할 때 상당히 커야하지만 한 통화 쌍의 하루 데이터를 허용하는 기본값으로 설정했습니다.


price 핸들러 클래스의 stream_next_tick 메소드는 for 루프에서 틱 스트리밍을 수행하는 대신 iterator next () 메소드를 수동으로 호출한다는 점을 제외하면 stream_to_queue와 유사합니다.


StopIteration 예외를 받으면 중지됩니다. 이렇게하면 예외가 발생하지 않고 코드가 다시 시작될 수 있습니다.


Matplotlib 출력.


나는 또한 매우 기본적인 Matplotlib 출력 스크립트를 만들어서 커브를 표시했습니다. output. py는 현재 QSForex의 백 테스트 디렉토리에 있으며 아래에 나와 있습니다.


설정에 반드시 설정해야하는 OUTPUT_RESULTS_DIR이라는 새로운 settings. py 변수가 있습니다. 실수로 코드 백 테스트 결과를 코드베이스에 추가하고 싶지 않기 때문에 파일 시스템의 다른 곳에서 임시 디렉토리를 가리키고 있습니다!


지분 곡선은 사전 목록에 균형 값을 추가하여 작동하며 한 사전은 타임 스탬프와 일치합니다.


백 테스트가 완료되면 사전 목록이 Pandas DataFrame으로 변환되고 to_csv 메서드는 equity. csv를 출력하는 데 사용됩니다.


이 출력 스크립트는 파일을 읽어 들이고 후속 DataFrame의 잔액 열을 그립니다.


아래의 Portfolio 클래스의 append_equity_row 및 output_results 메소드에 대한 스 니펫을 볼 수 있습니다.


execute_signal이 호출 될 때마다 전자 메소드가 호출되고 타임 스탬프 / 밸런스 값이 지분 멤버에 추가됩니다.


백 테스트의 끝에서 사전 목록을 DataFrame으로 변환 한 다음 지정된 OUTPUT_RESULTS_DIR 디렉터리로 출력하는 output_results가 호출됩니다.


불행하게도 이것은 신호가 생성 될 때만 발생하기 때문에 형평성 곡선을 생성하는 특히 적절한 방법은 아닙니다. 이것은 실현되지 않은 P & L을 고려하지 않음을 의미합니다.


이것이 실제 거래가 이루어지는 방법이지만 (포지션을 끝내기 전까지 실제로 돈을 벌지는 못했습니다!) 그것은 잔액 업데이트 사이에 완전히 평형을 유지할 것임을 의미합니다. 더욱이 Matplotlib는 이러한 점들 사이를 선형 적으로 보간하는 것이 기본값이므로 실현되지 않은 P & L의 잘못된 인상을 제공합니다.


이 문제에 대한 해결책은 모든 틱에서 올바르게 업데이트되는 위치 클래스에 대해 실현되지 않은 P & L 추적기를 만드는 것입니다. 이것은 계산 상으로 비싸지 만 더 유용한 주식 곡선을 허용합니다. 이 기능은 나중에 계획되어 있습니다!


다음 단계.


QSForex의 다음 중요한 작업은 여러 날의 백 테스팅을 허용하는 것입니다. 현재 HistoricCSVPriceHandler 객체는 지정된 통화 쌍에 대해 DukasCopy 틱 데이터 만 하루 동안로드합니다.


멀티 데이 테스트를 허용하려면 틱 데이터의 전체 히스토리를 RAM에 채우지 않도록 매일 매일로드하고 스트리밍해야합니다. 이것은 stream_next_tick 메쏘드가 어떻게 작동하는지에 대한 수정을 요구할 것입니다. 일단 그것이 완료되면 여러 쌍에 걸쳐 장기 전략 백 테스팅을 할 수 있습니다.


또 다른 과제는 형평성 곡선의 산출량을 개선하는 것입니다. 일반적인 성과 지표 (예 : Sharpe Ratio)를 계산하려면 특정 기간에 대한 수익률 백분율을 계산해야합니다. 그러나 특정 기간의 수익을 계산하려면 막대 데이터로 틱 데이터를 저장해야합니다.


이러한 비닝은 거래 빈도와 유사한 샘플링 빈도에서 발생해야하며, Sharpe Ratio는 전략의 실제 위험 / 보상을 반영하지 않습니다. 각 빈에 대해 "가격"을 산출하는 많은 가정이 있기 때문에이 비닝은 간단한 작업이 아닙니다.


이 두 가지 작업이 완료되고 충분한 데이터가 수집되면 우리는 광범위한 틱 데이터 기반 외환 전략을 백 테스트하고 대다수 거래 비용을 제외한 순손익 곡선을 산출 할 수있는 위치에있게됩니다. 또한 OANDA에서 제공하는 연습 용지 거래 계좌에서 이러한 전략을 테스트하는 것은 매우 간단합니다.


이를 통해보다 "연구 지향적 인"백 테스팅 시스템에 비해 전략 실행 여부에 대해 훨씬 더 나은 결정을 내릴 수 있습니다.


양적 거래 시작하기?


QuantStart 목록을 구독해야하는 3 가지 이유 :


1. 퀀트 트레이딩 레슨.


계량 거래를 시작하는 데 도움이되는 힌트와 팁으로 가득한 무료 10 일간 코스에 즉시 액세스 할 수 있습니다!


2. 모든 최신 내용.


매주 나는 퀀트 스타트에서 모든 활동의 포장을 보내드릴 것입니다. 그래서 당신은 결코 다시 글을 놓치지 않을 것입니다.


현실감 넘치는 퀀 트레이딩 팁.

No comments:

Post a Comment