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

 
fxsaber #:

감사합니다, MathRand 증분을 사용해 보겠습니다.

알렉세이 니콜라예프 #:

가장 보편적인 것은 아마도 몬테카를로일 것입니다.

흥미로운 랜덤 세대가 있는 것 같습니다.

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

void SetAvgPrice( MqlTick &Tick, const double Price )
{
  const double Spread = (Tick.ask - Tick.bid) / 2;
  
  Tick.bid = NormalizeDouble(Price - Spread, 8);
  Tick.ask = NormalizeDouble(Price + Spread, 8);
  
  return;
}

// Случайный знак приращения средней цены.
bool RandomPrice( MqlTick &Ticks[] )
{  
  const int Size = ArraySize(Ticks) - 1;
  
  if (Size > 0)
  {
    Print("Random price...");
    
    MqlTick PrevTick = Ticks[Size];
    double PrevPrice = GetAvgPrice(PrevTick);
    
    MathSrand((int)TimeLocal());
    
    for (uint i = Size; (bool)i--;)
    {
      const double Diff = GetAvgPrice(PrevTick) - GetAvgPrice(Ticks[i]);
      
      PrevTick = Ticks[i];

      SetAvgPrice(Ticks[i], PrevPrice += !(MathRand() & 1) ? Diff : -Diff);
    }
  }
  
  return(Size >= 0);
}

위쪽은 실제 기호이고 아래쪽은 무작위입니다.

랜덤 프라이스는 반복적으로 적용할 수 있습니다. 스프레드와 시간이 보존됩니다.


로그를 통해 수행하는 것이 맞지만 신경 쓰지 않았습니다. 이를 개선하면 몬테카를로가 필요한 통계적 특성을 가진 랜덤 심볼을 생성하는 데 가장 적합한 옵션이 될 수 있습니다.

 
fxsaber #:

를 사용하는 것이 원하는 통계적 특성을 가진 무작위 기호를 생성하는 데 가장 좋은 옵션일 것입니다.

동일한 세트로 이가 테스트합니다.

상단 - 실제, 하단 - 무작위.

실패.

 

차이점은 최적화 결과에서 아무것도 찾지 않는다는 것입니다. 즉, 처음 5개의 최적화 결과는 이전에 OOS에서 실행된 적이 없습니다.

 

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

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

발레리 야스트렘스키, 2023.08.17 10:44 AM

오탐과 음성의 확률이 줄어든다는 것은 논리적으로 보이지만 오류에 대한 만병통치약은 아닙니다.

(train+test)_optim보다 train_optim + test_forward 모델을 더 신뢰해야 한다고 생각하시나요?

 
Aleksey Vyazmikin #:

오류 없습니다. 오류 없습니다. 오류 없습니다.

다른 샘플(47%의 단위와 5배 적은 예제)을 채취했는데, 몇 번의 통과 후 이미 많은 양자 세그먼트를 발견했다고 말할 수 있습니다.

제가 주목한 또 다른 사항은 초기 목표와 생성 된 목표의 유사성입니다. 49 % 유사합니다. 여기에 임계 값을 설정해야 할 수도 있습니다 (유사성이 30 % 이하)? 어떤 생각 있으신가요?

일치하는 항목이 "-1"이면 일치하는 항목이 없으면 "+1"이면 그런 균형을 얻었습니다.

많은 트렌드가 있는데 어떻게 생각하시나요?

 
fxsaber #:

위쪽은 실제, 아래쪽은 무작위입니다.

실제 심볼과 생성된 심볼에 동일한 설정으로 최적화를 수행했습니다.


Real.


Random.


랜덤에 대해 훈련되지 않았습니다.

 
fxsaber #:

실제 캐릭터와 생성된 캐릭터에 대해 동일한 설정으로 최적화를 수행했습니다.


실제.


Random.


랜덤에 대해 훈련되지 않았습니다.

무작위 심볼은 몇 번 생성되었나요?) 당연히 시퀀스가 길수록 작업하기 위해 더 많은 횟수를 생성해야 합니다.
 
fxsaber #:

차이점은 최적화 결과에서 아무것도 검색되지 않는다는 것입니다. 즉, 처음 5개의 최적화 결과는 이전에 OOS에서 실행된 적이 없습니다.

어떻게 설명해야 할지 모르겠습니다.

테스트에서 최적화 후 OOS에서 더 나은 변형을 "손으로"선택했는데 적합하지 않습니다....

그리고 최적화 후 알고리즘이 OOS에서 가장 적합한 변형을 선택하면 이미 적합한 것입니다... 왜 그럴까요?

전체 옵션 세트에서 최상의 옵션 / 변형을 선택하는 것이 최적화입니다.... 수작업으로 하든 알고리즘으로 하든 상관 없습니다.

아마도 MT에서 테스터와 함께 일하면서 최적화 자체와 적용 방법에 대해 약간 공식적으로 생각했기 때문에 몇 가지 오해가있을 수 있습니다.


 
fxsaber #:

실제 캐릭터와 생성된 캐릭터에 대해 동일한 설정으로 최적화를 수행했습니다.


실제.


Random.


랜덤에 대해 학습되지 않았습니다.

랜덤이 가격 특성과 일치하나요? 평균, 표준편차, 공분산?
 

Maxim Dmitrievsky #:
Сколько раз был сгенерирован рандом символ?)

하나.

시퀀스가 길수록 작업하는 데 더 많은 횟수를 생성해야 한다는 것은 분명합니다.

이 문장을 이해하지 못하겠습니다. 다음 두 가지 옵션은 무엇을 의미하나요?

  1. 작동하려면 무작위 추출을 여러 번 반복해야 합니다.
  2. 무작위 문자를 많이 생성하면 그 중 작동 가능한 문자가 있을 확률이 높아집니다.

다른 실제 기호에서도 동일한 TC가 작동하지 않기 때문에 겉보기에는 간단해 보입니다.

무작위화 알고리즘은 다음과 같습니다:

  1. 실제 틱 히스토리를 가져옵니다.
  2. 평균 ((매수+매도)/2) 가격의 증분 시퀀스가 만들어집니다.
  3. 이 시퀀스에서는 각 항에 +1 또는 -1을 무작위로 곱합니다.
  4. 획득한 증분 시퀀스에서 새로운 틱 히스토리가 수집되며, 여기서 시간과 스프레드는 1점과 일치합니다.
  5. 새 틱 히스토리는 사용자 지정 기호로 기록됩니다.
즉, 일부 실제 기호가 무작위로 지정됩니다. 항목 3은 횟수에 관계없이 적용할 수 있습니다. 항목 5 이후에 5개의 포인트가 모두 반복되면 항목 3을 두 번 반복하는 것과 동일합니다.