MA 피드 축적 감지를 알고리즘화하는 방법은 무엇입니까? - 페이지 7

 
Aleksey Nikolayev :
MathQuantile() 을 사용할 수 없는 이유는 무엇입니까?
아마. 각 막대에서 중앙값을 찾아야 하는 경우 정렬된 배열을 유지 관리하거나 이 기능을 사용하는 것이 더 빠른지 확인해야 합니다.
 
Aleksey Nikolayev :
MathQuantile() 을 사용할 수 없는 이유는 무엇입니까?

이 함수의 "확률 배열"은 무엇입니까? 채우는 방법은 무엇입니까?

 
다음은 인덱스를 참조하여 배열을 정렬하는 방법을 제안한 사람입니다. 효과적인!)
 
Mikhail Toptunov :
다음은 인덱스를 참조하여 배열을 정렬하는 방법을 제안한 사람입니다. 효과적인!)

인덱스를 배열에 던집니다. 차원은 배열만 증가시킵니다.

 

Mikhail은 정렬을 유지하기 위해 오랫동안 배열에 새 값을 삽입하는 함수를 작성했습니다.

즉, 배열에 대한 모든 추가는 다음 함수를 통해 수행되어야 합니다.

 //находим место для значения в отсортированном массиве и записываем его туда
void SetValueInSortArray( double &eArray[], double eValue)
   {
   //находим индекс, куда будем вставлять элемент
   int eFinish= ArrayRange (eArray, 0 )- 1 ;
   int eIndex;
   if (eFinish==- 1 )
      {
      eIndex= 0 ;
      }
   else if ( NormalizeDouble (eArray[eFinish]-eValue, 8 )< 0 )
      {
      eIndex=eFinish+ 1 ;
      }
   else
      {
       int eLower= 0 ;
       int eUpper=eFinish;
      eIndex= 0 ;
       while (eLower<=eUpper)
         {
         eIndex=(eLower+eUpper)/ 2 ;
         if ( NormalizeDouble (eArray[eIndex]-eValue, 8 )>= 0 )
            {
             if (eIndex> 0 && NormalizeDouble (eArray[eIndex- 1 ]-eValue, 8 )< 0 )
               {
               break ;
               }
             else
               {
               eUpper=eIndex- 1 ;
               }
            }
         if ( NormalizeDouble (eArray[eIndex]-eValue, 8 )< 0 )
            {
            eLower=eIndex+ 1 ;
            }
         }
      }
   //вставка элемента в начало массива
   if (eIndex== 0 )
      {
       if ( ArrayRange (eArray, 0 )== 0 )
         {
         ArrayResize (eArray, 1 );
         }
       else
         {
         ArrayCopy (eArray,eArray, 1 , 0 );
         }
      }
   //вставка элемента в конец массива
   else if (eIndex>= ArrayRange (eArray, 0 ))
      {
       ArrayResize (eArray,eIndex+ 1 );
      }
   //вставка элемента в середину массива
   else
      {
       ArrayCopy (eArray,eArray,eIndex,eIndex- 1 );
      }
   eArray[eIndex]=eValue;
   }  
이진 검색 이 사용되며 빨라야 합니다.
 
Mikhail Toptunov :
다음은 인덱스를 참조하여 배열을 정렬하는 방법을 제안한 사람입니다. 효과적인!)

2차원 배열, ArraySort() 함수 .

 
아니, 한 요소의 위치를 찾고 전체 배열을 정렬하는 것은 매우 다른 시간입니다.
 
Aleksey Vyazmikin :

이 함수의 "확률 배열"은 무엇입니까? 채우는 방법은 무엇입니까?

계산해야 하는 분위수는 다음과 같습니다.

{0.5} - 중앙값

{0.25, 0.5, 0.75} - 사분위수

{0.01, 0.02, ..., 0.99} - 백분위수

 
Mikhail Toptunov :
다음은 인덱스를 참조하여 배열을 정렬하는 방법을 제안한 사람입니다. 효과적인!)

MathQuickSort() 시도

 
Mikhail Toptunov :

예시:

30 MA 가격 값의 배열, 우리는 정렬된 배열의 중간을 찾고 있습니다.

우리는 15(L0) 배열의 중간 값을 얻은 다음 L0 아래에서 L0 위로 두 개의 배열을 얻고 이러한 배열의 중간을 찾는 식으로 초점 수를 얻을 때까지 계속합니다(7개의 값은 예시)

그리고 결국 틱합니다

답은 간단합니다. 수학적 처리는 오해의 소지가 있습니다.