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

 
막심 드미트리예프스키 :
글쎄, 지금,하지만 당신은 5-15 조각을 증가시킬 수 있습니다, 지표는 더 나쁘지 않을 것입니다

체크메이트 예상 30포인트만 증분인데 어디서 보나요? 2014-2018 샘플에 대해 연구하고 2020에서 작업 - 종료에서 이것은 어디에 있습니까?

막심 드미트리예프스키 :
또는 먼저 상관 관계에 따라 모든 예측 변수를 제거한 다음(초 단위) 나머지 5-15개를 가져옵니다(최대한 많이 얻을 경우).

이것이 계량경제학 이 시간을 절약하는 방법입니다

결과보다 더 좋게 만들려고 하시겠습니까? 나는 샘플을 버릴 것입니다 - 크지 않습니다.

 
막심 드미트리예프스키 :

여기서 나는 전략의 죽음에 대해 생각했습니다 ...

앞으로 장기간 시장의 특성을 예측한다면? 그런 다음 예측된 특성으로 시리즈를 복원하고 학습하고 이 모델을 시장에서 거래합니다..이 방향으로 생각하려고 했습니까?


예를 들어, 시장의 스펙트럼을 예측 ...

"미래는 알 수 없지만 상상할 수는 있다"처럼
 
알렉세이 비아즈미킨 :

그래서 1단계 연구를 진행했습니다.

얼마나 힘이 들었는지...

 
mytarmails :

얼마나 힘이 들었는지...

이것은 모든 회의론자에게 주는 선물입니다.

 
막심 드미트리예프스키 :

또는 먼저 상관 관계에 따라 모든 예측 변수를 제거한 다음(초 단위) 나머지 5-15개를 가져옵니다(최대한 많이 얻을 경우).

그러나 나는 당신의 아이디어를 확인하겠습니다 - 그것은 나에게 어렵지 않습니다. 그래서 취해야 할 상관 계수는 무엇입니까? 그리고 나머지 예측 변수 중 5-15개를 선택하는 방법(구체적으로 작성)을 측정하고 정렬하는 방법은 무엇입니까?

 
mytarmailS :

얼마나 힘이 들었는지...

다른 사람의 돈을 세는 대신 R에 대해 말해 주시겠습니까?

여기에서 상관 관계를 계산하고 상관 관계 열을 제거하는 스크립트를 만들었습니다.

library( 'caret' )

df1 = read.csv( "F:\\FX\\Открытие Брокер_Demo\\MQL5\\Files\\Proboy_236_TP_4_SL_4\\Si\\Setup\\train.csv" , header = TRUE, sep = ";" ,dec = "." )

df1 <- df1[, ! colnames(df1)  % in % 
           c( "Target_100_Buy" ,
             "Target_100_Sell" ,
             "Target_P" ,
             "Time" ,
             "Target_100" )  ] # удаляем не нужные колонки
print (df1)
df2 = cor(df1)
hc = findCorrelation(df2, cutoff= 0.3 ) # putt any value as a "cutoff" 
hc = sort(hc)
reduced_Data = df1[,-c(hc)]
print (reduced_Data)
write.table(reduced_Data, file = "F:\\FX\\Открытие Брокер_Demo\\MQL5\\Files\\Proboy_236_TP_4_SL_4\\Si\\Setup\\outfile_03.csv" ,
            append = FALSE, quote = FALSE, sep= ";" ,
            eol = "\n" , na = "NA" , dec = "." , row.names = FALSE,
            col.names = TRUE, qmethod = c( "escape" , "double" ),
            fileEncoding = "" )

그리고 두 가지 질문이 있습니다.

1. for 루프에서 이 코드를 실행하는 방법, 즉 계수를 늘리고 계수의 인덱스와 함께 저장할 파일 이름을 변경하거나 주기에서 생성된 다른 디렉토리로 변경해야 합니다.

2. 계산을 위해 보조 열을 제거하고 상관 열을 삭제한 후 나타나는 테이블(df2)에 복사하는 방법을 설명합니다.

답변 해주셔서 감사합니다.

 
알렉세이 비아즈미킨 :

다른 사람의 돈을 세는 대신 R에 대해 말해 주시겠습니까?

여기에서 상관 관계를 계산하고 상관 관계 열을 제거하는 스크립트를 만들었습니다.

그리고 두 가지 질문이 있습니다.

1. for 루프에서 이 코드를 실행하는 방법, 즉 계수를 늘리고 계수의 인덱스와 함께 저장할 파일 이름을 변경하거나 주기에서 생성된 다른 디렉토리로 변경해야 합니다.

2. 계산을 위해 보조 열을 제거하고 상관 열을 삭제한 후 나타나는 테이블(df2)에 복사하는 방법을 설명합니다.

답변 해주셔서 감사합니다.

질문에 대한 답변 (2)

library( 'caret' )
#df1 загруженная дата
df1 <- as .data.frame(matrix(nrow = 100 ,ncol = 10 ,data = sample( 1 : 10 , 1000 ,replace = T)))
# head(df1)

not <- c( "V1" , "V2" , "V3" ) #  имена переменных которые нам НЕ нужны для корреляции

df2 <-  cor(     df1[, ! colnames(df1)  % in %  not]      )  
# head(df2)

not.need <- findCorrelation(df2, cutoff= 0.1 ) # putt any value as a "cutoff" 
not.need.nms <- colnames(df2[,not.need])  # получаем имена переменных что не прошли коррел тест
# head(not.need.nms)

# получаем изначальную  df1 только без признаков что не прошли отбор
reduced_Data <- df1[, ! colnames(df1)  % in %  not.need.nms]
# head(reduced_Data)


이제 동일하지만 더 깔끔하게 보이는 함수를 작성할 수 있습니다.

 get .findCorrelation <- function(data , not.used.colums , cor.coef){
library( 'caret' )
df2 <-  cor(     data[, ! colnames(data)  % in %  not.used.colums])  
not.need <- findCorrelation(df2, cutoff=cor.coef) 
not.need.nms <- colnames(df2[,not.need])  # получаем имена переменных что не прошли коррел тест
reduced_Data <- data[, ! colnames(data)  % in %  not.need.nms]
return (reduced_Data)}

gf <- get.findCorrelation(data = df1 , 
                          not.used.colums = c( "V1" , "V2" , "V3" ),
                          cor.coef = 0.1 )

파일이 입력됩니다

data = df1
핵심 분석에 사용되지 않을 열 지정

not.used.colums = c( "V1" , "V2" , "V3" )

음, coef의 설정. findCorrelation 함수의 correl

cor.coef = 0.1
출력에서 우리는 df1을 얻지만 가비지 기호가 없습니다.
 

이제 첫 번째 질문에 대한 답변

way <- "F:\\FX\\Открытие Брокер_Demo\\MQL5\\Files\\Proboy_236_TP_4_SL_4\\Si\\Setup\\"

cor.test.range <- seq(from = 0.1 ,to = 0.7 ,by = 0.1 )   # диапазон перебора в коеф корр

for (i in 1 :length(cor.test.range)){
  
  reduced_Data <- get.findCorrelation(data = df1 , 
                      not.used.colums = c( "V1" , "V2" , "V3" ),
                      cor.coef = cor.test.range[i] )
  
  file.name <- paste0( "test.with.cor_" , cor.test.range[i] , ".csv" )
   final .way <- paste0(way , file.name)
  
  
  write.csv2(x = reduced_Data,file = final .way,row.names = F)   # возможно это лучше
  
   # write.table(reduced_Data, file = final .way,
   #             append = FALSE, quote = FALSE, sep= ";" ,
   #             eol = "\n" , na = "NA" , dec = "." , row.names = FALSE,
   #             col.names = TRUE, qmethod = c( "escape" , "double" ),
   #             fileEncoding = "" )
}
 
알렉세이 비아즈미킨 :

다음으로 샘플 트레인에서 퀀텀 테이블의 고정 설정으로 훈련을 진행했습니다 - 60% 테스트 - 20% 테스트 - 20%

테스트에서 가장 성공적인 버전으로 모델을 조정했다고 생각하지 않습니까?
나 자신도 성공적인 테스트 사이트에 여러 번 갔고 생각했습니다. 여기 Grail )))). 그리고 몇 달 동안 세그먼트를 앞뒤로 이동한 후 모든 것이 명확해졌고 모델은 더 이상 동일하지 않고 예측 변수도 동일하지 않았지만 드레인이 있었습니다.

교차 검증 또는 진행 방향에 대한 모델 분석으로 완전히 전환했습니다. 기껏해야 50%50을 보았습니다.
마지막 메시지 중 하나의 도크 역시 교차 검증에 관한 것이었습니다.

 
YURY_PROFIT :

내가 여기에서 논쟁한 프로그래머인 Maxim은 백테스트에 대한 머신 러닝 조언자가 있습니다. - 그냥 발사, 순방향 테스트에서는 한 달 반 동안 지속되었으며 수익성 있는 통계도 있었고 이제는 일시 중지 없이 병합됩니다.)

YURY_PROFIT :

재교육 없이 최소 3개월 동안 실제 시장에서 수익으로 일한 수익성 있는 머신러닝 Expert Advisor의 예를 들어주세요.

그렇다면 지속적으로 재훈련하는 것의 문제점은 정확히 무엇인가? " 재훈련 없이" 진공 조건은 무엇입니까? 포워드가 적어도 하루 동안 작동한다면 이것은 이미 성배이며 최소한 모든 틱 을 재교육할 수 있습니다. 이것은 기술의 문제입니다.

사유: