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

 

기능 자체:


 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 10.05.2008                                                     |
//|  Описание : Возвращает корреляцию двух рядов.                              |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив значений первого ряда                                        |
//|    y - массив значений второго ряда                                        |
//+----------------------------------------------------------------------------+
double Correlation ( double & x [] , double & y []) {
   double co=0, sa=0, sb=0, sc=0, xs=0, ys=0;
   int      i , k = MathMin ( ArraySize ( x ) , ArraySize ( y )) ;

   if ( k > 0 ) {
     for ( i = 0 ; i < k ; i ++ ) {
       xs += x [ i ] ; ys += y [ i ] ;
     }
     xs /= k ; ys /= k ;
     for ( i = 0 ; i < k ; i ++ ) {
       sa += ( x [ i ] - xs ) * ( y [ i ] - ys ) ;
       sb += ( x [ i ] - xs ) * ( x [ i ] - xs ) ;
       sc += ( y [ i ] - ys ) * ( y [ i ] - ys ) ;
     }
     sb = MathSqrt ( sb * sc ) ;
     if ( sb != 0 ) co = sa / sb ;
   }
   return ( co ) ;
}
추신. 트레일러에는 Correlation() 함수를 테스트하기 위한 스크립트가 있습니다.
파일:
 

GetIndexLastPos() 함수.

이 함수는 마지막 열린 위치의 인덱스 또는 -1 을 반환합니다. 확인된 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.

  • sy - 시장 상품의 이름. 이 매개변수를 설정하면 이 기능은 지정된 도구의 위치만 고려합니다. 기본값은 "" 는 모든 시장 상품을 의미합니다. NULL 은 현재 기기를 의미합니다.
  • op - 거래 작업, 위치 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 의미합니다.
  • mn - 위치 ID, MagicNumber. 기본값 -1 은 모든 식별자를 의미합니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает индекс последней открытой позиции или -1            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int GetIndexLastPos ( string sy = "" , int op =- 1 , int mn =- 1 ) {
   datetime o ;
   int        i , k = OrdersTotal () , r =- 1 ;

   if ( sy == " 0 " ) sy = Symbol () ;
   for ( i = 0 ; i < k ; i ++ ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol () == sy || sy == "" ) {
         if ( OrderType () == OP_BUY || OrderType () == OP_SELL ) {
           if ( op < 0 || OrderType () == op ) {
             if ( mn < 0 || OrderMagicNumber () == mn ) {
               if ( o < OrderOpenTime ()) {
                 o = OrderOpenTime () ;
                 r = i ;
               }
             }
           }
         }
       }
     }
   }
   return ( r ) ;
}
추신. GetIndexLastPos() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
파일:
 

GetLotLastPos() 함수.

이 함수는 마지막 열린 위치의 로트 크기 또는 -1 을 반환합니다. 확인된 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.

  • sy - 시장 상품의 이름. 이 매개변수를 설정하면 이 기능은 지정된 도구의 위치만 고려합니다. 기본값은 "" 는 모든 시장 상품을 의미합니다. NULL 은 현재 기기를 의미합니다.
  • op - 거래 작업, 위치 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 의미합니다.
  • mn - 위치 ID, MagicNumber. 기본값 -1 은 모든 식별자를 의미합니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает размер лота последней открытой позиции или -1       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double GetLotLastPos ( string sy = "" , int op =- 1 , int mn =- 1 ) {
   datetime o ;
   double    l =- 1 ;
   int        i , k = OrdersTotal () ;

   if ( sy == " 0 " ) sy = Symbol () ;
   for ( i = 0 ; i < k ; i ++ ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol () == sy || sy == "" ) {
         if ( OrderType () == OP_BUY || OrderType () == OP_SELL ) {
           if ( op < 0 || OrderType () == op ) {
             if ( mn < 0 || OrderMagicNumber () == mn ) {
               if ( o < OrderOpenTime ()) {
                 o = OrderOpenTime () ;
                 l = OrderLots () ;
               }
             }
           }
         }
       }
     }
   }
   return ( l ) ;
}
추신. GetLotLastPos() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
파일:
 
KimIV :

GetIndexLastPos() 함수.

이 함수는 마지막 열린 위치의 인덱스 또는 -1 을 반환합니다. 확인된 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.

추신. GetIndexLastPos() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.

그리고 인덱스는 무엇입니까? 이것이 마지막 오픈 포지션 의 바 번호입니까? 아니면 뭔가 다른가요?

 
rid писал (а):
그리고 인덱스는 무엇입니까? 마지막 오픈 포지션의 바 번호인가요? 아니면 뭔가 다른가요?

이것은 열린 포지션과 주문한 포지션 목록에 있는 포지션 번호입니다. 번호 매기기는 0부터 시작하며 위치 및 주문에 대해 동일합니다.

 

친애하는 이고르! 도와주세요, 제발. 문제는 Expert Advisor에서 CCI 또는 Stoch에 MA를 첨부하는 방법에 대한 코드를 어디에서도 찾을 수 없다는 것입니다. 더욱이, 매수 또는 매도 신호는 이 MA와 CCI 레벨의 교차점에 있어야 합니다(예: +100/-100).

내가 필요로 하는 코드가 사용되는 곳에 이미 조언자가 있을 수 있습니까?

 

GetMaxLotFromOpenPos() 함수.

이 함수는 열린 위치의 수에서 최대 로트 크기를 반환합니다. 확인된 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.

  • sy - 시장 상품의 이름. 이 매개변수를 설정하면 이 기능은 지정된 도구의 위치만 고려합니다. 기본값은 "" 는 모든 시장 상품을 의미합니다. NULL 은 현재 기기를 의미합니다.
  • op - 거래 작업, 위치 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 의미합니다.
  • mn - 위치 ID, MagicNumber. 기본값 -1 은 모든 식별자를 의미합니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает максимальный размер лота из открытых позиций        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double GetMaxLotFromOpenPos ( string sy = "" , int op =- 1 , int mn =- 1 ) {
   double l = 0 ;
   int      i , k = OrdersTotal () ;

   if ( sy == " 0 " ) sy = Symbol () ;
   for ( i = 0 ; i < k ; i ++ ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol () == sy || sy == "" ) {
         if ( OrderType () == OP_BUY || OrderType () == OP_SELL ) {
           if ( op < 0 || OrderType () == op ) {
             if ( mn < 0 || OrderMagicNumber () == mn ) {
               if ( l < OrderLots ()) l = OrderLots () ;
             }
           }
         }
       }
     }
   }
   return ( l ) ;
}
추신. 예고편에는 GetMaxLotFromOpenPos() 함수를 테스트하기 위한 스크립트가 포함되어 있습니다.
 

GetMinLotFromOpenPos() 함수.

이 함수는 열린 위치의 수에서 최소 로트 크기를 반환합니다. 확인된 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.

  • sy - 시장 상품의 이름. 이 매개변수를 설정하면 이 기능은 지정된 도구의 위치만 고려합니다. 기본값은 "" 는 모든 시장 상품을 의미합니다. NULL 은 현재 기기를 의미합니다.
  • op - 거래 작업, 위치 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 의미합니다.
  • mn - 위치 ID, MagicNumber. 기본값 -1 은 모든 식별자를 의미합니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает минимальный размер лота из открытых позиций         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double GetMinLotFromOpenPos ( string sy = "" , int op =- 1 , int mn =- 1 ) {
   double l = 0 ;
   int      i , k = OrdersTotal () ;

   if ( sy == " 0 " ) sy = Symbol () ;
   for ( i = 0 ; i < k ; i ++ ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol () == sy || sy == "" ) {
         if ( OrderType () == OP_BUY || OrderType () == OP_SELL ) {
           if ( op < 0 || OrderType () == op ) {
             if ( mn < 0 || OrderMagicNumber () == mn ) {
               if ( l == 0 || l > OrderLots ()) l = OrderLots () ;
             }
           }
         }
       }
     }
   }
   return ( l ) ;
}
추신. GetMinLotFromOpenPos() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
 
GYL :

친애하는 이고르! 도와주세요, 제발. 문제는 Expert Advisor에서 CCI 또는 Stoch에 MA를 첨부하는 방법에 대한 코드를 어디에서도 찾을 수 없다는 것입니다. 더욱이, 매수 또는 매도 신호는 이 MA와 CCI 레벨의 교차점에 있어야 합니다(예: +100/-100).

내가 필요로 하는 코드가 사용되는 곳에 이미 조언자가 있을 수 있습니까?

질문은 분명히 주제에서 벗어났습니다. 사소한 일로 Igor의 주의를 산만하게 하지 않기 위해 그러한 코드의 예를 제공합니다.

 double Stochastic_array [ 50 ] ; int j = 0 ; while ( j < 50 ) {
Stochastic_array [ j ] = iStochastic ( NULL , 0 , Stochastic_period , 3 , 3 ,
                                     MODE_SMA , 0 , MODE_MAIN , j ) ; j ++; }
ArraySetAsSeries ( Stochastic_array , true ) ;
double MA_0 = iMAOnArray ( Stochastic_array , 0 , MA_period , 1 , MODE_SMA , 0 ) ;
double Stochastic_0 = iStochastic ( NULL , 0 , Stochastic_period , 3 , 3 , MODE_SMA , 0 , MODE_MAIN , 0 ) ;
double Stochastic_1 = iStochastic ( NULL , 0 , Stochastic_period , 3 , 3 , MODE_SMA , 0 , MODE_MAIN , 1 ) ;

엄마. 빠른. 나는 정확히 하루를 지킬 것입니다 - 나는 그것을 삭제할 것입니다!

 
rid :
질문은 분명히 주제에서 벗어났습니다. 사소한 일로 Igor의 주의를 산만하게 하지 않기 위해 그러한 코드의 예를 제시합니다.

엄마. 빠른. 나는 정확히 하루를 지킬 것입니다 - 나는 그것을 삭제할 것입니다!

정말 감사합니다, 당신은 저에게 많은 도움이되었습니다.