트레이딩의 머신러닝: 이론, 모델, 실전 및 알고리즘 트레이딩 - 페이지 14

 
알렉세이 버나코프 :
좋아, 당신은 생각할 수 있습니다. 예를 들어, 각 반복에서 신경망은 예측에서 목표의 편차를 기반으로 표준 오차 역전파를 수행하지 않지만 이전 버전의 척도에서 실제 거래가 다음과 같이 이상과 다르다는 데이터를 수신 한다고 상상해 보십시오. 그리고 그런 수의 점. 그리고 이 정보를 기반으로 가중치를 업데이트합니다. 즉, infa는 병렬 스트림으로 머신으로 이동해야 합니다. 하는 것이 현실일 수도 있습니다.

왜 무게가 필요합니까? 왜 그들에 대해 이야기합니까?

나는 이전 가중치가 필요하다는 것을 이해하고, 이제 나는 아무것도 이해하지 못했다는 것을 이해합니다)

 
mytarmailS :

왜 무게가 필요합니까? 왜 그들에 대해 이야기하고 있습니까?

나는 이전 가중치가 필요하다는 것을 이해하고, 이제 나는 아무것도 이해하지 못했다는 것을 이해합니다)

글쎄, 그런 것 같다

우리는 무게가 필요하지 않습니다. 나는 당신에게 그것을 분명히하기 위해 그것들을 언급했습니다. 우리는 시스템이 이전 규모에서 어떻게 거래되었는지 알아야 합니다. 우리는 어떤 통합된 형태로 거래의 결과가 필요합니다. 모두.

가중치는 알고리즘에 의해 업데이트됩니다.

 

여기서 간단한 기능이 작동합니다. 뭔가 더 시도하기 어렵습니다. 그것은 여전히 차별화되어야합니다. 그것이 점프입니다.

library(neuralnet)


y <- as.data.frame(matrix(runif(n = 10000, min = -15, max = 15), ncol = 2))

y$V3 <- runif(n = 5000,  min = -15, max = 15)

y$V4 <- runif(n = 5000,  min = -15, max = 15)

y$V5 <- runif(n = 5000,  min = -15, max = 15)

y$V6 <- runif(n = 5000,  min = -15, max = 15)

y$V7 <- runif(n = 5000,  min = -15, max = 15)

y$V8 <- y$V1 ^ 2 + y$V2 ^ 2

colnames(y) <- c('input_1', 'input_2', 'noise_1', 'noise_2', 'noise_3', 'noise_4', 'noise_5', 'output')


f_f <- function(x, y){

1/2*(y-x)^2

}


print(

nn_model <- neuralnet(formula = output ~ input_1 + input_2 + noise_1

, data = y

, hidden = 1

, threshold = 0.01

, stepmax = 1e+05

, rep = 100

, startweights = NULL

, learningrate.limit = NULL

, learningrate.factor = list(minus = 0.5, plus = 1.2)

, learningrate=NULL

, lifesign = "none"

, lifesign.step = 10

, algorithm = "rprop+"

, err.fct = f_f #"sse"

, act.fct = "logistic"

, linear.output = F

, exclude = NULL

, constant.weights = NULL

, likelihood = FALSE

)

)

 

f_f <- 함수 (x, y) 1/2*(yx)^2

f_f - 네트워크에 대한 오류를 계산합니까?

x는 값이 되어야 하는 값입니다(이상적인 곡선).

y - 이것이 실제로 어떻게 되는지(실제 곡선)

그들 사이의 차이점은 오류입니다

하지만 데이터를 제출하는 방법을 이해하지 못합니다. 이전 데이터에 따른 거래 벡터가 필요합니다. 양초 및 이러한 거래를 여는 규칙에 따라 거래와 함께 이러한 입력 데이터가 일반적으로 어떻게 보여야 하는지

 
mytarmails :

f_f <- 함수(x, y) 1/2*(yx)^2

f_f - 네트워크에 대한 오류를 계산합니까?

x는 값이 되어야 하는 값입니다(이상적인 곡선).

y - 이것이 실제로 어떻게 되는지(실제 곡선)

그들 사이의 차이점은 오류입니다

하지만 데이터를 제출하는 방법을 이해하지 못하는 점이 있어 이전 데이터에 따른 거래 벡터가 필요합니다. 양초 및 이러한 거래를 여는 규칙에 따라 거래와 함께 이러한 입력 데이터가 일반적으로 어떻게 보여야 하는지

거의 사실입니다. X는 예측 벡터 ns입니다. Y는 네트워크가 예측하는 전방 바(예: )당 가격 증분 벡터입니다. 그리고 전체 기능은 NN 알고리즘이 각 반복에서 보게 되는 것입니다. 현재까지 결과가 없습니다. 그들은 모델링해야합니다.

글쎄, 어떻게. 위치를 여는 논리를 설명 하고 함수 본문에 스프레드를 직접 입력해야 합니다. 벡터의 열린 위치에 대한 결과를 쓰고 벡터의 적분 특성을 계산합니다.

유형: 구매<-(y-spread)[x>0]. 이것은 반바지의 경우에도 long..의 벡터가 됩니다. 그런 다음 모두<-append(구매, 판매)합니다.

그러나 대부분 작동하지 않을 것입니다. 함수 유형(.
 
그 동안 나는 실험을 계속한다. 나는 한 쌍의 eurusd 로만 차를 훈련시켰고 검증에서 약간의 긍정적인 MO를 받았습니다.

첨부된 것은 MT4에서 현재 모델 확인의 스크린샷입니다. 학습 단계는 아직 진행 중입니다... 전체 결과는 내일만 볼 수 있습니다. 계산은 미결 거래가 없는 경우 R 및 매분과 함께 상당히 길다. 1999년부터 시작했습니다. 검증은 2010.09.부터 시작됩니다. 2003년까지의 현재 차트.

나는 10개의 5자리 포인트의 스프레드를 사용합니다. MO 검증에서 7-8점을 예상합니다. 많지는 않지만 .... 스프레드가 10 포인트인 DC를 이미 찾을 수 있으므로 결과가 실질적으로 중요하다고 생각합니다.
파일:
 

한 동료가 기계 학습 과정에 대한 링크를 던졌습니다. 봐주세요. 어떻게 평가하시나요? 이 과정은 무료지만 어떤 이유로 Python에서 젠장할((

https://www.udacity.com/course/machine-learning-for-trading--ud501

 
알렉세이 볼찬스키 :

한 동료가 기계 학습 과정에 대한 링크를 던졌습니다. 봐주세요. 어떻게 평가하시나요? 이 과정은 무료이지만 어떤 이유로 Python에서 망할 ((

https://www.udacity.com/course/machine-learning-for-trading--ud501

가장 효율적:

1. R을 넣어 - 5분

2. GUI로 설계된 래틀 패키지를 다운로드하므로 R에 대한 지식이 필요하지 않습니다.

3. 초기 비용을 줄이려면 내 기사 를 가져 가라. 설명도 있고 무엇보다 완성된 파일이 첨부되어 있습니다. 내 파일을 보면 쉽게 나만의 파일을 준비할 수 있습니다.

4. 6개의 모델을 가져오세요.

5. 래틀 프레임워크에서 가장 중요한 것은 머신 러닝의 전체 주기를 볼 수 있습니다.

  • 초기 데이터 준비(데이터 마이닝)
  • 모델링
  • 결과 평가
  • R의 모든 행동에 대한 보너스 텍스트로. 이 텍스트는 딸랑이 외에 사용할 수 있습니다.

이 모든 것이 빈틈이 없는 특정 토대를 제공할 것이며 가장 중요한 것은 Forex와 관련된 머신 러닝의 구체적인 경험을 제공할 것입니다.

추신.

래틀은 첫 번째 단계에서뿐만 아니라 미래에도 매우 유용할 것입니다. 무언가를 알아내고 실험하는 데 드는 최소한의 비용...

PSPS

물론 책 없이는 할 수 없습니다. 여기 그것들 가득합니다. 검색이 잘 됩니다.

 
mytarmailS :

Dr.Trader 에 대한 자세한 설명 감사합니다!

아마도 가장 정확하고 올바른 것은 반전 자체에 대해 동일한 지그재그로 가르치는 것, 즉 세 가지 상태를 제공하는 것이라는 것을 알고 있을 것입니다.

2) 거절하다

3) 반전 없음

그러나 배우기 위해서는 반전을 포착하기가 매우 어렵고 관측 수의 왜곡이 있습니다. "반전이 아닌" 클래스가 수십 또는 수백 배 더 많을 것입니다.

어떤 예측 변수를 사용하고 어떤 결과를 가져옵니까?

나는 스펙트럼 분석을 마스터하기 시작했고, 첫 번째 샘플은 지표를 사용하는 것보다 훨씬 더 나은 것으로 판명되었으며, 그것을 통해 실행했습니다. 훈련 및 검증의 오류는 6%로 밝혀졌지만 코드를 R로 전송하기 시작했을 때, 내가 실수하지 않으면 오류가 최대 30%까지 올랐습니다. San Sanych는 재교육이 일반적으로 지금까지 많이 이해되지 않는다고 말합니다.

스펙트럼 분석을 통해 시장을 지배하는 기간을 찾는 방법도 있습니다. 이 기간을 지표로 대체할 수 있습니다. 적응 지표를 얻고 기록에 적합하지 않습니다. 첫 번째 테스트는 고무적이었지만 힘을 모을 수 없었습니다. 이 모든 더미를 선반 위의 내 머리에 넣기 위해

저는 예측 변수를 생성하기 위한 기초로 표준 지표를 사용합니다. 지금까지 이 포럼 주제에서 아이디어를 시도하면서 직접 실험하고 있습니다.

지난 몇 주 동안 이 작업을 수행해 왔으며 이제 다음과 같이 최상의 결과를 얻습니다. (많은 계산, 더 빠르게 만들기 위해 D1 기간에 일반적으로 이 접근 방식을 연구한 다음 더 작은 TF로 전환합니다)

1) mt5에서 csv로 내보내기: ohlc, 시간, 표시기, 마지막 10개 막대 모두. 최근에 가장 새로운 막대부터 시간을 내기 시작했는데, 남은 막대의 시간이 계산되어 새로운 정보를 전달하지 않는 것 같아요. 수백 개의 "기본" 예측 변수가 나옵니다. 필수 학습 결과 - "1" 또는 "0" - 다음 막대에 대한 가격 인상 또는 하락. 지그재그로 모든 것이 불안정하고 어려워 보입니다. 이제 종가를 다루는 것이 더 좋습니다. 전체 모델 훈련 알고리즘을 처음부터 만들면 지그재그와 추세 예측을 수행할 수 있습니다.

2) 사용 가능한 데이터(더하기, 델타, 최소값, 최대값 등)를 사용하여 R에서 다양한 수학 연산을 수행합니다. 이미 1000개 이상의 예측 변수가 있습니다.

3) 분명히 2단계 이후에는 필요 이상으로 쓰레기가 더 많이 나온다. http://www.r-bloggers.com/principal-components-regression-pt-2-y-aware-methods/ 주요 구성 요소에 대한 기사의 방법에 따라 필터링했습니다. . 저는 PCR 모델 자체를 훈련하지 않습니다. 당분간은 예측 변수의 예비 선별을 위해 다음과 같은 기능에서 멈췄습니다.

library( 'vtreat' )
PrunePredictors <- function(srcTable, pruneSig = - 1 ) {
        targetName <- tail(colnames(srcTable), 1 )
        
        treatmentsN <- designTreatmentsN(srcTable,setdiff(colnames(srcTable),targetName),targetName, verbose=FALSE)
         if (pruneSig< 0 ){
                pruneSig = 1.0 /(ncol(srcTable)- 1 )
        }

        scoreFrameSorted <- treatmentsN$scoreFrame[,c( "origName" , "psig" , "code" )]
        scoreFrameSorted <- subset( scoreFrameSorted, code == "clean" )[, 1 : 2 ]
        scoreFrameSorted <- scoreFrameSorted[with(scoreFrameSorted, order(psig)), ]
        
        scoreFrameSortedPruned <- subset( scoreFrameSorted, psig < pruneSig)
        scoreFrameSortedPruned <- scoreFrameSortedPruned[, 1 ] 
        
        cat( "Minimal psig:" , scoreFrameSorted[ 1 , 2 ], "\n" )
        cat( "Maximal psig:" , scoreFrameSorted[nrow(scoreFrameSorted), 2 ], "\n" )
        cat( "Threshold:" , pruneSig, "\n" )
        cat( "Good predictors:" , nrow(subset( scoreFrameSorted, psig < pruneSig)), "\n" )
        
         return (scoreFrameSortedPruned)
}

srcTable - 예측 변수가 있는 테이블, 마지막 열은 원하는 학습 결과여야 합니다. pruneSig는 -1로 남겨두어야 합니다.

결과적으로 함수는 몇 가지 유용한 정보를 포함하는 테이블의 열 이름이 포함된 목록을 반환합니다. 또는 유용한 것이 없으면 빈 목록입니다. 이 방법은 기사에서 특별히 중요하지 않은 것으로 표시되어 있지만 상당히 적절하며 쓰레기를 아주 잘 걸러냅니다. 또한 결과 목록은 더 유용한 것부터 덜 유용한 것까지 중요도에 따라 정렬됩니다.

4) 함수가 빈 목록을 반환하는 경우 - 두 번째 단계를 다시 수행하고 사용 가능한 데이터에 대해 다른 수학적 조합을 다시 생성한 다음 제거를 위한 세 번째 단계를 수행합니다. 따라서 3~4회 반복해야 합니다. 데이터의 양은 각 반복과 함께 증가하므로 생성되는 새 데이터의 양을 어떻게든 제한하는 것이 좋습니다. 드롭아웃에 대해 이 함수를 변경할 수 있습니다. 그러면 목록이 비어 있는 경우 100개 또는 2개의 최상의 결과를 반환하고 이러한 결과에서만 새 예측자가 생성될 수 있습니다.

5) 또한 기사에 따르면 주요 구성 요소의 모델을 학습해야 합니다. 나는 이것에 문제가 있습니다. 지금까지 훈련된 모델에 대한 최고의 r-제곱은 = 0.1입니다. 이것으로는 충분하지 않습니다. 기사에서 그들은 최소한 0.95가 필요하다고 썼습니다. 그러나 얻은 예측 변수에서 R에서 다른 모델을 훈련할 수 있으며 결과는 더 좋습니다. 나는 뉴런에 대한 가장 많은 경험을 가지고 있으며, 전면 테스트에서 가장 좋은 결과는 약 37%의 오차로 나옵니다. 이론적으로 PCE 모델은 재교육 등 없이 더 안정적이어야 하지만, 지금까지는 이에 대한 예측 변수를 수집할 수 없었습니다.

전면 테스트에서 30% 오류가 있는 경우 이미 수익성이 높은 모델입니다. mt5에 대한 어드바이저를 만들고 전략 테스터에서 확인하십시오.

 
알렉세이 볼찬스키 :

한 동료가 기계 학습 과정에 대한 링크를 던졌습니다. 봐주세요. 어떻게 평가하시나요? 이 과정은 무료지만 어떤 이유로 Python에서 젠장할((

https://www.udacity.com/course/machine-learning-for-trading--ud501

이 과정을 보기 시작했는데 Python의 Pandas 프레임워크에 대한 많은 관심이 있습니다. 첫 번째 수업은 데이터 분석이 아니라 바로 이 프레임워크에 대한 자습서와 비슷합니다. 그러나 발표자는 다른 많은 쓸모없는 교육에서와 같이 전형적인 "나는 Forex 전문가입니다. 이제 눈을 뜨면 수백만 달러를 벌게 될 것입니다"가 없어도 적절해 보입니다. 이것은 적절한 것이 끝까지 이야기될 것이라는 희망을 줍니다. 그러나 이 과정이 외환이 아니라 주식 거래를 위해 설계되었다는 점을 고려할 가치가 있습니다. 이 두 영역에서 모델을 교육하는 프로세스가 유사한지는 모르겠습니다.
사유: