고급 거래 소프트웨어 : 기술 분석 및 신경 네트워크.
현명한 거래자에게 힘을주었습니다.
고급 전략 최적화.
최적화는 전략을 테스트하고 수익성이 있는지 확인한 후에 시작해야합니다.
철저한 검색은 최적화 된 매개 변수의 가능한 모든 조합을 확인하므로 최상의 솔루션을 찾을 수 있습니다. 그러나 매개 변수의 수가 증가하면 철저한 검색을 수행하는 데 필요한 시간이 크게 늘어납니다.
유전자 알고리즘에 기반한 외환 거래 시스템.
Luís Mendes Pedro Godinho Joana Dias 작성자.
이 논문에서는 Forex 시장을위한 거래 시스템을 구성하는 일련의 규칙을 최적화하는 것을 목표로하는 유전자 알고리즘에 대해 설명합니다. 모집단의 각 개인은 10 개의 기술 거래 규칙 (5 개는 입장에 들어가고 나머지 5 명은 퇴장)을 나타냅니다. 이 규칙에는 총 31 개의 매개 변수가 있으며 이는 개인의 유전자에 해당합니다. 인구는 특정한 통화 쌍의 시계열에 의해 정의 된 주어진 환경에서 진화 할 것입니다. 주어진 개체의 적합성은 해당 환경에 얼마나 잘 적응할 수 있었는지를 나타내며 해당 규칙을 시계열에 적용한 다음 이익과 최대 인출률 (스털링 비율) 간의 비율을 계산하여 계산됩니다. . EUR / USD와 GBP / USD의 두 가지 통화 쌍이 사용되었습니다. 다른 데이터는 인구의 진화와 최고의 인물 테스트에 사용되었습니다. 시스템에 의해 얻어진 결과가 논의된다. 최고의 개인은 훈련 시리즈에서 아주 좋은 결과를 얻을 수 있습니다. 테스트 시리즈에서 개발 된 전략은 거래 비용을 고려할 때 긍정적 인 결과를 얻는 데 어려움을 나타냅니다. 거래 비용을 무시하면 그 결과는 대부분 긍정적 인 결과를 낳습니다.
노트.
감사 인사.
익명의 심판에게 감사의 말을 전한다.
참조.
저작권 정보.
저자 및 제휴사.
Luís Mendes 1 Pedro Godinho 2 Joana Dias 3 저자 1. Coimbra Universidade de Coimbra 코임브라 포르투갈 2. Economia 및 GEMF Facildade de Coimbra Universite de Coimbra Coimbra 포르투갈 3. Economia 및 Inesc-Coimbra Universidade de Coimbra Coimbra 포르투갈.
이 기사에 관하여.
개인화 된 권장 사항.
기사를 인용하십시오.
.RIS 논문 참조 관리자 RefWorks Zotero.
.BIB BibTeX JabRef Mendeley.
기사 공유.
해당 기사에 대한 무제한 액세스 즉석 다운로드 해당되는 경우 현지 판매 세 포함.
기사를 인용하십시오.
.RIS 논문 참조 관리자 RefWorks Zotero.
.BIB BibTeX JabRef Mendeley.
기사 공유.
손끝에서 천만 가지 이상의 과학적 문서를 제공합니다.
전환 판.
&부; 2017 Springer International Publishing AG. 스프링거 자연의 일부입니다.
양적 거래.
양적 투자 및 거래 아이디어, 연구 및 분석.
2015 년 10 월 16 일 금요일
오픈 소스 유전자 알고리즘 소프트웨어 (Guest post)
최근 Genotick은 거래 시스템 그룹을 만들고 관리 할 수있는 오픈 소스 소프트웨어입니다. Genotick의 핵심은 한마디로 중요한 요소입니다. 소수의 어셈블러 지침만으로 소프트웨어를 만들 수 있다면 비슷한 간단한 지침을 사용하여 거래 시스템을 생성 할 수 있어야합니다. 이렇게 간단하고 의미가없는 명령어는 함께 사용될 때 매우 강력 해집니다. 올바른 순서의 올바른 지침은 추세 추적, 평균 복귀 또는 기본 데이터를 기반으로하는 모든 유형의 기계 시스템을 만들 수 있습니다.
스노우 크론.
무료 E. Mail 클래스.
유전 알고리즘을 사용하여 수익성있는 외환 거래 전략 수립. Cortex Neural Networks 소프트웨어의 유전자 알고리즘 Feedforward Backpropagation 신경 회로망 유전학 계산을 기반으로 한 Forex 거래 응용 프로그램입니다.
이 예제는 이전 기사의 개념과 아이디어를 사용하므로 FOREX Trading Systems의 신경망 유전자 알고리즘을 먼저 읽으십시오. 필수 사항은 아니지만 먼저 읽어보십시오.
이 원본에 관하여.
먼저 면책 조항을 읽어보십시오. 이것은 Cortex Neural Networks 소프트웨어 유전 알고리즘 기능을 사용하는 예입니다. 수익성있는 거래를 수행하는 방법의 예는 아닙니다. 나는 당신의 전문가가 아니며, 귀하의 손실에 대해 책임지지도 않습니다.
Cortex Neural Networks 소프트웨어는 신경망을 가지고 있으며 앞서 논의한 FFBP는 외환 거래 전략을 선택하는 유일한 방법 일뿐입니다. 그것은 강력하고 적절한 적용을하면 훌륭한 기술입니다. 그러나 신경망을 가르치기 위해서는 "원하는 결과물"을 알아야합니다.
우리가 함수 근사를 할 때 수행하기가 쉽습니다. 함수의 "실제"값을 취합니다. 왜냐하면 우리는 그것이 무엇인지 알아야하기 때문입니다.
우리가 신경망 예측을 할 때, 신경망을 역사에 가르치는 기술 (이전 기사에서 설명한)을 사용합니다. 다시 말하면 환율을 예측하면 올바른 예측이 무엇인지 (훈련 중에) 알 수 있습니다. .
그러나 우리는 거래 시스템을 구축 할 때 환율을 알고 있다고하더라도 정확한 거래 결정이 무엇인지 알지 못합니다! 사실상, 우리는 언제든지 사용할 수있는 많은 외환 거래 전략을 가지고 있으며, 좋은 방법을 찾아야합니다 - 어떻게? 우리는 신경망의 원하는 결과물로 무엇을 공급해야합니까?
우리가 이전 기사를 읽었다면, 우리는이 문제를 해결하기 위해 속임수를 쓰고 있다는 것을 알고 있습니다. 우리는 신경망에 환율 (또는 환율 기준 지표) 예측을 수행하도록 강의 한 다음이 예측을 거래에 사용했습니다. 그런 다음, 프로그램의 신경망 부분을 벗어나서, 우리는 어떤 신경 네트워크가 최선인지 결정했습니다.
유전자 알고리즘은이 문제를 직접 처리 할 수 있으며 "최상의 거래 신호 찾기"라는 문제를 해결할 수 있습니다.
이 기사에서는 그러한 프로그램을 작성하기 위해 Cortex 신경망 소프트웨어를 사용할 것입니다.
유전 알고리즘 사용.
유전자 알고리즘은 매우 잘 개발되어 매우 다양합니다. 이 기사는 Cortex Neural Networks 소프트웨어가 할 수있는 것에 관한 것인데, 당신이 그 모든 것을 배우고 싶다면 Wikipedia를 사용하는 것이 좋습니다.
Cortex Neural Networks 소프트웨어를 사용하면 표시기의 값을 입력 받아 몇 가지 출력, 즉 거래 신호 (구매, 판매, 보류)를 생성하고 위치에 대한 손실을 막거나 이익 레벨을 취하는 신경망을 만들 수 있습니다 열릴.
물론 우리가이 신경망의 가중치를 무작위로 분류하면 거래 결과는 끔찍합니다. 그러나 그런 NN을 12 개 만들었다 고 가정 해 봅시다. 그런 다음 각 팀의 실적을 테스트하고 최고의 팀을 선정 할 수 있습니다.
이것이 NN의 "1 세대"였습니다. 2 세대를 계속하려면 수상자가 "창작"할 수 있도록해야하지만 동일한 사본을 얻지 않으려면 자손의 가중치에 임의의 노이즈를 추가하십시오.
2 세대에서는 1 세대 우승자가 있으며 불완전한 사본입니다. 다시 테스트 해 봅시다. 우리는 또 다른 승자를 얻게 될 것인데, 그 세대의 다른 신경 네트워크보다 더 낫습니다.
등등. 우리는 단순히 승자가 번식하고 실재 진화와 마찬가지로 패자를 없애기 때문에 거래 시스템 (유전 알고리즘)이 어떤 것인지에 대한 사전 지식 없이도 최상의 거래 신경망을 얻을 수 있습니다.
신경망 유전자 알고리즘 : 예 0.
이것은 최초의 유전자 알고리즘 예제이고, 아주 간단한 알고리즘입니다. 우리는 예제를 통해 사용할 모든 트릭을 배우기 위해 단계별로 살펴볼 것입니다.
코드에는 인라인 코멘트가 있으므로 중요한 순간에만 집중하겠습니다.
첫째, 우리는 신경망을 만들었습니다. 그것은 무작위 무게를 사용하고 있으며, 아직 가르쳐지지 않았습니다.
그런 다음 주기적으로 MUTATION_NN fumction을 사용하여 14 개의 복사본을 만듭니다. 이 함수는 소스 뉴럴 네트워크의 복사본을 만들어 0부터 (이 경우) 0.1의 무작위 값을 모든 가중치에 더합니다.
핸들은 15 개의 NN을 배열로 유지합니다. handle은 정수형이므로 처리 할 수 있습니다.
우리가 15 개의 NN을 사용하는 이유는 거래와는 아무런 관련이 없습니다. Cortex Neural Networks 소프트웨어는 최대 15 개의 라인을 동시에 차트에 표시 할 수 있습니다.
우리는 테스트에 대해 다른 접근법을 사용할 수 있습니다. 첫째, 학습 집합을 한 번에 사용할 수 있습니다. 두 번째로, 우리는 말하자면, 12000 명 (100000 명 중)의 여덟 명을 테스트 할 수 있으며 처음부터 끝까지 학습 세트를 진행할 수 있습니다. 그것은 learnigs를 다른 것으로 만들 것입니다, 우리가 신경 네트워크의 모든 특정 부분에 수익성이 있는지, 전체 집합에 대해서만 찾을 것입니다. 두 번째 방법은 데이터가 처음부터 끝까지 변하면 문제를 일으킬 수 있습니다. 그러면 네트워크가 진화하여 데이터 세트의 끝에서 거래 할 수있는 능력을 얻게되고 처음부터 거래 할 능력을 잃게됩니다.
이 문제를 해결하기 위해 데이터에서 12000 개의 레코드 조각을 무작위로 추출하여 신경망에 공급합니다.
아래에서는 각 네트워크에 대해 하나씩 하위 가중치를 추가합니다. 사실 돌연변이 tange에 대한 0.1이 유일한 선택은 아니며, 이 매개 변수조차 유전 알고리즘을 사용하여 최적화 할 수 있습니다.
새로 생성 된 NN은 15 개의 기존 NN 뒤에 추가됩니다. 이렇게하면 배열에 30 개의 NN이 있고 15 개의 기존 노드와 15 개의 NN이 있습니다. 그런 다음 두 번째 세대의 패자를 죽이기 위해 테스트의 다음 사이클을 수행 할 것입니다.
테스트를 수행하기 위해 데이터에 신경망을 적용하고 출력을 생성 한 다음이 출력을 사용하여 거래를 시뮬레이션하는 테스트 함수를 호출합니다. 거래 결과는 어떤 NN이 최선인지를 판단하는 데 사용됩니다.
nStart에서 nStart + nLearn까지 nLearn 레코드의 간격을 사용합니다. 여기서 nStart는 학습 집합 내의 임의의 지점입니다.
아래의 코드는 트릭입니다. 우리가 사용하는 이유는 유전 알고리즘이 유전 알고리즘을 만들 수 있다는 사실을 설명하는 것입니다. 그러나 그것은 반드시 최선의 알고리즘이 될 필요는 없으며 또한 학습에 대한 제한을 암시한다면 우리가 결과를 향상시킬 수 있다고 제안 할 것입니다 방법.
가능한 한, 우리의 거래 시스템은 긴 거래에서 아주 잘 작동하고, 짧은 거래에서는 매우 가난합니다. 말하자면, 긴 거래가 아주 좋은 경우, 이 유전 알고리즘은 짧은 거래에서 큰 손실을 입더라도 승리 할 수 있습니다.
이를 방지하기 위해 우리는 홀수의 긴 거래에 더 많은 가중치를 할당하고 짝수주기의 짧은 거래에 할당합니다. 이것은 단지 예일 뿐이며 어떤 것을 개선 할 것이라는 보장은 없습니다. 아래에서 수정에 대한 논의에서 더 자세히 설명합니다. 기술적으로, 당신은 그것을 할 필요가 없거나 그것을 다르게 할 수 있습니다.
정렬 된 배열에 이익을 추가하십시오. 그것은 삽입 위치를 반환하고, 그런 다음이 위치를 사용하여 신경망 핸들을 추가하고 정렬되지 않은 배열에 이익을 학습하고 테스트합니다. 이제 우리는 이익과 동일한 배열 인덱스에서 현재 신경 네트워크에 대한 데이터를 얻었습니다.
아이디어는 수익성별로 정렬 된 NN 배열에 도달하는 것입니다. 어레이는 이익에 따라 분류되기 때문에 수익이 적은 네트워크의 1/2을 제거하려면 NN 0 ~ 14 만 제거하면됩니다.
거래 결정은 Neural Network 신호의 가치를 기반으로하며, 이 관점에서 프로그램은 이전 기사의 예와 동일합니다.
FOREX 무역 전략 : 예 0을 논의하십시오.
먼저 차트를 살펴 보겠습니다. 첫 번째 반복 동안 수익에 대한 첫 번째 차트는 전혀 좋지 않습니다. 신경망이 손실됩니다 (이미지 폴더에서 첫 번째 반복 후 이미지 evolution_00_gen_0.png가 복사 됨).
사이클 15에서 이익을 얻는 이미지가 더 좋으며 때로는 유전 알고리즘이 매우 빠르게 배울 수 있습니다.
그러나 채도가 수익 곡선에 표시됩니다.
커브 번호 3은 항상 같은 신경망을위한 것이 아니라, 항상 태어나고 종료된다는 점을 명심하면서 개인 이익이 어떻게 변하는지를 보는 것이 흥미 롭습니다.
또한 외환 거래 시스템이 부족한 경우 짧은 거래에서 실적이 좋지 않으며, 그 기간 동안 유로화에 비해 달러가 떨어지고 있다는 사실과 관련이있을 수도 있고 아닐 수도있는 long에서 훨씬 잘 수행됩니다. 또한 지표의 매개 변수와 관련이있을 수 있습니다 (아마도 반바지에 다른 기간이 필요합니다). 지표의 선택이 필요할 수 있습니다.
다음은 92 사이클과 248 사이클 후의 역사입니다.
놀랍게도 유전 알고리즘은 완전히 실패했습니다. 왜, 어떻게 상황을 돕는 지 알아 내려고합시다.
우선, 각 세대가 이전 세대보다 낫지 않다고 생각하지 않습니까? 대답은 아니오입니다. 적어도 우리가 사용한 모델은 아닙니다. 한 번에 전체 학습을 설정하고 NN을 가르치기 위해 반복적으로 사용하면 그렇습니다. 각 세대마다 향상 될 것입니다. 그러나 대신 우리는 무작위적인 조각 (12000 개의 레코드)을 가져 와서 사용했습니다.
두 가지 질문 : 시스템이 무작위로 설정된 학습 집합에서 실패한 이유는 무엇입니까? 왜 전체 학습 집합을 사용하지 않았습니까? 잘. 두 번째 질문에 대답하기 위해, 나는했다. NN은 학습 세트에서 크게 성과를 보였습니다. 테스트 세트에서 실패했습니다. FFPB 학습을 사용할 때와 동일한 이유로 실패합니다. 다른 말로 표현하자면, 우리의 NN은 과도하게 특화되어 왔고, 익숙하지 않은 환경에서 생존하는 법을 배웠습니다. 이것은 자연에서 많은 일이 발생합니다.
대신 우리가 취한 접근법은 NN이 데이터 집합의 임의의 조각에 대해 좋은 수행을하도록함으로써 보완하기위한 것이므로 잘 알려지지 않은 테스트 집합에서 수행 할 수 있기를 바랍니다. 대신 그들은 테스트와 학습에 실패했습니다.
사막에 사는 동물을 상상해보십시오. 태양이 많고 눈이 전혀 없습니다. 이것은 우리의 NN 데이터가 환경의 역할을하기 때문에 리징 시장을위한 메타 포어입니다. 동물들은 사막에서 사는 법을 배웠습니다.
추운 기후에 사는 동물을 상상해보십시오. 눈과 태양이 전혀 없습니다. 글쎄, 그들은 조정했다.
그러나 실험에서 우리는 NN을 사막, 눈, 물, 나무에 무작위로 배치했습니다. 데이터의 다른 조각 (무작위로 상승, 떨어지는, 평평하게.)으로 그들을 제시함으로써. 동물들이 죽었다.
또는 달리 말하자면, 우리는 상승 시장을 겨냥한 무작위 데이터 세트 1을위한 최상의 신경망을 선택했습니다. 그런 다음 우승자와 자녀에게 낙찰 시장 데이터를 제공했습니다. NN은 제대로 수행되지 못했지만, 우리는 가난한 사람들, 아마도 돌연변이 어린이 중 한 명 이었지만 상승하는 시장에서 거래 할 수있는 능력을 상실했지만 낙상에 대처할 능력이있었습니다.
그런 다음 테이블을 다시 돌렸고 다시 최고의 연기자를 얻었습니다. 우리는 NN에게 보편적 인 기회를주지 않았습니다.
유전자 알고리즘은 오래된 정보에 대한 성능을 잃지 않고 새로운 정보를 학습 할 수있는 기술이 있습니다 (결국 동물은 여름과 겨울에 살 수 있습니다. 그래서 진화는 반복되는 변화를 처리 할 수 있습니다). 우리는이 기술을 나중에 논의 할 수 있습니다. 그러나이 기사에서는 성공적인 외환 자동 거래 시스템을 구축하는 것보다 Cortex 신경망 소프트웨어를 사용하는 방법에 대해 자세히 설명합니다.
신경망 유전자 알고리즘 : 예 1.
이제는 교정에 대해 말할 때입니다. 이전 단계에서 생성 한 간단한 유전자 알고리즘에는 두 가지 주요 결함이 있습니다. 첫째, 이익으로 거래하지 못했습니다. 그것은 괜찮습니다, 우리는 부분적으로 훈련 된 시스템을 사용할 수 있습니다 (처음에는 수익이있었습니다). 두 번째 결함은 더 심각합니다. 우리는이 시스템이하는 일에 대한 통제권이 없습니다. 예를 들어 수익성이 있다는 것을 배울 수 있지만 엄청난 손실을 감수해야합니다.
실생활에서 진화가 하나 이상의 매개 변수를 동시에 최적화 할 수 있다는 것은 잘 알려진 사실입니다. 예를 들어 우리는 빨리 달릴 수 있고 추위에 잘 견디는 동물을 얻을 수 있습니다. 왜 우리의 외환 자동 거래 시스템에서 같은 일을하려고하지?
우리가 수정을 사용하는 것은 추가 징계의 집합 일뿐입니다. 말하자면, 우리 시스템은 drawdown 0.5로 거래하고, 0-0.3 간격으로 확인하고 싶습니다. 시스템에 실수를했다고 "알리기"위해 우리는 DD의 크기에 비례하여 그 이익을 줄입니다 (어떤 유전자 알고리즘을 결정할 지 결정했습니다). 그런 다음 진화 알고리즘이 나머지를 처리합니다.
우리가 고려해야 할 몇 가지 요소가 더 있습니다. 구매 및 판매 운영 횟수를 동일하게 유지하거나 더 많은 수익성있는 운영을 원한다면 실패로 이어질 수 있습니다. 선형 등등.
evolution_01.tsc에서 우리는 간단한 수정 세트를 구현합니다. 우선, 초기 보정 값으로 큰 숫자를 사용합니다. 우리가 적용하고자하는 "처벌"에 따라 작은 값 (일반적으로 0에서 1 사이의 값)을 곱합니다. 그런 다음 우리는이 이익에 이익을 곱합니다. 결과적으로, 유전자 알고리즘이 우리의 다른 기준과 얼마나 일치하는지 반영하기 위해 이익이 수정됩니다. 그런 다음 결과를 사용하여 승자 신경망을 찾습니다.
FOREX 무역 전략 : 토론 예 1.
예제 1은 예제 0보다 훨씬 잘 작동합니다. 처음 100 사이클 동안 많은 것을 배웠고 수익 차트는 안심했습니다. 그러나 예제 0에서와 같이 긴 거래는 훨씬 수익성이 높습니다. 이는 우리의 접근 방식에 문제가 있음을 의미합니다. 그럼에도 불구하고이 시스템은 상반되는 초기 조건들 사이의 균형을 발견했다.
학습 집합과보다 중요한 테스트 집합에서 긍정적 인 동력이 있습니다.
추후 학습에 관해서는 사이클 278에서 우리 시스템이 과도 해졌다는 것을 알 수 있습니다. 즉, 우리는 여전히 학습 집합에 진전이 있음을 의미합니다.
그러나 테스트 세트는 약점을 보여줍니다.
이것은 NN의 공통적 인 문제입니다 : 우리가 학습 집합에 대해 가르치면, 학습 집합에 대한 학습을 할 때 학습하고 때로는 학습 집합에서 성능을 잃어 버릴 때까지 학습합니다.
이 문제를 해결하기 위해 "전통적인"솔루션이 사용됩니다. 신경망은 계속해서 새로운 최고치에 도달 할 때마다 이전 세트를 덮어 쓰고 신경 쓰는 것이 좋습니다. 이것은 FFBP 교육에서 사용한 것과 같은 접근법입니다. 이번에는 코드를 추가하고 테스트 세트에서 최상의 신경망을 찾고 SAVE_NN을 호출하거나 뉴럴 네트워크의 가중치를 파일). 이렇게하면 훈련을 중단 할 때 최고의 테스트 수행자가 저장되고 기다리고 있습니다.
또한 최대 값이 아님을 유의하십시오. 이익은 있지만 최적의 성과이므로 테스트 세트에서 최고의 연기자를 찾을 때 수정을 고려하십시오.
FOREX 기술 분석을위한 유전 알고리즘 : 지금 어디 있습니까?
승자 신경망을 얻은 후에는 이전 기사에서 설명한 단계를 수행하여 해당 신경망의 가중치를 내 보낸 다음 Meta Trader, Trade Station 등과 같은 실시간 거래 플랫폼에서 사용할 수 있습니다.
또는 신경 회로망을 최적화하는 다른 방법에 집중할 수 있습니다. FFBP 알고리즘과 달리 학습 및 테스트 세트를 사용하여 avay를 얻고 순차 학습을 이동할 수 있습니다.
Comments
Post a Comment