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

 

여러 유형의 시계열 시뮬레이션과 그 특성을 살펴보고 정현파와 노이즈로 합성 계열을 만들었습니다(명확성을 높이기 위해 정현파를 사용했습니다).

결론은... 이 시뮬레이션은 아직 제대로 이해해야 합니다...


첫 번째 행은 원본(왼쪽 위)이고, 다른 모든 행은 첫 번째 행의 특성을 기반으로 만든 시뮬레이션입니다.

또 다른 실행


par(mar=c(2,2,2,2),mfrow=c(3,2))

n <- 1:1000
#  original series
s <- sin(n/50+1) + sin(n/20+15)/2 + rnorm(n,sd = 0.1) 
s |> plot(t="l", main = "original series (2 sin + noise)")

s |> rnorm(mean = mean(s),sd = sd(s)) |> cumsum() |> plot(t="l",main = "random generation")
library(forecast)
s |> ets() |> simulate() |> plot(t="l",main = "Exponential smoothing state space model")
s |> ar() |> simulate() |> plot(t="l",main = "Fit Autoregressive Models to Time Series")
s |> nnetar() |> simulate() |> plot(t="l",main = "Neural Network Time Series Forecasts")
s |> Arima() |> simulate() |> cumsum() |> plot(t="l",main = "ARIMA model to univariate time series")
 
Maxim Dmitrievsky #:

뭐가 문제인지 모르겠네요.

애초에 문제가 없었어요. 즉, 해결해야 할 문제가 없었습니다. 중간 결과를 공유하고 서로 다른 해석을 논의하는 것뿐이었죠.


저도 제 가정에 대해 꽤 실망했습니다.

트레이딩, 자동매매 시스템 및 트레이딩 전략 테스트 포럼

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

FXSABER, 2023.08.19 00:50

몬테카를로의 경우 원하는 통계 특성을 가진 무작위 기호를 생성하는 가장 좋은 옵션은 아마도 dopilivayut 일 것입니다.

나는 완벽하게 확장 가능한 실제 틱 히스토리의 무작위화를 통해 적절한 튜닝으로 완벽하게 확장 가능한 기호를 얻을 수 있다고 생각했습니다. 그러나 저는 완전한 실패를 경험했고, 적어도 실제 기록에서 완벽하게 스케일링되는 것이 무엇인지 궁금해졌습니다.

 
Maxim Dmitrievsky #:

여전히 틱에 알파가 더 많다는 뜻입니다.

막대로 작업할 때보다 틱으로 작업할 때 더 많은 정보를 얻을 수 있다는 것만 확실하게 말할 수 있습니다. 따라서 적절한 계산 능력을 갖춘 틱으로 작업하는 것이 합리적입니다.

 
mytarmailS #:

첫 번째 행은 원본(왼쪽 위)이고 다른 모든 행은 첫 번째 행의 특성을 기반으로 한 시뮬레이션입니다.

저는 시뮬레이션을 사용하지 않습니다. 시뮬레이션이 하는 일

  1. 막대 기록에서 여러 개(100개)의 통계 특성을 찾습니다.
  2. 이 100개의 통계 특성이 일치하도록 막대 계열을 생성합니다.

100개의 값으로 수백만 개의 값으로 이루어진 원래의 시리즈를 설명할 수 있다는 것은 터무니없는 일입니다! 이론가들을 위한 도구이지 실무자를 위한 도구는 아닌 것 같습니다.


제안된 알고리즘은 틱과 함께 작동합니다. 수신된 바에서 틱 볼륨이 일치하고 스프레드가 일치합니다. 뉴스에 대한 동일한 급격한 반응, 동일한 롤오버 동작 등이 동일합니다.

모두 멋지게 들립니다. 하지만 이런 무작위 추출 후에도 스캘핑을 가르칠 수는 없습니다. 그리고 지금까지는 이에 대한 설명이 없습니다.


필요한 무작위 기호를 생성하는 EX5 스크립트를 게시하고 싶지만 포럼 규칙이 이를 금지하고 있습니다. 아직 블로그 항목을 작성할 준비가되지 않았습니다. 이 스크립트를 돌리는 데 관심이 있으신 분은 저에게 연락주세요.

 
fxsaber #:

는 해결해야 할 문제가 아니었습니다.

다음을 해결하고 싶습니다.


작업.

실제 확장 가능한 기호를 무작위로 생성하여 확장성을 유지하도록 합니다.


목표.

몬테 칼릴.

 
fxsaber #:
하지만 완전한 실패를 경험하고 나니, 적어도 실제 스토리의 어떤 점이 완벽하게 두피에 닿게 만들었을까 궁금해졌습니다.

저는 연속적인 바/틱의 연속성 또는 반복성이 차이점이라고 생각합니다. 추세에서는 대부분 같은 방향이지만, 랜덤라이저는 평균 1초에 한 번씩 합니다.

 
Forester #:

차이점은 연속된 막대/틱의 연속성 또는 반복성에 있다고 생각합니다. 추세에서는 대부분 한 방향으로 진행되지만, 랜덤라이저는 평균적으로 1로 만듭니다.

몇 가지 가설이 있습니다. 실제 심볼과 임의의 심볼에 대해 이 스크립트를 실행하여 MathRand를 확인했습니다.

#property script_show_inputs

input datetime inFrom = D'2023.01.01';

double GetAvgPrice( const MqlTick &Tick )
{
  return((Tick.bid + Tick.ask) / 2);
}

void OnStart()
{
  MqlTick Ticks[];
  
  int Amount1 = 0;
  int Amount2 = 0;
  
  for (uint i = CopyTicksRange(_Symbol, Ticks, COPY_TICKS_INFO, inFrom * 1000) - 1; (bool)i--;)
  {
    const double Diff = NormalizeDouble(GetAvgPrice(Ticks[i]) - GetAvgPrice(Ticks[i + 1]), 8);
    
    if (Diff > 0)
      Amount1++;
    else if (Diff < 0)
      Amount2++;
  }
  
  Print(Amount1);
  Print(Amount2);
}

두 기호 모두 거의 동일한 값을 보였습니다. 흥미롭게도 Amount1 ~ Amount2. 즉, 경향성은 한 문자의 증분 개수가 아니라 증분 자체의 절대값에 의해 형성됩니다.

현재의 랜덤화 알고리즘에서는 증분 절대값의 순서는 변하지 않습니다.

 
fxsaber #:

몇 가지 가설이 있습니다. 실제 임의의 기호에 대해 이 스크립트를 실행하여 MathRand를 확인해 보았습니다.

두 기호 모두 거의 동일한 값을 보였습니다. 흥미롭게도 Amount1 ~ Amount2. 즉, 추세는 한 기호의 증분 개수가 아니라 증분 자체의 절대값에 의해 형성된다는 것입니다.

금액1 - 금액2는 다소 변동성이 있습니다. 추세성은 이 둘을 많이 합산하는 것입니다. 실제 데이터에서 추세는 하나이고, 무작위 데이터(약 1까지)에서 추세는 변동성이 증가하여 무작위 이상값과 비슷합니다. 실제 데이터보다 진폭이 몇 배 더 작다고 가정합니다.

UPD: ~ 대신 ~가 있는 것을 보지 못했습니다.

약 ~입니다. 대략적인 레이브는 실제 잘 섞여 있고 평균이 1이라는 뜻입니다.
 
fxsaber #:

제가 사용하는 시뮬레이션은 하나도 없습니다. 그들이 하는 일:

  1. 막대 기록에서 여러 개(100개)의 통계적 특성을 찾습니다.
  2. 이 100개의 통계적 특성이 일치하도록 일련의 막대를 생성합니다.

100개의 값으로 수백만 개의 값으로 이루어진 원래의 일련의 값을 설명할 수 있다는 것은 터무니없는 일입니다! 이론가들을 위한 도구이지 실무자를 위한 도구는 아닌 것 같습니다.

익숙하지 않은 것에 놀라서 터무니없다고 말하는 것은 터무니없는 일입니다.....

차원 축소 알고리즘이나 압축 알고리즘에 대해 잘 알고 계신가요?

fxsaber #:

제안된 알고리즘은 틱과 함께 작동합니다. 수신된 바에서 틱 볼륨이 일치하고 스프레드가 일치합니다. 뉴스에 대한 동일한 급격한 반응, 동일한 롤오버 동작 등이 동일합니다.

모두 멋지게 들립니다. 하지만 이런 무작위 추출 후에도 스캘핑을 가르칠 수는 없습니다. 그리고 지금까지는 이에 대한 설명이 없습니다.

무작위 추출이 실제 시장 과정을 얼마나 잘 시뮬레이션하는지에 대한 답은 다음과 같습니다.....

fxsaber #:

작업.

실제 스캘핑 가능한 심볼을 무작위화하여 스캘핑 가능한 상태로 유지합니다.

다음은 적절한 행 시뮬레이션을 만들기 위한 기준/적합성 함수입니다.

 
mytarmailS #:

낯선 것에 놀라고 터무니없다고 말하는 것은 터무니없는 일입니다 ....

이러한 인공 데이터에서 신호-주기적 함수, 1-2-10 주기로 충분한 분석 (예 : 50 바마다 동일한 기능 (절대적으로), 그러나 다른 노이즈, 다시 50 이후 등)으로 충분합니다. 시장 데이터에는 주기적 기능이 없으므로 모든 것을 분석해야 합니다....

사유: