KimIV의 유용한 기능 - 페이지 46

 
SK. писал (а) >>

나는 이것에 대해 이야기하고 있습니다. 일반적으로 항상 변경되는 기존 제한 사항을 고려해야합니다.

각종 제약사항을 분석하는 기능이 있나요?

수정도 마찬가지입니다.

--

(우수 주문(OP,SL,TP)당 3개, 시장(SL,TP)당 2개 등 16개의 기능이 있습니다.

그런 다음 몇 가지 권한 조합을 더 분석합니다).

예, 가능한 모든 제한 사항을 확인하고 수정을 위해 별도(첫 번째 항목과 부분적으로 유사)를 확인하는 별도의 주문 기능도 있습니다. 나는 코드를 제공하지 않을 것입니다 - 나에게만 필요한 "왼쪽" 종소리와 휘파람이 너무 많습니다. :-) 하지만 일반적으로 - 실생활에서 전문가 자문 거래 없이는 어렵습니다. :-)

 
Shu писал (а) >> 를 썼습니다.

예, 가능한 모든 제한 사항을 확인하고 수정을 위해 별도(첫 번째 항목과 부분적으로 유사)를 확인하는 별도의 주문 기능도 있습니다. 나는 코드를 제공하지 않을 것입니다 - 나에게만 필요한 "왼쪽" 종소리와 휘파람이 너무 많습니다. :-) 그러나 일반적으로 - 그러한 고문이 실생활에서 거래되지 않으면 어렵습니다. :-)

사실, 나는 나 자신을 확인하고 싶었습니다. 나는 모든 것을 고려 했습니까? 어떤 경우에는 확인하지 않으면 일련의 실패에 빠질 수 있습니다(때로는 고문의 작업이 금지될 가능성이 있음).

간단히 체크리스트를 나열하겠습니다.

1. 스톱레벨. 예를 들어 SL BuyStop을 수정할 때.

우리는 단순한 거리 확인 이상의 것이 필요합니다. StopLevel에 의한 현재 위치와 스톱 오더의 이동 방향에 대한 분석이 필요합니다.

SL이 StopLevel 복도 밖에 있으면 가까이 이동하거나 무기한 뒤로 밀 수 있습니다.

SL이 복도에 있으면 위쪽 이동이 거부됩니다. 하향 이동은 허용되지만 StopLevel을 고려합니다. 거리 회랑 내 수정 거리가 3sts이고 회랑이 30sts이면 실제로 실행에 허용되는 값은 StopLevel 회랑 경계에 의해 결정됩니다.

2.프리즈레벨.

3. StopLevel과 TICKSIZE의 관계. 주문은 모든 복도 외부에 있을 수 있지만 TICKSIZE의 배수는 될 수 없습니다. 수정 방향으로 반올림해야 합니다. "비 통화"에 중요합니다.

4. 많이. 민로스 +/- 민샤글로타. 부분 및 카운터 마감도 minlot으로 제한된다는 점을 고려하십시오(제 생각에는 이것이 비논리적이지만 그렇습니다).

개인 수표 후, 각 수표가 (금지 없이) 긍정적으로 종료되면 명령이 대중에게 발행됩니다.

 

완전히 게시된 함수 라이브러리:

b-Graphics.rar - 그래픽 개체로 작업합니다.

b-Indicators.rar - 표시기 와 함께 작동합니다.

 

ArrayLR() 함수.

이 함수는 선형 회귀 값의 배열을 생성합니다. 이 함수는 다음 필수 매개변수를 허용합니다.

  • x - 숫자 계열 값의 배열. 이것은 입력 매개변수입니다. 이 배열은 함수를 호출하기 전에 값을 포함해야 합니다.
  • y 는 선형 회귀 값의 배열입니다. 이것은 출력 매개변수입니다. 즉, 함수가 완료된 후 배열이 채워집니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 20.05.2008                                                     |
//|  Описание : Формирует массив значений линейной регрессии.                  |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив значений числового ряда                                      |
//|    y - массив значений линейной регрессии                                  |
//+----------------------------------------------------------------------------+
void ArrayLR ( double & x [] , double & y []) {
   double a , b , c , sx = 0 , sx2 = 0 , sxy = 0 , sy = 0 ;
   int      i , n = ArraySize ( x ) ;

   if ( n > 1 ) {
     for ( i = 0 ; i < n ; i ++ ) {
       sx += i + 1 ;
       sy += x [ i ] ;
       sxy += ( i + 1 ) * x [ i ] ;
       sx2 += ( i + 1 ) * ( i + 1 ) ;
     }
     a = sx * sy - n * sxy ;
     c = sx * sx - n * sx2 ;
     if ( c != 0 ) a = a / c ; else a = 0 ;
     b = ( sy - a * sx ) / n ;
     ArrayResize ( y , n ) ;
     for ( i = 0 ; i < n ; i ++ ) y [ i ] = a * ( i + 1 ) + b ;
   } else Print ( " ArrayLR(): Недостаточное количество элементов ряда! n= " , n ) ;
}
 

ArrayLR() 함수를 사용하는 예.

이전 30개 막대에 대한 선형 회귀 의 가격 수준을 확인합니다.

 #define r 30
double x [ r ] , y [] ;
for ( int i = 0 ; i < r ; i ++ ) x [ i ] = Close [ i + 1 ] ;
ArrayLR ( x , y ) ;
for ( i = 0 ; i < r ; i ++ ) SetArrow ( 170 , Red , " arr " + i , Time [ i + 1 ] , y [ i ]) ; 

PS Attached는 ArrayLR() 함수를 테스트하기 위한 스크립트입니다.

파일:
 
KimIV писал (а) >> 를 썼습니다.

완전히 게시된 함수 라이브러리:

b-Graphics.rar - 그래픽 개체로 작업합니다.

b-Indicators.rar - 표시기 와 함께 작동합니다.

pts. 엄청난! 덕분에!

 
Parabellum писал (а) >> 를 썼습니다.

이고르, 여러 개의 양초를 하나로 결합할 수 있는 좋은 지표 가 있습니다. 그러나 시간별 차트에서만 작동합니다. 보편적으로 만들 수 있습니까?

고맙습니다.

?

 
Parabellum писал (а) >> 를 썼습니다.

?

어우...미안해...

그러한 지표는 이미 작성되었습니다. 누가 보았는지 기억이 나지 않고 어디에서 보았는지 기억이 나지 않습니다 ... 나는 당신이 그것을 스스로 찾거나 누군가가 링크를 줄 것이라고 생각했습니다 ...

 

ArrayLR() 함수에 비정밀도 연산이 있습니다.

1. 바의 임시 위치를 고려하지 않습니다. 막대를 건너뛸 때 올바르게 작동하지 않습니다.

2. 사용된 계수 계산 알고리즘은 반올림 오차가 누적된다는 단점이 있습니다. '선형 회귀 작성 도움말' 참조( Rosh 페이지 맨 아래에서 이 함정이 확인됨)

3. 이러한 단점이 없는 알고리즘을 제안한다

4. 호출하기 전에 교체하는 경우 X[i]=시간[i+1]; 에 X[i]=i+1; 알고리즘은 유사하지만 오류 누적이 없습니다.

5. 주말뿐만 아니라 바는 건너 뛰기 :-(((

여기 내 옵션이 있습니다

 //+----------------------------------------------------------------------------+
//|  Автор    : Сергей Привалов aka Prival,  Skype: privalov-sv                |
//+----------------------------------------------------------------------------+
//|  Версия   : 10.09.2008                                                     |
//|  Описание : Формирует массив значений линейной регрессии y(x)=A*x+B.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    X    - массив значений числового ряда, ось X                            |
//|    Y    - массив значений числового ряда, ось Y                            |
//+----------------------------------------------------------------------------+

void Array_LR ( double & X [] , double & Y [])
{
       double mo_X = 0 , mo_Y = 0 , var_0 = 0 , var_1 = 0 ;
       int      i , N = ArraySize ( X ) ;
       double A , B ;
     
       if ( N > 1 )    {
         for ( i = 0 ; i < N ; i ++ ) {
             mo_X += X [ i ] ;
           mo_Y += Y [ i ] ;
       }
       mo_X /= N ;
       mo_Y /= N ;
        
       for ( i = 0 ; i < N ; i ++ )    {
         var_0 += ( X [ i ] - mo_X ) * ( Y [ i ] - mo_Y ) ;
         var_1 += ( X [ i ] - mo_X ) * ( X [ i ] - mo_X ) ;
       }
       // значение коэффициента A
       if ( var_1 != 0 )    A = var_0 / var_1 ; else A = 0 ;
       // значение коэффициента B
       B = mo_Y - A * mo_X ;
       ArrayResize ( Y , N ) ;
     for ( i = 0 ; i < N ; i ++ ) Y [ i ] = A * X [ i ] + B ;
     } else Print ( " ArrayLR(): Недостаточное количество элементов ряда! n= " , N ) ;
    
}

여기 그림이 있습니다

작업 예

 #define r 280
void start () {
   double X [ r ] , Y [ r ] ;
   for ( int i = 0 ; i < r ; i ++ )    {
     Y [ i ] = Close [ i + 1 ] ;
     X [ i ] = Time [ i + 1 ] ;
   }
   Array_LR ( X , Y ) ;
   for ( i = 0 ; i < r ; i ++ ) { SetArrow ( 170 , Blue , " arr " + i , X [ i ] , Y [ i ])  }

확인을 위해 첨부된 스크립트

파일:
 
Prival писал (а) >> 를 작성했습니다.
여기 내 옵션이 있습니다

알았어 세레자! 이 함수에는 두 가지 버전이 있습니다.

내 버전은 내장 OBJ_REGRESSION 그래픽 개체와 일대일이라는 점에서 좋습니다. 누군가이 개체에서 가격을 가져와야 하는 경우 내 기능이 도움이 될 것이지만 당신의 기능은 - 아아 ... 하지만 다른 용도로 사용될 수 있습니다 ... 감사합니다!