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

 
레나트 팻쿨린 :

기사의 원래 R 오류 설명으로 돌아가 보겠습니다.

우리의 의견은 여전히 유효합니다. 오류가 존재하며 구현 부주의로 인해 발생합니다.

당신의 전문가는 장점에 대해 나에게 대답하기를 원하지 않습니다. Wolfram과 모든 것을 찔렀습니다.

나는 우리의 관점을 반복할 것이다. 감마 분포에는 오차가 없습니다. 그것은 수학적 공동체의 관례에 관한 문제입니다. 귀하의 잘못에 대한 문구가 있는데 올바르지 않습니다.

버전의 밀도에 대해 0을 출력하는 것은 먼저 가능한 옵션(관례) 중 하나입니다. 그리고 둘째, 이 값(nan, 0 또는 1)의 선택에서 응용 분석의 본질은 아무 것도 영향을 미치지 않습니다. 분포 함수는 통계를 평가하는 데 사용됩니다. 이 분포는 0입니다. 그리고 그것으로 충분합니다.

t 분포에 관하여. 이 오류는 최신 버전의 R에서 재현했습니다. 하지만 알고리즘의 본질을 깊이 파고들지는 않았습니다. 수정이 정말 필요했음을 인정합니다.

R 지원 팀에 질문을 하려고 합니다.
 

그리고 당신은 그와 같이 모든 것을 조사하고, 자세히 설명하고, 재확인하는 데 몇 주를 보냅니다. 그러나 대신 우리 기사를 읽지 않았습니다.

우리는 작업을 완료했습니다. 그리고 그들은 잘했습니다. Wolfram이 귀하를 위한 권한이 없다면 이러한 커뮤니케이션 방식을 헛되이 시작한 것입니다.

제작자와 사용자를 혼동하지 마십시오.

 
레나트 팻쿨린 :

그리고 당신은 그와 같이 모든 것을 조사하고, 자세히 설명하고, 재확인하는 데 몇 주를 보냅니다. 그러나 대신 우리 기사를 읽지 않았습니다.

우리는 작업을 완료했습니다. 그리고 그들은 잘했습니다. Wolfram이 귀하를 위한 권한이 없다면 이러한 커뮤니케이션 방식을 헛되이 시작한 것입니다.

제작자와 사용자를 혼동하지 마십시오.

나는 당신의 의견을 존중합니다. 근데 그걸 왜 책임져?

반복합니다.

버전의 밀도에 대해 0을 출력하는 것은 먼저 가능한 옵션(관례) 중 하나입니다. 그리고 둘째, 이 값(nan, 0 또는 1)의 선택에서 응용 분석의 본질은 아무 것도 영향을 미치지 않습니다. 분포 함수는 통계를 추정하는 데 사용됩니다. 이 시점에서 분포는 0입니다. 그리고 그것으로 충분합니다.

나는 일반적 으로 계산의 가속이 플러스라고 덧붙일 것입니다. 즉, 객관적으로 기능 구현이 귀하의 기사에 따르면 더 나쁘지도 않고 더 좋지도 않습니다.
 
감정적인 부분은 끝났으면 좋겠다..

주제에 대한 양모 0 ^ 0. 이것이 바로 경합 지점입니다. x = 0에서 감마 분포에 대한 확률 밀도 방정식에 포함되어 있습니다.


이 토론에 대한 답변은 다음과 같습니다.
0^0과 0! 빈 곱 규칙 때문에 1과 같습니다. IEEE 표준은 0^0이 1로 평가되어야 한다고 말합니다. 따라서 대부분의 컴퓨터 소프트웨어는 그렇게 평가할 것입니다. 0으로 평가하는 것이 도움이 되는 상황은 없습니다.

0^0=1을 가정하는 공식이 많이 있습니다. 예를 들어 다항식 및 거듭제곱 급수의 표기법, 기수 산술, 이항 정리 등은 모두 0^0=1을 가정합니다. 예를 들어 x=0을 x^0+x^1+x^2+... = 1/(1-x)에 대입하면 0^0 = 1이 됩니다.

즉, 이 표현식을 1로 캐스팅하는 기준이 있습니다. 그리고 표현식을 0으로 캐스팅하는 것이 이득이나 해가 없습니다.

나는 R에서 하드 코딩 된 1 ...을 생각하고 0을 가지고 있습니다.

이 점에 대해서는 논쟁의 여지가 없습니다. 컴퓨터는 값을 대수적으로 계산할 수 없습니다.
 
알렉세이 버나코프 :

버전의 밀도에 대해 0을 출력하는 것은 먼저 가능한 옵션(관례) 중 하나입니다.

함수를 정의하는 것은 계산 방법을 지정하는 것을 의미한다고 가정할 수 있습니다.

축소 표현
알렉세이 버나코프 :

또한 다음과 같이:

https://en.wikipedia.org/wiki/Gamma_distribution

x = 0, alpha = 1, beta = 1의 경우 분자는 불확정 값을 가져와 전체 분수를 불확정 상태로 만듭니다.

엄밀히 말하면 점 0에서 감마 분포의 밀도가 정의되지 않음을 선언합니다. 그리고 오른쪽 극한을 취하면 밀도는 1과 같습니다.

이에 비추어 볼 때 "R의 계산 오류"라는 진술의 공식화는 올바르지 않다고 생각합니다. 더 정확하게는, 이것은 관례의 문제입니다: 표현 0을 0의 거듭제곱과 같다고 간주하는 방법입니다. 영점에서 감마 분포의 밀도를 0으로 동일시하는 것은 일반적인 관행이 아닌 것 같습니다.

지적한 바와 같이 x=0 지점에 모호성이 포함되어 있기 때문에 함수를 정의하는 데 적합하지 않습니다.

x>=0 대신 조건 x>0을 넣으면 불확실성이 없고 이 공식을 사용하여 값을 계산할 수 있습니다.

실습 - Mathematica 및 Matlab은 엔지니어링 계산에 대한 산업 표준으로 간주될 수 있으며 0을 제공합니다. 그러면 표현식은 x>0에 대해서만 유효합니다.

 
양자 :

함수를 정의한다는 것은 함수가 계산되는 방식을 지정한다는 것을 의미한다는 사실에서 시작할 수 있습니다.

축소 표현

지적한 바와 같이 x=0 지점에 모호성이 포함되어 있기 때문에 함수를 정의하는 데 적합하지 않습니다.

x>=0 대신 조건 x>0을 넣으면 불확실성이 없고 이 공식을 사용하여 값을 계산할 수 있습니다.

실습 - Mathematica 및 Matlab은 엔지니어링 계산에 대한 산업 표준으로 간주될 수 있으며 0을 제공합니다. 그러면 표현식은 x>0에 대해서만 유효합니다.

바르게. 함수는 양의 영역(0,inf)에 정의됩니다.

포인트 0에서 왜 여전히 0이 있습니까? 왜 오류가 1입니까?


그건 그렇고, 흥미롭습니다. Wolfram은 공간 [0,inf]에 대한 감마 분포의 확률 함수를 정의합니다. 그래서 그들은 0에서 특정 값을 제공합니다... 이상하네요.


 
양자 :

Mathematica와 Matlab은 엔지니어링 계산을 위한 산업 표준으로 간주될 수 있습니다.

당신은 해결책이 없는 상황을 택하고 Wolfram이 반환한 결과를 보고 다른 모든 결과를 틀리게 불렀습니다. 이것은 공학적 계산이 아니라 도그마입니다.

또는 R을 표준으로 삼고 Wolfram에서 버그를 찾는 것에 대해 작성할 수 있습니다. 모든 수학적 소프트웨어를 사용하여 그러한 상황에서 반환되는 내용에 따라 두 그룹으로 나누면 50% / 50%로 나눌 수 있습니다. mql이 월등합니다.

AS 243에 표시된 오류에 대해 감사드립니다. 그러나 명확한 해결책이 없는 매개변수로 다른 함수의 동작을 비난해서는 안 됩니다.
따라서 mql의 장점에 대한 기사를 작성해야 했습니다. 여기 R에는 소수점 이하 15자리의 오류가 있는 이런 저런 함수가 있습니다. 그리고 mql에 더 정확한 또 다른 기능이 있습니다. 모든 것이 문화적이고 과학적이었으며 지금처럼 독단적이지 않았습니다.

 
알렉세이 버나코프 :

포인트 0에서 왜 여전히 0이 있습니까? 왜 오류가 1입니까?

x=0 지점에서 매개변수 a=0.5, b=1인 예를 고려하십시오.

 > d감마(0,0.5,1,로그=거짓)
[1] 인프
> p감마(0,0.5,1,log=FALSE)
[십

점 x=0을 제외하지 않으면 밀도가 발산하고 모든 것이 확률에 따라 정렬됩니다.

그러면 문제가 없습니다.

 > p감마(0.00001,0.5,1,log=FALSE)
[1] 0.003568236

CDF R을 계산할 때 점 x=0을 제외하면 무한대가 어딘가에서 사라졌다는 것이 밝혀졌습니다.

 
양자

동료에게!

여러 페이지에서 함수 정의 영역의 가장자리에서 Vash와 R의 알고리즘 간의 차이점에 대한 논쟁이 있습니다. 극점은 극점이며 실제로는 그 차이를 무시할 수 있습니다.

그러나 이 경우 훨씬 더 중요한 질문이 있습니다.

모든 기능에 대한 문서는 어디에 있습니까?

이전에는 기능이 유사하므로 R 문서를 가져오고 알고리즘을 설명하거나 R에 표시된 링크를 따라가는 R 문서의 해당 부분을 탐구한다고 생각했습니다. R은 매우 높은 품질을 가지고 있습니다. 문서 및 참조 장치.

분쟁 중에 귀하의 기능이 R과 다르다는 것을 알게 되었습니다. 이는 알고리즘이 다른 소스를 기반으로 하는 다른 기능입니다. 기사 자체에는 이에 대한 내용이 없으며 문서가 없습니다. 그리고 우리는 완전히 다른 맥락에서 Renat에게서 이것에 대해 배웁니다.

실제로 R에서 MQL5로 코드를 이식하는 것은 불가능하다는 분명한 결론이 있습니다.

그리고 그 이유입니다.

"R의 유사체"가 작성되고 유사체에 대한 문서가 제공되지 않으면 이것은 100% 유사체이며 귀찮게하지 않고 인터프리터에서 컴파일러로 코드를 전송할 수 있다는 것은 나에게 매우 분명합니다. 그리고 이것이 사실이 아니라면, R에서 MQL5로 코드를 포팅하는 아이디어를 끝내기에 한 가지 경우로 충분합니다. 작업 코드를 R로 이식할 때 알고리즘 구현의 미묘함으로 인해 작동하지 않는 MQL 코드를 얻을 때 완전히 막다른 골목을 겪고 싶어하는 사람은 없습니다.

 
산산이치 포멘코 :

모든 기능에 대한 문서는 어디에 있습니까?

이전에는 기능이 유사하므로 R 문서를 가져오고 알고리즘을 설명하거나 R에 표시된 링크를 따라가는 R 문서의 해당 부분을 탐구한다고 생각했습니다. R은 매우 높은 품질을 가지고 있습니다. 문서 및 참조 장치.

분쟁 중에 귀하의 기능이 R과 다르다는 것을 알게 되었습니다. 이는 알고리즘이 다른 소스를 기반으로 하는 다른 기능입니다. 기사 자체에는 이것에 대한 내용이 없으며 문서가 없습니다. 그리고 우리는 완전히 다른 맥락에서 Renat에게서 이것에 대해 배웁니다.

실제로 R에서 MQL5로 코드를 이식하는 것은 불가능하다는 분명한 결론이 있습니다.

그리고 그 이유입니다.

"R의 유사체"가 작성되고 유사체에 대한 문서가 제공되지 않으면 이것은 100% 유사체이며 귀찮게하지 않고 인터프리터에서 컴파일러로 코드를 전송할 수 있다는 것은 나에게 매우 분명합니다. 그리고 이것이 사실이 아니라면, R에서 MQL5로 코드를 포팅하는 아이디어를 끝내기에 한 가지 경우로 충분합니다. 작업 코드를 R로 포팅할 때 알고리즘 구현의 미묘함으로 인해 작동하지 않는 MQL 코드를 얻을 때 완전히 막다른 골목을 겪고 싶어하는 사람은 없습니다.

현재 기능에 대한 설명은 https://www.mql5.com/en/articles/2742 기사에 있습니다.

mu=2, sigma=1 매개변수를 사용 하여 정규 분포 를 계산하는 예를 고려하십시오.

n <- 10
k <- seq(0,1,by=1/n)
mu=2
sigma=1
normal_pdf<-dnorm(k, mu, sigma, log = FALSE)
normal_cdf<-pnorm(k, mu, sigma, lower.tail=TRUE,log.p = FALSE)
normal_quantile <- qnorm(normal_cdf, mu,sigma, lower.tail=TRUE,log.p = FALSE)
normal_pdf
normal_cdf
normal_quantile


1) dnorm() 함수의 R 유사체는 다음과 같은 함수입니다.

이 함수는 확률 변수 x[]의 배열에 대해 매개변수 mu 및 sigma를 사용하여 정규 분포의 확률 밀도 함수 값을 계산합니다. 오류가 발생하면 false 를 반환합니다. R 의 dnorm() 유사

 bool MathProbabilityDensityNormal (
   const double    &x[],        // [in]  Массив со значениями случайной величины
  const double    mu,           // [in]  Параметр распределения mean (математическое ожидание)
  const double    sigma,       // [in]  Параметр распределения sigma (среднеквадратическое отклонение)
  const bool     log_mode,    // [in]  Флаг расчета логарифма значения, если log_mode=true, то рассчитывается натуральный логарифм плотности вероятности
  double          &result[]    // [out] Массив для значений функции плотности вероятности
);

2) pnorm 유사체:

이 함수는 확률 변수 x[]의 배열에 대해 매개변수 mu 및 sigma를 사용하여 정규 확률 분포 함수의 값을 계산합니다. 오류가 발생하면 false를 반환합니다. R 의 pnorm() 유사

 bool MathCumulativeDistributionNormal (
  const double    &x[],        // [in]  Массив со значениями случайной величины
  const double    mu,           // [in]  Математическое ожидание
  const double    sigma,       // [in]  Среднеквадратическое отклонение
  const bool     tail,        // [in]  Флаг расчета, если lower_tail=true, то рассчитывается вероятность того, что случайная величина не превысит x
  const bool      log_mode,    // [in]  Флаг расчета логарифма значения, если log_mode=true, то рассчитывается натуральный логарифм вероятности
  double          &result[]    // [out] Массив для значений функции вероятности
);

3) qnorm의 유사체:

확률 값의 확률[] 배열의 경우 함수는 mu 및 sigma 매개변수를 사용하여 역정규 분포 함수의 값을 계산합니다. 오류가 발생하면 false를 반환합니다. R 의 qnorm() 유사

 bool MathQuantileNormal (
   const double    &probability[], // [in]  Массив со значениями вероятностей случайной величины
  const double    mu,             // [in]  Математическое ожидание
  const double    sigma,         // [in]  Среднеквадратическое отклонение
  const bool     tail,          // [in]  Флаг расчета, если lower_tail=false, то расчет ведется для вероятности 1.0-probability
  const bool      log_mode,      // [in]  Флаг расчета, если log_mode=true, то расчет ведется для вероятности Exp(probability)
  double          &result[]      // [out] Массив со значениями квантилей
);

사용 예:

#include <Math\Stat\Normal.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//--- arrays for calculated values
   double x_values[];
   double normal_pdf[];
   double normal_cdf[];
   double normal_quantile[];
//--- prepare x values
   const int N= 11 ;
   ArrayResize (x_values,N);
   for ( int i= 0 ;i<N;i++)
      x_values[i]=i* 1.0 /(N- 1 );
//--- set distribution parameters
   double mu= 2.0 ;
   double sigma= 1.0 ;
//--- calculate pdf, cdf and quantiles
   MathProbabilityDensityNormal(x_values,mu,sigma, false ,normal_pdf);
   MathCumulativeDistributionNormal(x_values,mu,sigma, true , false ,normal_cdf);
   MathQuantileNormal(normal_cdf,mu,sigma, true , false ,normal_quantile);
//--- show calculated values
   for ( int i= 0 ;i<N;i++)
       PrintFormat ( "1 %d, x=%.20e PDF=%.20e, CDF=%.20e, Q=%.20e," ,i,x_values[i],normal_pdf[i],normal_cdf[i],normal_quantile[i]);
  }

결과:

2016.11.11 11 : 56 : 46.413 시험 (EURUSD, H1) 1 0, X + 00 0.00000000000000E + 0.00000000000000E + 00 0.00000000000000E + 0.00000000000000E + 0.00000000000000E + 0.00000000000000E + 0.00000000000000E + 0.00000000000000E + 00 PDF = 5.39909665131880628364E-02, CDF = 2.27501319481792120547E-02, Q = 0.00000000000000E + 00,
2016.11.11 11 : 56 : 46.413 시험 (EURUSD, H1) 1, x = 1.0000000000000055511E-01 PDF = 6.56158147746765951780E-02, CDF = 2.87165598160018034624E-02, Q = 1.00000000000888818E-01,
2016.11.11 테스트 (EURUSD, H1) 1 2, x = 2.0000000000011102E-01 PDF = 7.89501583008941493214E-02, CDF = 3.59303191129258098213E-02, Q = 2.000000000000177636E-01,
2016년 11월 11일 11 : 56 : 46.413 시험 (EURUSD, H1) 1 내지 3, X = 01 2.99999999999999988898E PDF 9.40490773768869470217E = 02, CDF 4.45654627585430410108E = 02, Q = 3.000000000000266454e-01
2016.11.11 11 : 56 : 46.413 시험 (EURUSD, H1) 1 4, x = 4.0000000000022204E-01 PDF = 1.10920834679455543315E-01, CDF = 547992916995579740225E-02, Q = 3.999999999999911182E-01
2016.11.11 11 : 56 : 46.413 시험 (EURUSD, H1) 1 5, x = 5.0000000000000000E-01 PDF = 1.2951759565891743772E-01, CDF = 6.68072012688580713080E-02, Q = 5.0000000000222045E-01,
2016년 11월 11일 11 : 56 : 46.413 시험 (EURUSD, H1) 1 내지 6, X = 01 5.99999999999999977796e PDF 1.49727465635744877437e = 01, CDF는 8.07566592337710387195E = 02, Q = 6.00 억-01, Q-01 = 6.0000000000310862e
2016년 11월 11일 11 : 56 : 46.413 시험 (EURUSD, H1) 1~7, X = 01 6.99999999999999955591E PDF 1.71368542047807355438e = 01, CDF = 9.68004845856103440793E-02, Q-01 = 7.000000000000177636e
2016.11.11 11 : 56 : 46.413 시험 (EURUSD, H1) 1 8, X = 8.000000000000044409E-01 PDF = 1.94186054983212952330E-01, CDF = 1.15069670221708289670221708289515E-01, Q = 8.0000000000044409E-01,
2016.11.11 11 : 56 : 46.413 시험 (EURUSD, H1) 1 9, X = 9.000000000000022204E-01 PDF = 2.17852177032550525793E-01, CDF = 1.356660609463826716594638267165946382671659E-01, Q = 9.0000000000133227E-01,
2016.11.11 11 : 56 : 46.413 시험 (EURUSD, H1) 1 10, x = 1.0000000000000000E + 00 PDF = 2.41970724519143365328E-01, CDF = 1.58655253931457046468E-01, Q = 1.0000000000000000E + 00,

R에 대한 계산 결과:

 > n <- 10
> k <- seq(0,1,by=1/n)
> 뮤=2
> 시그마=1
> normal_pdf<-dnorm(k, mu, 시그마, 로그 = FALSE)
> normal_cdf<-pnorm(k, mu, 시그마, lower.tail=TRUE,log.p = FALSE)
> normal_quantile <- qnorm(normal_cdf, mu,sigma, lower.tail=TRUE,log.p = FALSE)
> 일반_pdf
[1] 0.05399097 0.06561581 0.07895016 0.09404908 0.11092083 0.12951760 0.14972747 0.17136859
 [9] 0.19418605 0.21785218 0.24197072
> 일반_cdf
[1] 0.02275013 0.02871656 0.03593032 0.04456546 0.05479929 0.06680720 0.08075666 0.09680048
 [9] 0.11506967 0.13566606 0.15865525
> normal_quantile
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
Статистические распределения в MQL5 - берем лучшее из R и делаем быстрее
Статистические распределения в MQL5 - берем лучшее из R и делаем быстрее
  • 2016.10.06
  • MetaQuotes Software Corp.
  • www.mql5.com
Рассмотрены функции для работы с основными статистическими распределениями, реализованными в языке R. Это распределения Коши, Вейбулла, нормальное, логнормальное, логистическое, экспоненциальное, равномерное, гамма-распределение, центральное и нецентральные распределения Бета, хи-квадрат, F-распределения Фишера, t-распределения Стьюдента, а также дискретные биномиальное и отрицательное биномиальные распределения, геометрическое, гипергеометрическое и распределение Пуассона. Есть функции расчета теоретических моментов распределений, которые позволяют оценить степень соответствия реального распределения модельному.
파일:
Test.mq5  2 kb
사유: