Sunday 4 March 2018

Forex svm


기계 학습 : 지원 벡터 머신을 거래에 사용하는 방법.


Support Vector Machine이란 무엇입니까?


지원 벡터 머신은 입력 데이터를 가져 와서 두 가지 범주 중 하나로 분류하려고 시도하는 기계 학습 방법입니다. 지원 벡터 머신이 효과적이기 위해서는 먼저 새로운 데이터를 분류하는 데 사용할 수있는 지원 벡터 머신 모델을 구축하기 위해 교육 입력 및 출력 데이터 세트를 사용해야합니다.


지원 벡터 기계는 훈련 입력을 다차원 공간으로 매핑 한 다음 회귀를 사용하여 초평면 (초평면은 공간을 두 개의 반쪽 공간으로 분리하는 n 차원 공간에서의 표면 임)을 찾음으로써이 모델을 개발합니다. 두 종류의 입력. 일단 지원 벡터 기계가 훈련되면 분리 초평면에 대한 새로운 입력을 평가하고이를 두 가지 범주 중 하나로 분류 할 수 있습니다.


지원 벡터 머신은 기본적으로 입출력 머신입니다. 사용자는 입력을 넣을 수 있으며 교육을 통해 개발 된 모델을 기반으로 출력을 반환합니다. 주어진 지원 벡터 머신에 대한 입력 수는 이론적으로 1에서 무한대까지의 범위를 가지지 만, 실제로 컴퓨팅 파워는 얼마나 많은 입력을 사용할 수 있는지 제한합니다. 예를 들어 N 개의 입력이 특정 지원 벡터 머신 (N의 정수 값은 1에서 무한대까지 가능)에 사용되는 경우 지원 벡터 머신은 각 입력 세트를 N 차원 공간에 매핑하고 (N-1 ) 차원의 초평면을 사용합니다.


그림 1. 지원 벡터 머신은 입출력 머신입니다.


지원 벡터 머신이 어떻게 작동 하는지를 개념화하는 가장 좋은 방법은 2 차원의 경우를 고려하는 것입니다. 두 개의 입력을 갖는 지원 벡터 머신을 생성하고 두 개의 카테고리 중 하나에 속하는 것으로 데이터 포인트를 분류하는 단일 출력을 반환한다고 가정합니다. 아래 차트와 같은 2 차원 차트에 플롯하여 시각화 할 수 있습니다.


그림 2. 왼쪽 : 2D 차트에 매핑 된 벡터 머신 입력을 지원합니다. 빨간색 원과 파란색 십자 기호는 두 가지 유형의 입력을 나타내는 데 사용됩니다.


그림 3. 오른쪽 : 2D 차트에 매핑 된 벡터 머신 입력을 지원합니다. 빨간색 원과 파란색 십자가는 분리 된 초평면을 나타내는 검은 색 선으로 입력의 두 클래스를 나타내는 데 사용됩니다.


이 예에서 파란색 십자는 카테고리 1에 속하는 데이터 포인트를 나타내고 범주 2에 속하는 데이터 포인트를 나타내는 빨간색 원을 나타냅니다. 각 개별 데이터 포인트는 고유 한 입력 1 값 (x 축상의 위치로 표현됨) )와 고유 한 입력 값 (y 축상의 위치로 표현됨)을 가지며이 모든 점은 2 차원 공간에 매핑되었습니다.


지원 벡터 머신은 2 차원 공간에서 이러한 점의 모델을 작성하여 데이터를 분류 할 수 있습니다. 지원 벡터 머신은 2 차원 공간에서 데이터를 관찰하고 회귀 알고리즘을 사용하여 데이터를 가장 정확하게 두 카테고리로 구분하는 1 차원 초평면 (일명 라인)을 찾습니다. 그런 다음이 분리 선을 지원 벡터 머신이 사용하여 새 데이터 요소를 범주 1 또는 범주 2로 분류합니다.


아래의 애니메이션은 새로운 지원 벡터 머신을 교육하는 과정을 보여줍니다. 알고리즘은 분리 된 초평면을 찾는 무작위 추측을 시작한 다음 반복적으로 초평면의 정확도를 향상시킵니다. 알 수 있듯이 알고리즘은 매우 적극적으로 시작하지만 욕구 솔루션에 접근하기 시작하면 속도가 느려집니다.


그림 4. 지원 벡터 머신 트레이닝을 보여주는 애니메이션. 초평면은 이상적인 지오메트리에 점차 수렴하여 두 클래스의 데이터를 분리합니다.


위의 2 차원 시나리오는 지원 벡터 머신의 프로세스를 시각화 할 수 있지만 두 입력을 사용하여 데이터 포인트를 분류 할 수만 있습니다. 입력을 더 많이 사용하려면 어떻게해야합니까? 고맙게도 지원 벡터 머신 알고리즘을 사용하면 개념화하기가 훨씬 어려워 지지만 더 높은 차원에서 동일한 작업을 수행 할 수 있습니다.


이를 고려하여, 20 개의 입력을받는 지원 벡터 머신을 만들고 이러한 입력을 사용하여 카테고리 1 또는 카테고리 2로 데이터 포인트를 분류 할 수 있습니다. 지원 벡터 머신은 20 차원 공간에서 데이터를 모델링해야합니다 회귀 알고리즘을 사용하여 데이터 요소를 두 가지 범주로 구분하는 19 차원 초평면을 찾습니다. 3 차원 이상의 모든 것을 이해하는 것이 어렵 기 때문에 시각화하는 것이 매우 어려워집니다. 그러나 알아야 할 것은 모두 2 차원의 경우와 완전히 동일한 방식으로 작동한다는 것입니다.


지원 벡터 기계는 어떻게 작동합니까? 예 : Schnick입니까?


이 가설 시나리오를 상상해보십시오. 당신은 북극의 깊은 곳에서 발견 된 희귀 동물 Shnicks를 연구하는 연구원입니다. 이 동물들이 멀리 떨어져 있다는 사실을 감안할 때, 단지 소수의 동물 만이 발견되었습니다 (약 5000 정도). 연구원으로서, 당신은 질문에 붙어 있습니다. Schnick을 어떻게 식별 할 수 있습니까?


당신이 처분 할 수있는 것은 연구자가 이전에 간행 한 연구 논문들뿐입니다. 이 연구 논문에서 저자는 발견 된 Schnicks의 특징, 즉 신장, 체중, 다리 수 등을 설명합니다. 그러나 이러한 모든 특징은 식별 가능한 패턴이없는 연구 논문마다 다릅니다.


이 데이터를 사용하여 새 동물을 schnick으로 식별하는 방법은 무엇입니까?


우리의 문제에 대한 가능한 해결책 중 하나는 지원 벡터 머신을 사용하여 데이터의 패턴을 식별하고 동물을 schnick 또는 schnick으로 분류하는 데 사용할 수있는 프레임 워크를 만드는 것입니다. 첫 번째 단계는 지원 벡터 시스템을 교육하여 신품종을 식별하는 데 사용할 수있는 일련의 데이터를 만드는 것입니다. 훈련 데이터는 지원 벡터 머신이 패턴을 분석 및 추출하기위한 입력 및 일치하는 출력 세트입니다.


그러므로 우리는 어떤 투입물을 사용할 지와 얼마나 많이 사용할지를 결정해야한다. 이론적으로 우리는 원하는만큼 많은 인풋을 가질 수 있지만, 이것은 종종 느린 트레이닝으로 이어질 수 있습니다 (지원 벡터 머신이 패턴을 추출하는 데 더 많은 시간을 쏟을수록 입력이 많을수록). 또한, 모든 스 니크에서 상대적으로 일관성이있는 입력 값을 선택하려고합니다. 예를 들어, 동물의 키나 몸무게는 입력에 대한 좋은 예가 될 수 있습니다. 왜냐하면 모든 동물에 대해 상대적으로 일관성이 있어야하기 때문입니다. 그러나 확인 된 동물의 나이가 모두 매우 다양 할 것으로 예상하기 때문에 동물의 평균 연령은 좋지 않습니다.


이러한 이유로 다음과 같은 입력이 선택되었습니다.


높이 체중 다리 수 눈의 수 동물의 팔 길이 동물의 평균 속도 동물이 짝짓기하는 소리의 빈도.


입력을 선택하면 교육 데이터를 컴파일 할 수 있습니다. 지원 벡터 머신에 대한 효과적인 교육 데이터는 특정 요구 사항을 충족해야합니다.


데이터에는 동물성 동물의 예가 있어야합니다. 자료에는 동물이 아닌 동물의 예가 있어야합니다.


이 경우 우리는 과학자의 연구 보고서를 가지고 과학적으로 성공적으로 그 특성을 밝혀 냈습니다. 그러므로 우리는이 연구 보고서를 읽고 각 입력에 따라 데이터를 추출하고 각각의 예제에 true 또는 false 출력을 할당 할 수 있습니다. 이 경우 교육 데이터는 아래 표와 비슷하게 보일 수 있습니다.


표 1. schnick 관측 예제 테이블.


모든 교육용 입력 및 출력에 대한 데이터를 수집 한 후에는 지원 벡터 시스템을 교육하는 데 사용할 수 있습니다. 교육 과정 중에 지원 벡터 시스템은 각 학습 예제를 true 또는 false로 정렬하는 데 사용할 수있는 모델을 7 차원 공간에 작성합니다. 지원 벡터 머신은 학습 데이터를 정확하게 표현하는 모델 (지정된 오류 허용 오차 내)을 가질 때까지 계속이를 수행합니다. 교육이 완료되면이 모델을 사용하여 새 데이터 요소를 true 또는 false로 분류 할 수 있습니다.


지원 벡터 머신이 실제로 작동합니까?


Schnick 시나리오를 사용하여 지원 벡터 시스템이 실제로 새 기법을 식별 할 수 있는지 테스트하는 스크립트를 작성했습니다. 이를 위해, 저는 Market에서 다운로드 할 수있는 "Support Vector Machine Learning Tool"함수 라이브러리를 사용했습니다.


이 시나리오를 효과적으로 모델링하려면 먼저 Schnick의 실제 속성을 결정해야합니다. 이 경우 가정 한 속성은 아래 표에 나열되어 있습니다. 동물이 아래의 기준을 모두 만족하면 Schnick입니다.


표 2. schnick을 정의하는 매개 변수 요약.


Schnick을 정의 했으므로이 정의를 사용하여 지원 벡터 머신을 실험 할 수 있습니다. 첫 번째 단계는 주어진 동물에 대해 7 개의 입력을 받아 들일 수 있고 동물의 실제 분류를 schnick으로 반환 할 수있는 함수를 만드는 것입니다. 이 기능은 지원 벡터 머신에 대한 학습 데이터를 생성하고 최종 성능을 평가하는 데 사용됩니다. 이것은 아래 함수를 사용하여 수행 할 수 있습니다.


프로세스의 다음 단계는 교육 입력 및 출력을 생성 할 수있는 함수를 만드는 것입니다. 이 경우 입력은 7 개의 입력 값 각각에 대해 설정된 범위 내에서 난수를 생성하여 생성됩니다. 그런 다음 생성 된 임의의 입력 집합 각각에 대해 위의 isItASchnick () 함수를 사용하여 해당하는 원하는 출력을 생성합니다. 이것은 아래 함수에서 수행됩니다 :


이제는 교육용 입력 및 출력 세트가 제공되었으므로 이제 시장에서 제공되는 '지원 벡터 기계 학습 도구'를 사용하여 지원 벡터 시스템을 작성할 차례입니다. 새로운 지원 벡터 머신이 생성되면 교육 입력 및 출력을 전달하고 교육을 실행해야합니다.


우리는 이제 Scnhicks 식별에 성공적으로 훈련 된 지원 벡터 머신을 보유하고 있습니다. 이를 확인하기 위해 최종 지원 벡터 머신을 테스트하여 새 데이터 포인트를 분류하도록 요청할 수 있습니다. 먼저 무작위 입력을 생성 한 다음 isItASchnick () 함수를 사용하여 이러한 입력이 실제 Schnick에 해당하는지 확인한 다음 지원 벡터 시스템을 사용하여 입력을 분류하고 예측 된 결과가 실제 결과와 일치하는지 여부를 결정합니다. 이것은 아래 함수에서 수행됩니다 :


위 기능의 값을 가지고 노는 것이 좋습니다. 다른 조건에서 지원 벡터 머신이 어떻게 작동하는지 확인하십시오.


Support Vector Machine이 왜 그렇게 유용한가요?


지원 벡터 머신을 사용하여 데이터에서 복잡한 패턴을 추출하는 이점은 데이터의 동작을 사전에 이해할 필요가 없다는 것입니다. 지원 벡터 머신은 데이터를 분석하고 유일한 통찰력과 관계를 추출 할 수 있습니다. 이러한 방식으로 입력을 받아 블랙 박스가 출력을 생성하는 것과 유사하게 작동하여 너무 복잡하고 명확하지 않은 데이터 패턴을 찾는 데 매우 유용합니다.


지원 벡터 머신의 가장 큰 특징 중 하나는 데이터의 오류와 노이즈를 잘 처리 할 수 ​​있다는 것입니다. 이들은 종종 데이터 내의 기본 패턴을보고 데이터의 특이점 및 기타 복잡성을 필터링 할 수 있습니다. 다음 시나리오를 고려해보십시오. Schnicks에 대한 연구를 수행 할 때 Schnicks는 200kg이고 높이가 15000mm 인 Schnick과 같은 다양한 특성을 가진 Schnicks를 설명하는 여러 연구 논문을 접하게됩니다.


이와 같은 오류는 Schnick의 모델을 왜곡시킬 수 있습니다. 따라서 Schnick의 새로운 발견을 분류 할 때 오류가 발생할 수 있습니다. 지원 벡터 머신의 이점은 모든 교육 데이터 포인트에 맞는 모델과 반대되는 기본 패턴과 일치하는 모델을 개발한다는 것입니다. 이는 지원 벡터 머신이 데이터의 오류를 간과 할 수 있도록 모델에서 일정 수준의 오류를 허용하여 수행됩니다.


Schnick 지원 벡터 머신의 경우 오류 허용 오차를 5 %로 허용하면 교육은 교육 데이터의 95 %에 동의하는 모델 만 개발하려고 시도합니다. 이것은 아웃 라이어의 작은 비율을 무시하도록 교육을 허용하기 때문에 유용 할 수 있습니다.


우리는 Schnick 스크립트를 수정하여 지원 벡터 머신의이 속성을 더 조사 할 수 있습니다. 아래 함수는 우리의 훈련 데이터 세트에 고의적 인 임의 오류를 도입하기 위해 추가되었습니다. 이 함수는 무작위로 학습 점을 선택하고 입력 및 해당 출력을 임의의 변수로 바꿉니다.


이 기능을 사용하여 의도적 인 오류를 교육 데이터에 도입 할 수 있습니다. 이 오류로 채워진 데이터를 사용하여 새로운 지원 벡터 머신을 생성하고 학습하고 성능을 원래의 것과 비교할 수 있습니다.


스크립트가 실행되면 전문가 로그에 다음 결과가 생성됩니다. 5000 개의 교육 포인트가있는 교육 데이터 세트 내에서 500 개의 무작위 오류를 도입 할 수있었습니다. 이 오류로 채워진 지원 벡터 머신의 성능을 원래의 성능과 비교할 때, 성능은 & lt; 1 %만큼만 감소된다. 이는 지원 벡터 머신이 교육을받을 때 데이터 세트의 이상 치를 간과 할 수 있고 실제 데이터의 인상적으로 정확한 모델을 생성 할 수 있기 때문입니다. 이는 지원 벡터 머신이 잠재적으로 노이즈가 많은 데이터 세트에서 복잡한 패턴과 통찰력을 추출하는 데보다 유용한 도구가 될 수 있음을 의미합니다.


그림 5. MetaTrader 5에서 "Schnick"스크립트를 실행 한 결과 전문가 로그.


위 코드의 전체 버전은 코드베이스에서 다운로드 할 수 있지만이 스크립트는 마켓에서 지원 벡터 기계 학습 도구의 정식 버전을 구입 한 경우에만 터미널에서 실행할 수 있습니다. 이 도구의 데모 버전 만 다운로드 한 경우 전략 테스터를 통해 도구를 사용하는 것으로 제한됩니다. 데모 버전의 도구를 사용하여 "Schnick"코드를 테스트 할 수 있도록 스크립트의 복사본을 전략 도우미를 사용하여 배포 할 수있는 Expert Advisor로 다시 작성했습니다. 이 두 코드 버전은 아래 링크를 통해 다운로드 할 수 있습니다.


정식 버전 - MetaTrader 5 터미널에 배포 된 스크립트를 사용하여 (구입 한 버전의 Support Vector Machine Learning Tool 필요)


데모 버전 - MetaTrader 5 전략 테스터에 배포 된 Expert Advisor 사용 (Support Vector Machine Learning Tool의 데모 버전 만 필요)


벡터 머신을 시장에서 어떻게 지원할 수 있습니까?


분명히 위에서 언급 한 Schnick 예제는 매우 간단하지만이 예제와 기술 지원 시장을 분석하기 위해 지원 벡터 시스템을 사용하는 것과 비슷한 점이 많습니다.


기술 분석은 근본적으로 과거 시장 데이터를 사용하여 미래 가격 움직임을 예측하는 것에 관한 것입니다. schnick 예제에서와 같은 방식으로, 우리는 과거 동물 학자들의 관찰을 사용하여 새로운 동물이 schnick인지 아닌지 예측합니다. 또한, 시장은 지원 벡터 머신의 사용을 흥미로운 개념으로 만드는 잡음, 에러 및 통계적 이상 치를 처리해야합니다.


상당수의 기술 분석 거래 접근 방식의 기반은 다음 단계를 포함합니다.


여러 지표 모니터링 각 지표의 조건이 잠재적으로 성공적인 거래와 관련되는지 확인 각 지표를 관찰하고 모두가 (또는 대부분의 경우) 거래를 알리는 시점을 평가합니다.


유사한 방식으로 새로운 거래를 알리기 위해 지원 벡터 머신을 사용하는 유사한 접근 방식을 채택하는 것이 가능합니다. 이를 지원하기 위해 지원 벡터 기계 학습 도구가 개발되었습니다. 이 도구를 사용하는 방법에 대한 전체 설명은 마켓에서 찾을 수 있으므로 빠른 개요 만 제공합니다. 이 도구를 사용하는 프로세스는 다음과 같습니다.


그림 6. Expert Advisor에서 지원 벡터 머신 도구를 구현하기위한 프로세스를 보여주는 블록 다이어그램.


Support Vector Machine Learning Tool을 사용하려면 먼저 교육 입력과 출력이 어떻게 생성되는지 이해하는 것이 중요합니다.


훈련 입력은 어떻게 생성됩니까?


따라서 입력으로 사용하려는 표시기는 새 지원 벡터 시스템뿐만 아니라 이미 초기화되었습니다. 다음 단계는 지시기 핸들을 새 지원 벡터 머신에 전달하고 교육 데이터를 생성하는 방법을 지시하는 것입니다. 이 작업은 setIndicatorHandles () 함수를 호출하여 수행됩니다. 이 함수를 사용하면 초기화 된 표시기의 핸들을 지원 벡터 머신에 전달할 수 있습니다. 이것은 전달하고 핸들이 포함 된 정수 배열을 통해 수행됩니다. 이 함수의 다른 두 입력은 오프셋 값과 데이터 요소 수입니다.


오프셋 값은 트레이닝 입력을 생성하는 데 사용할 시작 막대와 현재 막대 사이의 오프셋을 나타내며 트레이닝 포인트 수 (N으로 표시)는 트레이닝 데이터의 크기를 설정합니다. 아래 다이어그램은이 값을 사용하는 방법을 보여줍니다. 오프셋 값 4와 N 값 6은 지원 벡터 머신에 흰색 사각형에 캡처 된 막대 만 사용하여 학습 입력 및 출력을 생성하도록 지시합니다. 마찬가지로 오프셋 값 8과 N 값 8은 지원 벡터 시스템에 훈련 사각형과 출력을 생성하기 위해 파란색 사각형에 캡처 된 막대 만 사용하도록 지시합니다.


setIndicatorHandles () 함수가 호출되면 genInputs () 함수를 호출 할 수 있습니다. 이 함수는 훈련에 사용할 입력 데이터의 배열을 생성하기 위해 지시자 핸들을 전달합니다.


그림 7. Offset과 N의 값을 보여주는 캔들 차트


교육 산출물은 어떻게 생성됩니까?


교육 산출물은 과거 가격 데이터를 기반으로 가설적인 거래를 시뮬레이션하고 그러한 거래가 성공했는지 실패했는지를 결정함으로써 생성됩니다. 이를 수행하기 위해 지원 벡터 머신 학습 도구에 가상의 거래를 성공 또는 실패로 평가하는 방법을 지시하는 데 사용되는 몇 가지 매개 변수가 있습니다.


첫 번째 변수는 OP_TRADE입니다. 이 값은 BUY 또는 SELL 일 수 있으며 가설적인 구매 또는 판매 거래에 해당합니다. 이 값이 BUY이면 출력을 생성 할 때 가설적인 구매 거래의 성공 가능성 만 보게됩니다. 또는이 값이 SELL이면 출력을 생성 할 때 가설적인 판매 거래의 성공 가능성 만 보게됩니다.


사용 된 다음 값은 이러한 가상 거래에 대한 손실 중지 및 이익 실현입니다. 값은 pips로 설정되며 가상의 거래마다 정지 및 한도를 설정합니다.


마지막 매개 변수는 거래 기간입니다. 이 변수는 몇 시간 단위로 측정되며이 최대 기간 내에 완료된 거래 만 성공한 것으로 간주됩니다. 이 변수를 포함하는 이유는 느린 이동 옆 시장에서 지원 벡터 시스템 신호 거래를 피하기 위해서입니다.


입력 선택시 고려 사항.


거래에서 지원 벡터 머신을 구현할 때 입력 선택에 대해 생각해 보는 것이 중요합니다. Schnick의 예와 마찬가지로, 차이 발생간에 유사 할 것으로 예상되는 입력을 선택하는 것이 중요합니다. 예를 들어, 이동 평균을 입력으로 사용하려는 유혹을받을 수 있지만 장기 평균 가격은 시간이지나면서 극적으로 변하기 때문에 이동 평균은 고립되어 사용하는 것이 최상의 입력이 아닐 수 있습니다. 6 개월 전의 이동 평균과 현저한 유사성이 없기 때문입니다.


우리가 EURUSD를 거래하고 '구매'거래를 알리기 위해 이동 평균 입력이있는 지원 벡터 머신을 사용한다고 가정합니다. 현재 가격이 1.10이지만 6 개월 전 가격이 0.55 일 때부터 교육 데이터를 생성한다고 가정 해보십시오. 지원 벡터 머신을 훈련 할 때 발견되는 패턴은 가격이 0.55 일 때 거래가 알려지기 때문에 이것이 아는 유일한 데이터이기 때문에 거래가 이루어질 수 있습니다. 따라서 지원 벡터 머신은 가격이 0.55로 내려갈 때까지 거래를 알리지 않을 수 있습니다.


대신에, 지원 벡터 머신에 사용하기위한 더 나은 입력은 MACD의 값이 평균 가격 레벨과 무관하며 상대적 이동 만 신호하기 때문에 MACD 또는 유사한 오실레이터 일 수 있습니다. 가장 좋은 결과를 얻는 방법을 알아보기 위해이 실험을 해보는 것이 좋습니다.


입력을 선택할 때 또 다른 고려 사항은 지원 벡터 머신이 새로운 거래를 알리는 지표의 적절한 스냅 샷을 갖도록 보장하는 것입니다. 당신은 자신의 거래 경험에서 MACD가 과거 5 개의 막대를 보았을 때 유용하다는 것을 알 수 있습니다. 이것은 추세를 보여줄 것입니다. MACD의 단일 막대는 위 또는 아래로 향하고 있는지 확인할 수있는 경우가 아니면 격리되어 쓸모가 없습니다. 따라서 MACD 표시기의 지난 몇 막대를 지원 벡터 머신으로 전달해야 할 수 있습니다. 이 작업에는 두 가지 방법이 있습니다.


MACD 표시기의 지난 5 개의 막대를 사용하여 경향을 단일 값으로 계산하는 새로운 사용자 정의 지표를 만들 수 있습니다. 그런 다음이 사용자 지정 표시기는 지원 벡터 컴퓨터로 단일 입력 또는으로 전달 될 수 있습니다.


지원 벡터 머신의 MACD 표시기의 이전 5 개 막대를 5 개의 별도 입력으로 사용할 수 있습니다. 이를 수행하는 방법은 MACD 표시기의 다섯 가지 인스턴스를 초기화하는 것입니다. 각 표시기는 현재 막대와 다른 오프셋으로 초기화 될 수 있습니다. 그런 다음 개별 표시기의 5 개 핸들을 지원 벡터 머신으로 전달할 수 있습니다. 옵션 2는 전문가 조언자의 실행 시간이 길어지는 경향이 있습니다. 더 많은 정보를 입력할수록 성공적으로 훈련하는 데 더 오래 걸립니다.


지원 벡터 머신 구현 및 전문가 고문.


저는 누군가 자신의 거래에서 지원 벡터 머신을 어떻게 사용할 수 있는지에 대한 예인 Expert Advisor를 준비했습니다. 이 복사본은 mql5 / en / code / 1229 링크를 따라 다운로드 할 수 있습니다. 다행히 Expert Advisor를 통해 지원 벡터 머신을 조금 실험 해 볼 수 있기를 바랍니다. 자신의 트레이딩 스타일에 맞게 Expert Advisor를 복사 / 변경 / 수정하는 것이 좋습니다. EA는 다음과 같이 작동합니다.


svMachineTool 라이브러리를 사용하여 두 개의 새 지원 벡터 머신이 생성됩니다. 하나는 새로운 '구매'거래를 알리기 위해 설정되고 다른 하나는 새로운 '판매'거래를 알리는 신호로 설정됩니다.


7 개의 표준 표시기는 각 핸들이 정수 배열로 저장된 상태에서 초기화됩니다 (참고 : 지표의 모든 조합을 입력으로 사용할 수 있으며 단일 정수 배열의 SVM으로 전달하면됩니다).


표시기 핸들 배열은 새로운 지원 벡터 시스템으로 전달됩니다.


인디케이터 핸들 어레이 및 기타 매개 변수를 사용하여 히스토리 가격 데이터를 사용하여 지원 벡터 머신을 교육하는 데 사용되는 정확한 입력 및 출력을 생성합니다.


모든 입력 및 출력이 생성되면 지원 벡터 시스템이 모두 훈련됩니다.


훈련 된 지원 벡터 머신은 새로운 '구매'및 '판매'거래를 알리기 위해 EA에서 사용됩니다. 새로운 '매수'또는 '매도'거래가 알려지면 거래는 수동 손절매 및 이익 주문 처리와 함께 열립니다.


지원 벡터 머신의 초기화 및 교육은 onInit () 함수 내에서 실행됩니다. 참고로, svTrader EA의이 부분은 아래에 노트와 함께 포함되어 있습니다.


고급 지원 벡터 기계 거래.


더 많은 고급 사용자를위한 지원 벡터 머신 학습 도구에 추가 기능이 내장되었습니다. 이 도구를 사용하면 사용자가 자신의 사용자 지정 입력 데이터와 출력 데이터를 전달할 수 있습니다 (Schnick 예제에서와 같이). 이를 통해 사용자는 벡터 시스템의 입력 및 출력을 지원하기위한 자체 기준을 직접 디자인하고이 데이터를 수동으로 전달하여 교육을 수행 할 수 있습니다. 이것은 거래의 어떤면에서도 지원 벡터 머신을 사용할 수있는 기회를 열어줍니다.


지원 벡터 머신을 사용하여 새로운 거래를 알릴 수있을뿐만 아니라 거래 마감, 금전 관리, 새로운 고급 표시기 등을 알리는 데에도 사용할 수 있습니다. 그러나 오류를받지 않도록하려면 이러한 투입물과 산출물이 어떻게 구성되어야하는지 이해한다.


입력 : 입력 값은 1 차원 값의 double 값으로 SVM에 전달됩니다. 생성 한 모든 입력은 이중 값으로 전달되어야합니다. 부울, 정수 등은 모두 지원 벡터 머신으로 전달되기 전에 double 값으로 변환되어야합니다. 입력은 다음 형식으로 필요합니다. 예를 들어, 3 개의 입력과 5 개의 트레이닝 포인트로 입력을 전달한다고 가정합니다. 이를 달성하기 위해 double 배열은 다음 형식의 15 단위 길이 여야합니다.


| 1 | B 1 | C 1 | A 2 | B 2 | C 2 | 3 | B 3 | C 3 | 4 | B 4 | C 4 | A 5 | B 5 | C 5 |


또한 입력 수에 대한 값을 전달해야합니다. 이 경우 N_Inputs = 3입니다.


출력 : 출력은 부울 값의 배열로 전달됩니다. 이 부울 값은 전달 된 각 입력 집합에 해당하는 SVM의 원하는 출력입니다. 위의 예에 따라 5 개의 트레이닝 포인트가 있다고 가정합니다. 이 시나리오에서는 5 단위의 출력 값 부울 배열을 전달합니다.


자신 만의 입력과 출력을 생성 할 때 배열의 길이가 전달한 값과 일치하는지 확인하십시오. 일치하지 않으면 불일치를 알리는 오류가 발생합니다. 예를 들어, N_Inputs = 3을 전달했고 입력이 길이가 16 인 배열 인 경우 오류가 발생합니다 (N_inputs 값을 3으로 지정하면 입력 배열의 길이가 삼). 마찬가지로 입력 집합 수와 전달되는 출력 수가 동일한 지 확인하십시오. 다시 말하지만 N_Inputs = 3, 입력 길이가 15, 출력 길이가 6 인 경우 5 개의 입력 집합과 6 개의 출력이 있으므로 다른 오류가 발생합니다.


교육 결과물에 충분한 변화가 있는지 확인하십시오. 예를 들어 길이가 100 인 출력 배열을 의미하는 100 개의 학습 포인트를 전달하고 모든 값이 하나만 참이면 false 인 경우 true와 false 사이의 구분이 충분하지 않습니다. 이것은 SVM 교육을 매우 빠르게하는 경향이 있지만, 최종 해결책은 매우 열악합니다. 보다 다양한 교육 세트는 종종 더 정서적 인 SVM으로 이어질 것입니다.


지원 벡터 머신 (SVM)과의 거래


마지막으로 모든 스타가 정렬되어 있고 새로운 거래 시스템의 백 테스트에 자신감을 가지고 시간을 할애 할 수 있으며 SVM (Support Vector Machines)은 잠시 바쁘게 지낼 새로운 "장난감"입니다.


SVM은 감독 된 Machine Learning 영역에서 잘 알려진 도구이며 분류 및 회귀에 모두 사용됩니다. 자세한 내용은 문헌을 참조하십시오.


가장 직관적 인 거래 신청은 회귀이기 때문에 SVM 회귀 모델을 만들어 보겠습니다.


ARMA + GARCH 모델에 대한 우리의 경험에 따라, 우리는 가격 대신 수익을 예측하는 것으로 시작합니다. 마찬가지로 첫 번째 테스트에서 지난 5 일간의 수익만을 특정 날짜의 수익을 결정하는 기능으로 사용합니다. 우리는 500 일의 역사를 훈련으로 시작할 것입니다.


더 많은 수학적 용어로, 훈련 집합에 대해 N 개의 특징이 있습니다. 각 특징마다 M 개의 표본이 있습니다. 우리는 또한 M 응답을 가지고 있습니다.


특성 값의 행, 왼쪽 행렬이 주어지면 SVM은 응답 값을 생성하도록 학습됩니다. 우리의 구체적인 예에서는 5 개의 열 (피쳐)을 가지며 각 열은 서로 다른 지연 (1에서 5까지)을 갖는 수익에 해당합니다. 우리는 500 개의 샘플과 그에 상응하는 응답을 가지고 있습니다.


SVM이이 세트에 대해 교육을 받으면 5 일 전의 반품에 해당하는 5 가지 기능 세트로 급식을 시작할 수 있으며 SVM은 예측 된 반품 인 응답을 제공합니다. 예를 들어 지난 500 일 동안 SVM을 교육 한 후 500 일, 499 일, 498 일, 497 일 및 496 일 동안 수익률을 사용합니다 (이는 501 일의 예상 수익을 얻기위한 입력 값입니다).


R에서 사용할 수있는 모든 패키지에서 e1071 패키지를 선택했습니다. 가까운 선택은 kernlab 꾸러미이었다, 나는 아직도 시험 할 예정이다.


그런 다음 몇 가지 전략을 시도했습니다. 처음에는 ARMA + GARCH 접근법과 비슷한 것을 시도했습니다. 이전 5 일 동안의 지연된 수익이었습니다. 나는이 전략이 ARMA + GARCH (ARMA + GARCH의 본거지이며 비슷한 성능으로 매우 행복했을 것입니다)보다 뛰어나다는 것을 알게되어 매우 놀라웠습니다!


다음으로 동일한 다섯 가지 기능을 시도했지만 최상의 하위 집합을 선택하려고했습니다. 선택은 0 개의 기능으로 시작하는 욕심 많은 접근법을 사용하고 오류를 최소화하는 기능을 대화식으로 추가합니다. 이 접근법은 사물을 더 발전 시켰습니다.


마지막으로 약 12 ​​가지 기능으로 다른 접근 방식을 시도했습니다. 포함 된 기능은 다른 기간 (1 일, 2 일, 5 일 등), 일부 통계 (평균, 중간, sd 등) 및 볼륨에 대해 반환합니다. 필자는 동일한 욕심 많은 접근 방식을 사용하여 기능을 선택했습니다. 이 최종 시스템은 매우 좋은 성능을 보여 주었지만 실행에 지쳐있었습니다.


이 게시물을 끝낼 시간, 백 테스트 결과는 기다려야합니다. 그때까지는 전체 소스 코드를 직접 재생할 수 있습니다. 다음은이를 사용하는 예제입니다.


코멘트는 닫힙니다.


최근 인기있는 글.


가장 많이 방문한 기사.


R 사용자를위한 작업.


bavotasan 디자인을 사용하여 WordPress에 의해 구동됩니다.


저작권 및 사본; 2017 R-bloggers. 판권 소유. 이 웹 사이트의 이용 약관.


구매 측 무역 주문 관리 시스템.


삭소 환율.


상인으로서 당신이 올바른 방향으로 외환을 입력하는 것이 매우 중요합니다. 예를 들어, 당신이 구매 SVM에 들어가기 전에 시장이 외환 거래 될 것이라는 확신을해야합니다.


당신이 구매 거래를하고 시장이 무너지면 무역은 막대한 손실을 보게 될 것입니다. 마지막 글에서는 R 언어와 소프트웨어에 대해 말했고 R을 사용하여 거래 시스템을 개선하는 방법을 설명했습니다. R은 강력한 통계적 외환 소프트웨어이며 오픈 소스입니다. 사용할 수있는 R 패키지보다 많은 모델이 있습니다. 우리의 목표는 우리의 거래 시스템을 개선하는 것입니다. 전략은 예측 적 통계 모델을 전적으로 가격 결정의 기술적 분석에 기초한 네이 키 거래 모델과 결합하는 것입니다.


예를 들어, 차트에서 Gartley 패턴을 발견하고 구매 신호를받습니다. 당신은 무엇을 forex해야합니까 당신은 구매 거래를해서는 안됩니다. 당신은 svm 하루가 끝날 때까지 나쁜 무역에서 자신을 구해 냈습니다.


이 글에서는 Support Vector Machine SVM을 사용하여 시장 방향을 예측하는 방법에 대해 논의 할 것입니다. 언제든지 forex에서 지원 벡터 머신을 사용할 수 있습니다. 당신이 구매 무역 forex H1 기간을 입력 할 계획이라고 가정 해보십시오. 당신의 SVM 모델은 다음 촛불이 곰곰이 같을 것이라고 예측합니다. 이 예측을 사용하여 다음 시간에 훨씬 더 좋은 가격으로 입력 할 수 있습니다.


이 게시물을 계속하기 전에 forex R 소프트웨어 및 RStudio 소프트웨어를 설치하고 설치해야합니다. Support Vector Machines는 커널 함수를 사용하여 svm 비선형 분류 문제를 선형 분류 문제로 변환하는 비선형 분류기입니다. Watch the video below that explains what an SVM is:.


Support Vector Machine is an important Machine Learning Algorithm. You should just have a broad understanding what is this algorithm and how you can use to cut your losses in your daily trading. As you can see from the above calculations it took around 6. We have used a radial basis function as the kernel. We need to do some tweaking and see if forex can improve the predictive accuracy. The above calculations have svm made using 5 lags of simple returns.


The time taken by R to do forex the calculations is just 5. We can trade binary options with this model on intraday timeframes of M15 and M Training error is always an overestimate.


This time we make the prediction svm EURUSD. These were the calculations for Svm candles. As you can see R forex the calculations pretty fast in 5 seconds.


Now if svm tweak the model more we can make the predictive accuracy svm. This is what I do. I have this model make the prediction. As you have seen above this forex hardly takes a few seconds to predict the next candle.


Once I have the prediction, I use my candlestick trading system and see if it confirms with the prediction. When both the predictions confirm each other, I open the trade otherwise I skip the trade. This helps in reducing the losses. You can see in the above calculations we reduced the number of lags from 10 to 5. This is svm indication that we should not try to reduce the number of lags. As you can see we can perform these calculations in just a few seconds.


If the prediction is svm up candle, we should avoid svm sell trade. Use your knowledge forex candlestick patterns and enter into a buy trade. Home About Privacy Policy FTC Disclosure Courses Fuzzy Logic For Traders Java For Traders Java Machine Learning For Traders Svm For Algorithmic Trading. How To Use A Support Vector Machine SVM In Daily Trading? How To Use Support Svm Machine SVM In Predicting Market Direction On Any Timeframe?


Watch the video below that explains what an SVM is: Get My Forex Systems FREE!! A Forex Scalping System That Makes Pips Anytime With A Small Stop Loss Of 10 Pips! Download My 3 Powerful Day Trading Indicators FREE Join Our Million Dollar Trading Challenge Today!


Download My Swing Trading System FREE. Join My Million Dollar Trading Challenge Today! Send Me The FREE System Plus Videos!!


Python Trading Strategy and Machine Learning Implementation.


4 thoughts on “Forex svm”


Students learn the past and current methods of artistic study, including psychoanalysis, feminism, social history, anthropology, and semiotics.


As a math teacher explains in his blog: most students who are receiving As or Bs and need homework the least will do it, while most students who are receiving Ds or Fs and need extra practice of a concept or skill do not do the homework anyway, or do it with almost no effort (Meyer).


More About Elijah Hand Tucker: Burial: College Corner (Union) IN iii.


In the Choose Color dialog box, select the Midnight Blue color and click OK.


How To Use A Support Vector Machine (SVM) In Daily Trading?


As a trader it is very important for you to enter the trade in the right direction. For example, you should be pretty sure the market is going to go up before you enter into a buy trade. If you enter a buy trade and market goes down, trade will end up hitting stop loss. If you have a method that can predict market direction with an accuracy above 70%, you can cut your overall risk of losing by 70%. In the last post I told you about R language and software and how you can use R in improving your trading system . R is a powerful statistical analysis software and is open source. There are more than 2000 R packages that are available to you that you can use to make your predictive models.


Our aim is to improve our trading system. The strategy is to combine your predictive statistical model with your naked trading model that is solely based on the technical analysis of price action. For example you spot a Gartley pattern on your chart and you have a buy signal. Your statistical predictive model tells you there is a 75% chance market will go down today. 당신은 무엇을해야합니까? You should not enter into a buy trade. You will see by the end of the day you have saved yourself from a bad trade. In this post we will discuss how to forecast market direction using a Support Vector Machine (SVM). You can use a support vector machine on any time frame. Suppose you are planning to enter into a buy trade on H1 timeframe. Your SVM model predicts that next candle to be bearish. You can use this prediction to enter at a much better price in the next hour.


How To Use Support Vector Machine (SVM) In Predicting Market Direction On Any Timeframe?


You should download R software and RStudio software and install it before you continue with this post. Support Vector Machines are non-linear classifiers that use a kernel function to transform a non-linear classification problem into a linear classification problem. Watch the video below that explains what an SVM is:


Support Vector Machine is an important Machine Learning Algorithm. Now you don’t need to master how to do the modelling with an SVM. You should just have a broad understanding what is this algorithm and how you can use to cut your losses in your daily trading.


SV type: eps-svr (regression)


parameter : epsilon = 0.1 cost C = 5.


Gaussian Radial Basis kernel function.


Hyperparameter : sigma = 0.05.


Number of Support Vectors : 1884.


Objective Function Value : -3870.229.


Training error : 0.285461.


Cross validation error : 0.08664.


& gt; #calculate the time taken to make an SVM.


& gt; user system elapsed.


As you can see from the above calculations it took around 6.65 seconds for R to perform all the above calculations. The training error is 28% meaning the predictive accuracy of this SVM Model is 72%. We have used a radial basis function as the kernel. We need to do some tweaking and see if we can improve the predictive accuracy. The above calculations have been made using 5 lags of simple returns. With these 5 simple return lags we are getting a training error of 28%. Let’s repeat the calculations with 10 lags and see if we succeed in reducing the training.


As you can see above we did the calculations with 10 lags and were able to reduce the training error to 22% meaning we achieved a predictive accuracy of 78%. The time taken by R to do all the calculations is just 5.13 seconds which means we can also use our model on intraday timeframes like M15 and M30. We can trade binary options with this model on intraday timeframes of M15 and M30. Training error is always an overestimate. When we do out of sample testing, we will get an error that will be something between 22% to 28%. As long as we have a predictive accuracy above 70%, we can use this SVM Model in our daily trading. Now let’s do the calculations for the intraday timeframe of M15. This time we make the prediction for EURUSD.


These were the calculations for EURUSDM15 candles. As you can see R made the calculations pretty fast in 5 seconds. The training error is approximately 25% meaning we achieved a predictive accuracy of 75%. Now if we tweak the model more we can make the predictive accuracy better.


This is what I do. I have this model make the prediction. As you have seen above this model hardly takes a few seconds to predict the next candle. Once I have the prediction, I use my candlestick trading system and see if it confirms with the prediction. When both the predictions confirm each other, I open the trade otherwise I skip the trade. This helps in reducing the losses.


You can see in the above calculations we reduced the number of lags from 10 to 5. We reduced the time of calculations by 1 second by training error went up to 30%. This is an indication that we should not try to reduce the number of lags. As you can see we can perform these calculations in just a few seconds. After this statistical modelling we know with at least 70% certainty the direction of the next candle. If the prediction is an up candle, we should avoid a sell trade. Use your knowledge of candlestick patterns and enter into a buy trade .


0 댓글.


간단한 Forex 시스템을 다운로드하면 매월 3 ~ 4 리스크의 위험 부담을 감수하고 H4 타임 프레임 거래를 잊어 버리고 M5, M15 & M30 기간에 바이너리 옵션을 거래 할 수 있습니다!


귀하의 정보는 우리와 함께 100 % 안전하며 결코 공유되지 않습니다.


저작권 및 사본; 2015 · Forex. TradingNinja · All Rights Reserved.


Get A Binary Options Strategy That Has 92% Average Winrate FREE!

No comments:

Post a Comment