신경망에 대한 입력에 공급할 지표 세트를 검색합니다. 논의. 결과 평가 도구.

 

포럼의 모든 참가자 및 방문자에게 인사드립니다.


신경망에 대한 입력을 제출하는 데 가장 적합한 지표 세트에 대해 토론하고 검색하는 데 관심이 있는 모든 사람들을 초대하고 싶습니다.

내 프로그램에서 신경망의 수익성은 평가 도구 역할을 할 수 있으며, 훈련된 신경망이 로드되지 않은 MQL4 Expert Advisor를 업로드할 수도 있습니다. 합리적인 범위 내에서 Rauzmeet.


나는 임의의 수의 레이어와 각 레이어의 뉴런이 있는 자체 작성(자바에서) 퍼셉트론을 가지고 있으며 JGAP 라이브러리(http://jgap.sourceforge.net/)의 유전 알고리즘으로 이를 훈련합니다.

첫 번째 레이어에서 뉴런의 수는 입력 수와 동일하고 두 번째 레이어에서 - 임의, 세 번째 레이어에서 - 1개의 뉴런. 신경망은 거래 신호를 생성합니다(신경망 출력 >0.5 - 매수, 신경망 출력<-0.5 - 매도). 신호는 자체 작성 거래 테스터에 의해 처리되며, 이 테스터는 신경망의 신호에 대한 위치를 뒤집습니다(또는 열린 위치가 없는 경우 시장에 진입). 유전자 알고리즘의 목적 함수는 최종 이익입니다. 그러한 접근 방식을 통해 가능한 모든 오류를 최소화하고 실제 거래에 최대한 가깝게 학습을 가져올 수 있습니다. 훈련된 네트워크를 MQL4 Expert Advisor로 내보내고 MT4 전략 테스터에서 작업을 확인합니다. 나는 MT4 표시기에서 신경망에 대한 입력을 형성하고 파일에 업로드합니다.프로그램은 표시기와 조언자를 생성하고 파일에 씁니다(이렇게 하면 혼란과 오류가 적습니다).

내 관찰에 따르면 4계층 네트워크는 3계층 네트워크보다 더 많은 이익(보통 더 적음)을 제공하지 않지만 훈련하는 데 더 오래 걸립니다.
Core2 Quadro 2.3에서 4일 동안 8-10-1 네트워크를 훈련했습니다. 초기 인구가 다른 10개의 병렬 스트림은 "더 많은 수익을 내는" 서로 경쟁합니다. 4일 만에 개체군에 200개의 염색체가 있는 약 4000세대가 지났습니다. 최대 이익은 처음 2000세대에서 배웠으며 더 나아가 이익이 증가하지 않았습니다. 이익의 가장 큰 증가는 처음 100세대에 있었습니다.

이 네트워크의 결과를 MT4 Strategy Tester에서 살펴보았습니다. 네트워크가 +-0.5 임계값에 거의 도달하지 않고 거래 신호가 작동하지 않는 것으로 나타났습니다. 나는 그 이유를 이해하지 못했다. 나는 MQL4로 내보내기의 정확성을 확인했습니다 ). 임계값을 0.4로 낮추었고 작동하는 것 같았습니다... 게다가 EA는 한 번에 위치를 되돌릴 수 없다는 것을 발견했습니다... 내 EA는 막대가 닫히고 가격이 다음 막대 전에 떠날 수 있을 때 작동합니다 . 그러나 이것은 또한 그렇게 중요하지 않습니다 ... 교육 기간 동안 (나는 1-08-09에서 1-10-09까지 가르칩니다) MT4의 이익은 MT4의 테스트 기간 동안 내 테스터보다 적었습니다 (1- 10-09 09 ~ 1-11-09), 네트워크는 수익성이 있었습니다. 적자 입력이 발생하는 순간을 보니 신경망에 들어가는 데이터에 정보가 충분하지 않다는 인상을 받았습니다...

신경망의 입력에 적용했습니다: (k=100)

a [ 0 ] = ( iMA ( NULL , 0 , 13 , 0 , MODE_EMA , PRICE_CLOSE , i ) - Close [ i ] ) * k ;
a [ 1 ] = ( iMA ( NULL , 0 , 21 , 0 , MODE_EMA , PRICE_CLOSE , i ) - Close [ i ] ) * k
a [ 2 ] = ( iMA ( NULL , 0 , 34 , 0 , MODE_EMA , PRICE_CLOSE , i ) - Close [ i ] ) * k
a [ 3 ] = ( iMA ( NULL , 0 , 55 , 0 , MODE_EMA , PRICE_CLOSE , i ) - Close [ i ] ) * k
a [ 4 ] = ( iMA ( NULL , 0 , 89 , 0 , MODE_EMA , PRICE_CLOSE , i ) - Close [ i ] ) * k
a [ 5 ] = ( iMA ( NULL , 0 , 144 , 0 , MODE_EMA , PRICE_CLOSE , i ) - Close [ i ] ) * k * 0.9 ;
a [ 6 ] = ( iMA ( NULL , 0 , 233 , 0 , MODE_EMA , PRICE_CLOSE , i ) - Close [ i ] ) * k * 0.8 ;
a [ 7 ] = ( iMA ( NULL , 0 , 377 , 0 , MODE_EMA , PRICE_CLOSE , i ) - Close [ i ] ) * k * 0.6 ;
지표가 어떻게 작동하는지 상상할 수 있지만 시장 상황을 반영할 최소 지표 수를 독립적으로 선택할 만큼 지표와 시장을 이해하지 못합니다...

나는 포럼에서 검색하기 시작했고 (불행히도 나는 아이디어를 가져온 게시물의 저자를 기억하지 못했습니다):

a [ 0 ] = ( iMA ( NULL , 0 , 3 , 0 , MODE_EMA , PRICE_CLOSE , i ) - iMA ( NULL , 0 , 5 , 0 , MODE_EMA , PRICE_CLOSE , i ) ) * 200 ;
a [ 1 ] = ( iMA ( NULL , 0 , 5 , 0 , MODE_EMA , PRICE_CLOSE , i ) - iMA ( NULL , 0 , 8 , 0 , MODE_EMA , PRICE_CLOSE , i ) ) * 200 ;
a [ 2 ] = ( iMA ( NULL , 0 , 8 , 0 , MODE_EMA , PRICE_CLOSE , i ) - iMA ( NULL , 0 , 13 , 0 , MODE_EMA , PRICE_CLOSE , i ) ) * 200 ;
a [ 3 ] = ( iMA ( NULL , 0 , 13 , 0 , MODE_EMA , PRICE_CLOSE , i ) - iMA ( NULL , 0 , 21 , 0 , MODE_EMA , PRICE_CLOSE , i ) ) * 150 ;
a [ 4 ] = ( iMA ( NULL , 0 , 21 , 0 , MODE_EMA , PRICE_CLOSE , i ) - iMA ( NULL , 0 , 34 , 0 , MODE_EMA , PRICE_CLOSE , i ) ) * 150 ;
a [ 5 ] = ( iMA ( NULL , 0 , 34 , 0 , MODE_EMA , PRICE_CLOSE , i ) - iMA ( NULL , 0 , 55 , 0 , MODE_EMA , PRICE_CLOSE , i ) ) * 150 ;
a [ 6 ] = ( iMA ( NULL , 0 , 55 , 0 , MODE_EMA , PRICE_CLOSE , i ) - iMA ( NULL , 0 , 89 , 0 , MODE_EMA , PRICE_CLOSE , i ) ) * 140 ;
a [ 7 ] = ( iMA ( NULL , 0 , 89 , 0 , MODE_EMA , PRICE_CLOSE , i ) - iMA ( NULL , 0 , 144 , 0 , MODE_EMA , PRICE_CLOSE , i ) ) * 130 ;
a [ 8 ] = ( iMA ( NULL , 0 , 144 , 0 , MODE_EMA , PRICE_CLOSE , i ) - iMA ( NULL , 0 , 233 , 0 , MODE_EMA , PRICE_CLOSE , i ) ) * 120 ;
1-08-09에서 1-10-09 사이의 기간 동안 10개의 스트림, 200세대, 인구 규모 200에서 가르쳤습니다(내 Java 테스터가 결과를 제공함).
순 9-10-1 : 이익 10521
순 9-20-1 : 이익 10434
네트워크 9-30-1 : 이익 10361
네트워크 9-50-1 : 이익 10059
결과는 좋은데 이전옵션으로 하는게 더 나을거같긴한데...이전입력과 함께 넣어야할듯.(과거훈련결과 저장안함)

-1에서 +1 범위의 값을 가져오려면 추가 요소가 필요합니다.


써주신 내용을 읽고나서, 훈련된 신경망을 Expert Advisor로 내보내는 과정에서 에러가 날 수 있다는 생각이 들었습니다.. 다시 테스트를 해봐야겠네요...

추신: 이제 저는 임의 구조의 순환 신경망을 작성하고 있습니다(내가 이해하는 대로 순환 신경망은 값뿐만 아니라 경사각도 고려합니다).

 

문제는 당신과 비슷합니다. 접근 방식이 다릅니다.

저에게서 유전학자는 엔지니어보다 더 못하지만 대략적으로 그 본질을 이해하고 있습니다.

몇 가지 질문을 드리겠습니다. 점수를 최대화하는 목적 함수는 IMHO에서 최선의 선택이 아닙니다. 내가 올바르게 이해했다면 위의 예에서 특정 시스템 세트를 정렬하게 될 것입니다. 귀하의 경우 9, 글쎄, 심지어 그것의 최상단에서도 정지 이익 + 더 많은 환상을 최적화하여 총 적어도 하나 시스템(여기서 표시기 사용)에서는 최소 수백, 두 개 또는 세 개의 가능한 옵션으로 실행됩니다. 카드 내부의 옵션을 정렬할 때 CCI 또는 RSI가 일반적으로 눈에 띄지 않는 것으로 가정해 봅시다. 다음으로 현재 순간에 대한 마법의 지표가 있습니다. mov(20)-mov(10) > < 0 으로 설정합니다. 유리한 상황이 얼마나 오래 지속되는지 평가하거나 최소한 추정하는 방법.

 
iliarr >> :

나는 임의의 수의 레이어와 각 레이어의 뉴런이 있는 자체 작성(자바에서) 퍼셉트론을 가지고 있으며 JGAP 라이브러리(http://jgap.sourceforge.net/)의 유전 알고리즘으로 이를 훈련합니다.

훈련은 어떻게 진행하나요? 학습 알고리즘을 설명해주세요.

제 기억이 맞다면 - JGap은 유전자를 위한 라이브러리일 뿐입니다. 더 이상 국회와 관련이 없는 알고리즘입니다. 아마도 문제는 게놈이 어떻게 형성되고 적합성 기능의 올바른 선택인지입니다.

 

ga의 도움으로 네트워크를 훈련시키는 데는 많은 함정이 있습니다. 당신은 해결할 수 있을 것입니다... 적어도 "네트워크가 훈련에서처럼 얼마나 오래 작동할 것입니까?"라는 질문에 대한 해결책입니다. - 나에게 ha의 도움으로 배울 때, 그것은 전혀 불가능해 보인다.

ns의 도움으로 예측 문제의 표준 솔루션으로 전환하는 것이 좋습니다.

 
rip >> :

훈련은 어떻게 진행하나요? 학습 알고리즘을 설명해주세요.

제 기억이 맞다면 - JGap은 유전자를 위한 라이브러리일 뿐입니다. 더 이상 국회와 관련이 없는 알고리즘입니다. 아마도 문제는 게놈이 어떻게 형성되고 적합성 기능의 올바른 선택인지입니다.

JGap은 유전 알고리즘을 구현하는 라이브러리입니다. 저에게 이것은 특정 길이의 벡터에 의존하는 목적 함수를 제공해야 하는 블랙박스입니다. 이 라이브러리의 유전 알고리즘은 목적 함수가 최대가 되도록 이 벡터의 값을 선택합니다. 내 목적 함수는 신경망의 신호를 처리하여 거래 이미터의 이력을 통과하는 데 따른 이익을 제공합니다. 유전 알고리즘에 의해 값이 선택되는 벡터는 신경망 뉴런의 가중치를 결정합니다.

이반두락 >> :

문제는 당신과 비슷합니다. 접근 방식이 다릅니다.

저에게서 유전학자는 엔지니어보다 더 못하지만 대략적으로 그 본질을 이해하고 있습니다.

몇 가지 질문을 드리겠습니다. 점수를 최대화하는 목적 함수는 IMHO에서 최선의 선택이 아닙니다. 내가 올바르게 이해했다면 위의 예에서 특정 시스템 세트를 정렬하게 될 것입니다. 귀하의 경우 9, 글쎄, 심지어 그것의 최상단에서도 정지 이익 + 더 많은 환상을 최적화하여 총 적어도 하나 시스템(여기서 표시기 사용)에서는 최소 수백, 두 개 또는 세 개의 가능한 옵션으로 실행됩니다. 카드 내부의 옵션을 정렬할 때 CCI 또는 RSI가 일반적으로 눈에 띄지 않는 것으로 가정해 봅시다. 다음으로 현재 순간에 대한 마법의 지표가 있습니다. mov(20)-mov(10) > < 0 으로 설정합니다. 유리한 상황이 얼마나 오래 지속되는지 평가하거나 최소한 추정하는 방법.

불행히도, 열거형으로 최적의 지표를 검색할 컴퓨팅 리소스가 없습니다(10개의 스레드에서 네트워크 9-10-1, 200세대, 1-08-09에서 1-10-09까지의 기간 동안 인구 규모 200). 뉴런의 가중치 수(유전자 알고리즘이 선택하는 벡터의 길이) = 181) 1시간 이상).

시장 상황을 반영하는 일련의 지표가 필요합니다. 지표는 단순해야 하며 가급적이면 표준 MT4(구현 및 가능한 오류의 문제)가 30개뿐입니다. 지표가 시장이 어디로 가는지 정보를 제공하는 목적은 없습니다. 가격 변동에서 가능한 한 많은 정보를 끌어낼 필요가 있습니다.


여기가 좋아요... 어떻게 그리고 무엇을 쓸지 생각하고, 공식화하고, 더 많은 이해가 있습니다... 포럼과 당신, ivandurak 덕분입니다. :)

 
iliarr >> :

JGap은 유전 알고리즘을 구현하는 라이브러리입니다. 저에게 이것은 특정 길이의 벡터에 의존하는 목적 함수를 제공해야 하는 블랙박스입니다. 이 라이브러리의 유전 알고리즘은 목적 함수가 최대가 되도록 이 벡터의 값을 선택합니다. 내 목적 함수는 신경망의 신호를 처리하여 거래 이미터의 이력을 통과하는 데 따른 이익을 제공합니다. 유전 알고리즘에 의해 값이 선택되는 벡터는 신경망 뉴런의 가중치를 결정합니다.

그게 바로 내 얘기야...


그런 다음 JGap에 전달하는 벡터를 어떻게 형성합니까? W 값의 벡터인지 아니면 W 값으로 인코딩됩니까?

대상 기능은 무엇입니까? 예를 들어 보겠습니다. E[i](t) = D[i](t) - Y[i](t) 함수를 대상 함수로 사용하면 E는 오류이고 D는 예상 값입니다. 출력에서 Y - 훈련 샘플을 적용할 때 얻은 값 X, i - 뉴런의 노름, t - 에포크 수. 그런 다음 NN은 E[i](t) = Sign(D[i](t) - Y[i](t))*(D[i](t) - Y[i]를 취하면 하나씩 학습합니다. (t ))^2 여러 문제에서 결과가 훨씬 좋습니다. 만약 우리가 고전적인 역학 시스템(Lorentz, Henon, Rössler, ..)의 반사 어트랙터 시리즈를 형성한다면 우리는 깊이가 아니라 여전히 그러한 데이터를 근사화하도록 네트워크를 훈련할 수도 있습니다.


나는 이 경우가 무익하다고 생각하기 때문에 통화 시세에서 형성된 시리즈로 그것을 시도하지 않았습니다 :)

 
이 디자인을 사용하면 드로우다운 없이 거의 수직적 형평성을 얻을 수 있습니다. 뉴런의 재훈련 문제를 해결하시겠습니까?
 
IlyaA >> :
이 디자인을 사용하면 드로다운 없이 거의 수직적 형평성을 얻을 수 있습니다. 뉴런의 재훈련 문제를 해결하시겠습니까?

그리고 과적합이 없을 수도... 작성자가 테스트 샘플에 대한 오류 그래프를 제공하면 과적합이 발생하는 상황을 즉시 말할 수 있습니다.

 
rip >> :

그리고 과적합이 없을 수도... 작성자가 테스트 샘플에 대한 오류 그래프를 제공하면 과적합이 발생하는 상황을 즉시 말할 수 있습니다.


동의한다. 그것은 블랙 박스와 함께 작동합니다. 재교육을 받을 가능성이 매우 높습니다. iliarr님, 교육 일정을 게시할 수 있습니다.
 
iliarr >> :...........

당신은 아무 것도 없이 기계를 사용합니다. 또는 헛되이 이동 평균 만 사용하십시오. 다양한 유형의 지표로 실험해 보십시오. 각 지표의 알고리즘이 다른 지표와 근본적으로 다른 것이 바람직합니다. 그런 다음 웹에 대한 추가 정보를 얻으십시오.

잠시만 더.

NN 신호를 기반으로 하는 반전 거래 시스템을 사용하고 있습니다. 이것은 표준 이동 평균 전문가와 절대적으로 동일합니다. 더 좋지도 나쁘지도 않습니다.

NN의 도움으로 SL과 TP의 크기를 결정하는 방법과 열린 위치를 유지하는 방법을 찾으십시오. 무작위로 열 수도 있습니다.


statbars 작성 >>

ga의 도움으로 네트워크를 훈련시키는 데는 많은 함정이 있습니다. 당신은 해결할 수 있을 것입니다... 적어도 "네트워크가 훈련에서처럼 얼마나 오래 작동할 것입니까?"라는 질문에 대한 해결책입니다. - 나에게 ha의 도움으로 배울 때, 그것은 전혀 불가능해 보인다.

ns의 도움으로 예측 문제의 표준 솔루션으로 전환하는 것이 좋습니다.

GA는 최적화 도구(자동차용 드라이버)일 뿐입니다. 최소한의 차이로 이를 사용하거나 다른 최적화 알고리즘(스크루드라이버)을 사용할 수 있습니다.

 

안녕하세요

NS에 대해 배우는 것은 항상 흥미로웠지만 이 주제에 대한 문헌을 읽기 시작하자마자 머리가 끓기 시작하고 결국 NS가 무엇인지조차 이해할 수 없었습니다.

간단한 예를 들어 설명해 주시겠습니까(손가락으로 말해서) 그것이 무엇인지

감사해요