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

 
СанСаныч Фоменко #:

AO의 예를 들어주실 수 있나요? 저는 선생님을 찾는 일이 단순하고 자동화에 적합한 일이라는 인상을 받았습니다.

그럴 수 있습니다.

가능한 한 간단하고 재현 가능한 방식으로 만들어야 합니다.

시간이 좀 걸리겠죠.

 
mytarmailS #:

당신은 할 수 있습니다...

관심이 있다면 가능한 한 간단하고 재현 가능한 예제를 만들어야 합니다...

약간의 시간이 필요합니다.

저에게는 매우 흥미롭습니다. 선생님을 찾는 과정은 길고 고통스러운 과정입니다.

 
mytarmailS #:

문제는 알 수 없는 매개변수를 찾는 최적화 문제입니다.

공부해야 할 유일한 문서는 https://www.mql5.com/ru/articles/2225 입니다.


AMO가 수익을 극대화하고 손실을 최소화하도록 가르치고 싶다면:


다음이 필요합니다.

1) 트레이딩 신호의 수익과 손실을 계산하는 함수인 적합성 함수를 만듭니다.

2) 적합성 함수를 위해 트레이딩 신호를 생성하는 MO 알고리즘(1페이지)

3) 모든 최적화 알고리즘(유전, 파티클 스웜, 이탈) - AMO의 타겟으로 신호를 생성합니다(2페이지).


다음과 같은 알고리즘

1) AO가 AMO의 타겟을 생성합니다.

2) 이 타겟에 대해 AMO를 학습시킵니다.

3) AMO가 거래 신호에 대한 예측을 생성합니다.

4) 거래 신호는 FF에 의해 평가되고 결과를 생성합니다.

5) FF 결과는 AO에 의해 평가되고 허용 가능한 결과를 얻을 때까지 원을 그리며 최대화/최소화됩니다.


==========

AO - 최적화 알고리즘

AMO - 머신 러닝 알고리즘

FF - 피트니스 함수

=========


추신: AMO가 아닌 뉴런카로 작업하고 싶다면 타겟팅을 학습하지 않고도 AO를 통해 가중치를 변경할 수 있습니다.

감사합니다!

이 답변의 공식화는 즉시 신호의 명확성과 구체성, 다양성 및 과도한 유연성이 누락 된 수동 거래의 구체화에 대한 질문으로 이어졌습니다. 즉, 생각할 거리가 있습니다.

 
СанСаныч Фоменко #:

저에게는 매우 흥미로운 일이에요. 선생님을 찾는 과정은 길고 고통스러운 과정이었어요.

다음은 AO를 통해 렌덤 포스트를 가르치는 코드입니다,

피트니스 함수 (우리의 목표)는 아름답고 안정적인 이익 성장, 즉 대차 대조표 역학과 직선 성장선 사이의 최대 상관 관계를 찾는 것입니다.

#  install.packages(c("randomForest","GA"))
library(randomForest)
library(GA)


#  создаю фейковые данные для простоты воспроизводимости
price <- cumsum(rnorm(100))
X <- embed(price,dimension = 10)[,10:1]
X <- t(apply(X,1,scale))
price <- tail(price,nrow(X))

#  настройка графики
par(mar=c(2,2,2,2))
layout(1:2)

#  запускаю генетический алгоритм
#  который "придумывает" такой таргет полсе обучения на котором
#  АМО даст самый красивый прирост капитала
best_res <- 0
GA <- ga(type = "real-valued",
         fitness = fitness, 
         lower = rep(-5,nrow(X)),
         upper = rep( 5,nrow(X)),
         popSize = 100,
         maxiter = 50,
         run = 20)


다음은 이익과 FF를 계산하는 함수의 코드입니다.

#  простая функция которая считает прибыль ( возможно не верно :)  ) 
count_equity <- function(trade_signal, price)  cumsum(c(diff(price),0)*trade_signal)

#  ФФ которая берет выход из АО и обучает АМО
fitness <- function(ga_out){
  
  target <- ga_out
  set.seed(123)
  rf <- randomForest(target~., X, ntree=100)
  pr <- predict(rf,X)
  
  trade_signal <- sign(pr)
  balance <- count_equity(trade_signal = trade_signal,price = price)
  res <- cor(balance, 1:length(balance))
   
  #  просто графика, необезательный елемент
  if(res>best_res){
    best_res <<- res
    plot(price,t="l",main="price")
    color <- ifelse(trade_signal==1,3,2)
    points(price,col=color,lwd=5,pch=20)
    plot(balance,t="l",col=4,main="balance")
  }
  return(res)
}



결과는 다음과 같습니다. AO는 AMO의 목표를 찾았고, 그 신호를 거래하면 아름다운 수익 성장을 얻을 수 있습니다.


 
Elvin Nasirov #:

감사합니다!

이 답변은 즉시 신호의 명확성과 구체성, 다양성 및 과도한 유연성이 누락 된 수동 거래의 구체화에 대한 질문으로 이어졌습니다. 즉, 생각할 여지가 있습니다.

여전히 수동 거래를 구체화 할 수 없습니다....

 
mytarmailS #:

다음은 렌덤 포레스트에 AO 도구를 사용하여 가르치는 코드입니다,

피트니스 함수(우리의 목표) - 아름답고 안정적인 수익 증가, 즉 대차대조표 역학 관계와 직선 상승선 사이의 최대 상관관계를 찾는 것입니다.


다음은 수익 및 FF 계산 기능의 코드입니다.



결과는 다음과 같습니다. AO는 AMO의 목표를 발견하여 신호를 거래하면 아름다운 수익 성장을 얻을 수 있습니다.


그래서? ) 새로운 데이터에 대한 결과에 어떤 영향을 미칩니까? 간단한 마크 업으로 FF없이 수행됩니다.
 
Elvin Nasirov #:

저는 다른 마크업을 하는 데 게으르다고 말하지 않고 다양한 변형을 시도하고 기계 학습의 선배가 아니기 때문에 어떤 아이디어가 떠오르면 결과를 얻기 위해 최소한 몇 가지 변형 된 예제를 찾으려고 노력합니다.

자체 지표 값으로 솔루션의 파라 메트릭 버전을 만들려고했지만 현재 컴퓨팅 성능으로 매개 변수 선택이 거의 10 년 동안 수행 될 지표 값 집합의 변형이 너무 많다는 것이 밝혀졌습니다.)

"시장에서 수익성있는 TS를 가져 가라"는 문구를 읽었을 때 놀랐습니다. 나는 그들이 거기에 없다고 생각했기 때문에이 옵션을 고려하지도 않았습니다.

이것은 모두 일종의 복잡한 인식입니다. 비효율을 찾아야 합니다. 스스로 찾을 수 없다면 다른 사람에게서 찾아야 합니다. 시장에는 역사가 있는 신호가 있습니다.
 
Maxim Dmitrievsky #:
그래서 뭐? ) FF가 없는 단순한 마크업입니다.

그렇게 간단했다면 AO와 FF도 없었을 텐데요...


필요한 것이 무엇인지 정확히 알고 알고리즘화하는 방법을 이해할 때 마크업으로 할 수 있습니다.

그리고 "어떤 모양이어야 할지 모르겠지만 보기 좋게 만들어주세요"라고 말하고 싶은 경우도 있습니다.

우리가 설명할 수 있는 것은 좋은/나쁜 것뿐이며, 그것이 바로 FF에 입력되는 것입니다.


다음은 작업의 예입니다:

작업은 클래스 중 하나에 대한 새로운 데이터에 대한 예측에서 실수를하지 않도록 AMO를 훈련시키는 것입니다. 클래스 중 하나는 전혀 실수하는 것이 금지되어 있습니다.

그러한 마크 업을 만드는 방법?


 
mytarmailS #:

그렇게 간단했다면 AO와 FF는 존재하지 않았을 것입니다.


필요한 것이 무엇인지 정확히 알고 알고리즘화하는 방법을 이해하면 마크업을 사용할 수 있습니다.

그리고 그냥 ' 어떻게 보여야 할지 모르겠지만 보기 좋게 만들어주세요'라고 말하고 싶은 경우도 있습니다.

우리가 설명할 수 있는 것은 좋은/나쁜 것뿐이며, 이것이 바로 FF에 내장된 기능입니다.


다음은 작업의 예입니다:

작업은 클래스 중 하나에 대한 새로운 데이터에 대한 예측에서 실수를 하지 않도록 AMO를 훈련시키는 것입니다.....

마크업으로 어떻게 할 수 있을까요?


마크 업 후 잃어버린 거래를 세 번째 클래스에 버리면 동일한 평평한 곡선이 얻어집니다.
최적화 기준의 선택은 새로운 데이터에 어떻게 작용할 수 있을까요? 기성 TS를 개선하는 수단입니다. 사용자 지정 손실을 검색하고 새로운 데이터에 무엇이 있는지 확인한다고요? 그것도 좋은 생각이 아닙니다.
 
Maxim Dmitrievsky #:
마크 업 후 손실 된 거래를 3 번째 클래스로 버리면 동일한 부드러운 곡선이 얻어집니다.

이 클래스로 얼마나 많은 코드를 작성하고, 버리고, 다시 훈련해야 하는지...

FF에서는 두 줄만 작성하고, 클래스 오류에 대해 페널티를 주고, 정답에 대해 보상하면 그게 다이고, 그 다음에는 스스로 수행하는 방법을 상상하고 코드 산이 필요하지 않습니다.....


좋아요, 쉬웠습니다. 다른 작업의 예를 들어보겠습니다.

AMO 입력은 유로 달러이고 출력은 다음과 같은 시리즈가되기를 원합니다 .

1) 파운드와 동조화됨

2) 차익 거래 AMO 행 / 파운드를 거래하면 이익이 있습니다.

마크업을 통해 어떻게 할 수 있을까요?

막심 드미트리예프스키 #:
최적화가 새로운 데이터에 대해 뭔가를 할 수 있나요?

일반 MO와 같은 방식으로 한 눈은 트랙에서, 다른 눈은 테스트에서 훈련하고 봅니다.