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

 

TimeOpenLastPos() 함수.

이 함수는 마지막 오픈 포지션의 오픈 시간을 반환합니다. 고려할 위치 선택은 외부 매개변수에 의해 설정됩니다.

  • 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   - любой магик)                    |
//+----------------------------------------------------------------------------+
datetime TimeOpenLastPos ( string sy = "" , int op =- 1 , int mn =- 1 ) {
   datetime t ;
   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 ( t < OrderOpenTime ()) t = OrderOpenTime () ;
             }
           }
         }
       }
     }
   }
   return ( t ) ;
}
추신. TimeOpenLastPos() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
파일:
 
Prival :
빈에 버블 정렬 기능이 있습니까?

아니, 하지만 10분 만에 해냈어

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 10.06.2008                                                     |
//|  Описание : Выполняет пузырьковую сортировку элементов массива.            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    a - массив элементов                                                    |
//+----------------------------------------------------------------------------+
void BubbleSort ( double & a []) {
   double t ;
   int      i , j , n = ArraySize ( a ) ;

   for ( i = n - 1 ; i > 0 ; i -- ) {
     for ( j = 0 ; j < i ; j ++ ) {
       if ( a [ j ] > a [ j + 1 ]) {
         t = a [ j ] ;
         a [ j ] = a [ j + 1 ] ;
         a [ j + 1 ] = t ;
       }
     }
   }
}
추신. BubbleSort() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
파일:
 

BarsBetweenLastFractals() 함수.

이 함수는 마지막 두 프랙탈 또는 -1 사이의 막대 수를 반환합니다. 시장 도구 및 프랙탈을 취해야 하는 기간은 다음 매개변수에 의해 설정됩니다.

  • sy - 시장 상품의 이름. 기본값은 "" 이거나 NULL 은 현재 시장 상품을 의미합니다.
  • tf - 타임프레임(바의 분 수). 기본값은 0 - 현재 시간 프레임을 의미합니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 10.06.2008                                                     |
//|  Описание : Возвращает количество баров между двумя последними фракталами. |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//|    tf - таймфрейм                       (    0       - текущий ТФ)         |
//+----------------------------------------------------------------------------+
int BarsBetweenLastFractals ( string sy = "" , int tf = 0 ) {
   double fu = 0 , fd = 0 ;
   int      i , nu = 0 , nd = 0 ;

   if ( sy == "" || sy == " 0 " ) sy = Symbol () ;
   for ( i = 2 ; i < 100 ; i ++ ) {
     fu = iFractals ( sy , tf , MODE_UPPER , i ) ;
     if ( fu != 0 ) {
       if ( nu == 0 ) nu = i ;
     }
     fd = iFractals ( sy , tf , MODE_LOWER , i ) ;
     if ( fd != 0 ) {
       if ( nd == 0 ) nd = i ;
     }
     if ( nu > 0 && nd > 0 ) return ( MathAbs ( nu - nd )) ;
   }
   Print ( " BarsBetweenLastFractals(): Фракталы не найдены " ) ;
   return ( - 1 ) ;
}
추신. BarsBetweenLastFractals() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
 

SecondsAfterCloseLastPos() 함수.

이 함수는 마지막 위치가 닫힌 이후의 시간(초)을 반환합니다. 고려할 위치 선택은 다음 매개변수에 의해 설정됩니다.

  • 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   - любой магик)                    |
//+----------------------------------------------------------------------------+
datetime SecondsAfterCloseLastPos ( string sy = "" , int op =- 1 , int mn =- 1 ) {
   datetime t ;
   int        i , k = OrdersHistoryTotal () ;

   if ( sy == " 0 " ) sy = Symbol () ;
   for ( i = 0 ; i < k ; i ++ ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_HISTORY )) {
       if ( OrderSymbol () == sy || sy == "" ) {
         if ( OrderType () == OP_BUY || OrderType () == OP_SELL ) {
           if ( op < 0 || OrderType () == op ) {
             if ( mn < 0 || OrderMagicNumber () == mn ) {
               if ( t < OrderCloseTime ()) t = OrderCloseTime () ;
             }
           }
         }
       }
     }
   }
   return ( TimeCurrent () - t ) ;
}
PS Attached는 SecondsAfterCloseLastPos() 함수를 테스트하기 위한 스크립트입니다.
 

여보세요

조언을 도와주세요.

정해진 시간에 양방향으로 주문을 하는 어드바이저가 있다

첫 번째 트리거가 발생하면 두 번째 항목이 자동으로 삭제되도록 만드는 방법을 손가락으로 설명하세요.

또는 고문을 보내

감사해요

 
aceventura :

여보세요

조언을 도와주세요.

정해진 시간에 양방향으로 주문을 하는 어드바이저가 있다

첫 번째 트리거가 발생하면 두 번째 항목이 자동으로 삭제되도록 만드는 방법을 손가락으로 설명하세요.

또는 고문을 보내

감사해요

KimIV

이고르. 손가락이 충분합니까?

 
aceventura :

여보세요

조언을 도와주세요.

정해진 시간에 양방향으로 주문을 하는 어드바이저가 있다

첫 번째 트리거가 발생하면 두 번째 항목이 자동으로 삭제되도록 만드는 방법을 손가락으로 설명하세요.

또는 고문을 보내

감사해요

먼저 이 분기의 주문 수 함수를 취한 다음 "== 1", "< 2" 또는 "== 홀수"를 반환하면 이 분기에서 "주문 마감" 함수를 호출합니다.

 
Vinin :

KimIV

이고르. 손가락이 충분합니까?

아마도 아닐 것입니다 ... 나는 두 가지 밖에 없습니다 : 집게 손가락과 움켜 잡기 ... 이런

 
SergNF :

먼저 이 분기의 주문 수 함수를 취한 다음 "== 1", "< 2" 또는 "== 홀수"를 반환하면 이 분기에서 "주문 마감" 함수를 호출합니다.

주문 수의 기능은 작동하지 않습니다. 각 쌍에 대해 동일한 어드바이저가 고유한 방식으로 구성됩니다. 그리고 그는 동시에 다른 쌍을 주문합니다. 그런 다음 2 쌍에 대해 4 개의 주문이 이루어지고 하나는 작동하고 3 개는 삭제되는 것으로 판명됩니다. 그러나 각각에 대해 반대가 필요합니다.