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

 

KimIV님 감사합니다!

 

DeleteOrders() 함수. 테스터 버전.

DeleteOrders() 함수는 BuyLimit, BuyStop, SellLimit 및 SellStop 보류 주문을 삭제하도록 설계되었습니다. DeleteOrders() 함수는 보편적입니다. 즉, 기존의 모든 보류 주문과 함수 매개변수에 지정된 선택 조건을 충족하는 특정 주문을 모두 삭제하는 데 사용할 수 있습니다.

sy - 도구 이름. 테스터에서의 거래는 현재 상품에서만 수행할 수 있으므로 이 매개변수는 테스터 버전과 관련이 없으며 이 기능의 온라인 버전과의 호환성을 위해서만 필요합니다. 테스터에서는 ​"" 또는 NULL 값을 사용하는 것이 가장 좋습니다. 기본값은 "" - 모든 문자를 의미합니다.
op
- 거래 작업 유형, 보류 중인 주문 유형. -1, OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT 또는 OP_SELLSTOP의 다섯 가지 값 중 하나가 가능합니다. 기본값 -1은 모든 순서를 의미합니다.
mn
- MagicNumber, 보류 중인 주문의 식별 번호입니다. 기본값 -1은 모든 마법을 의미합니다.

 //+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 13.06.2007                                                      |
//| Описание : Удаление ордеров. Версия функции для тестов на истории.         |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//| sy - наименование инструмента   (NULL - текущий символ)                    |
//| op - операция                   ( -1  - любой ордер)                       |
//| mn - MagicNumber                ( -1  - любой магик)                       |
//+----------------------------------------------------------------------------+
void DeleteOrders ( string sy = "" , int op =- 1 , int mn =- 1 ) {
  int i , k = OrdersTotal () , ot ;
 
  if ( sy == "" || sy == " 0 " ) sy = Symbol () ;
  for ( i = 0 ; i < k ; i ++ ) {
    if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES )) {
      ot = OrderType () ;
      if ( ot == OP_BUYLIMIT || ot == OP_BUYSTOP || ot == OP_SELLLIMIT || ot == OP_SELLSTOP ) {
        if ( OrderSymbol () == sy && ( op < 0 || ot == op )) {
          if ( mn < 0 || OrderMagicNumber () == mn ) {
            OrderDelete ( OrderTicket () , clDelete ) ;
          }
        }
      }
    }
  }
}
 

DeleteOrders() 함수. 온라인 버전.


 //+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 28.11.2006                                                      |
//| Описание : Удаление ордеров                                                |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//|   sy - наименование инструмента   ( ""  - любой символ,                    |
//|                                    NULL - текущий символ)                  |
//|   op - операция                   (  -1 - любой ордер)                     |
//|   mn - MagicNumber                (  -1 - любой магик)                     |
//+----------------------------------------------------------------------------+
void DeleteOrders ( string sy = "" , int op =- 1 , int mn =- 1 ) {
  bool fd ;
  int err , i , it , k = OrdersTotal () , ot ;
  
  if ( sy == " 0 " ) sy = Symbol () ;
  for ( i = k - 1 ; i >= 0 ; i -- ) {
    if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES )) {
      ot = OrderType () ;
      if ( ot > 1 && ot < 6 ) {
        if (( OrderSymbol () == sy || sy == "" ) && ( op < 0 || ot == op )) {
          if ( mn < 0 || OrderMagicNumber () == mn ) {
            for ( it = 1 ; it <= NumberOfTry ; it ++ ) {
              if ( ! IsTesting () && ( ! IsExpertEnabled () || IsStopped ())) break ;
              while ( ! IsTradeAllowed ()) Sleep ( 5000 ) ;
              fd = OrderDelete ( OrderTicket () , clDelete ) ;
              if ( fd ) {
                if ( UseSound ) PlaySound ( NameFileSound ) ; break ;
              } else {
                err = GetLastError () ;
                Print ( " Error( " , err , " ) delete order " , GetNameOP ( ot ) ,
                      " : " , ErrorDescription ( err ) , " , try " , it ) ;
                Sleep ( 1000 * 5 ) ;
              }
            }
          }
        }
      }
    }
  }
}
 

DeleteOrders() 함수 사용의 예.


1. 모든 주문 삭제:

 DeleteOrders () ;
2. 모든 BuyStop 주문 삭제:
 DeleteOrders ( NULL , OP_BUYSTOP ) ;

3. magic 123456으로 모든 주문을 삭제합니다.

 DeleteOrders ( NULL , - 1 , 123456 ) ;

추신. 예고편에는 동일한 예제가 포함된 작업 스크립트가 있습니다.

파일:
 
KimIV :

DeleteOrders() 함수 사용의 예.

우리는 이 속도로 도서관에 가지 않을 것입니다. 아직 방문해야 합니다. 물론 초대한다면. 난 초대받지 않았어, 아니야, 아니야.
 
사람은 누구나 좌에서 우로 우열을 가집니다 ... 이런 ... 이와 관련하여 나는 약간의 재미를 가질 것입니다

Ilnar 는 프랙탈에 대한 보류 중인 주문 이라는 주제에 대해 다음과 같이 질문했습니다.


Ilnar는 프랙탈의 가격 수준을 결정하는 데 어려움을 겪었을 것입니다. 따라서 나는 전통적으로 내 기능을 사용할 것을 제안합니다.


 //+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 07.10.2006                                                      |
//| Описание : Поиск ближайшего фрактала.                                      |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//|   sy - наименование инструмента     (NULL - текущий символ)                |
//|   tf - таймфрейм                    (  0  - текущий ТФ)                    |
//|   mode - тип фрактала               (MODE_LOWER|MODE_UPPER)                |
//+----------------------------------------------------------------------------+
double FindNearFractal ( string sy = " 0 " , int tf = 0 , int mode = MODE_LOWER ) {
  if ( sy == "" || sy == " 0 " ) sy = Symbol () ;
  double f = 0 ;
  int d = MarketInfo ( sy , MODE_DIGITS ) , s ;
  if ( d == 0 ) if ( StringFind ( sy , " JPY " ) < 0 ) d = 4 ; else d = 2 ;
 
  for ( s = 2 ; s < 100 ; s ++ ) {
    f = iFractals ( sy , tf , mode , s ) ;
    if ( f != 0 ) return ( NormalizeDouble ( f , d )) ;
  }
  Print ( " FindNearFractal(): Фрактал не найден " ) ;
  return ( 0 ) ;
}
FindNearFractal() 함수는 주어진 시간에 주어진 기호에서 주어진 유형의 가장 가까운 프랙탈을 검색하고 해당 가격 수준을 반환합니다. 프랙탈 위치의 가격 수준을 알면 이미 이 수준에서 쉽게 주문할 수 있습니다.
 
KimIV :
  int d = MarketInfo ( sy , MODE_DIGITS ) , s ;
  if ( d == 0 ) if ( StringFind ( sy , " JPY " ) < 0 ) d = 4 ; else d = 2 ;
질문... 무엇에 대한 링크 0과 같을 수 있습니까 ???
 
kharko :
김 IV :
  int d = MarketInfo ( sy , MODE_DIGITS ) , s ;
  if ( d == 0 ) if ( StringFind ( sy , " JPY " ) < 0 ) d = 4 ; else d = 2 ;
질문... 무엇에 대한 링크 0과 같을 수 있습니까 ???
잘 모르겠습니다... 제 연습에서 d=0인 경우가 한 번 있었습니다. 0을 확인해야 했습니다. 그 이후로 나는 가능한 모든 곳에서 이 코드를 끌어왔습니다. 이것은 과잉일 수 있지만, 과소평가하는 것보다 과도하게 하는 것이 낫다고 생각합니다.
 
Vinin :
김 IV :

DeleteOrders() 함수 사용의 예.

우리는 이 속도로 도서관에 가지 않을 것입니다. 아직 방문해야 합니다. 물론 초대한다면. 난 초대받지 않았어, 아니야, 아니야.

비톡, 뭐가 문제야? Kaneshna, 곧 정원을 파러 오세요 ... 당신이 도울 것입니다 ...

 
KimIV :
비닌 :
김 IV :

DeleteOrders() 함수 사용의 예.

우리는 이 속도로 도서관에 가지 않을 것입니다. 아직 방문해야 합니다. 물론 초대한다면. 난 초대받지 않았어, 아니야, 아니야.

비톡, 뭐가 문제야? Kaneshna, 곧 정원을 파러 오세요 ... 당신이 도울 것입니다 ...

동년생은 아니지만 정원에는 문제가 없습니다. 이 경우 더 어린 사람을 데려가십시오. 그리고 당신과 나는 목욕탕에 가서 크 바스를 마실 것입니다 (당신은 알레르기가 있고 나도 한 번 가졌습니다). 청년들이 어떻게 일하는지 봅시다. 그리고 그것은 그렇게 심각하지 않을 것입니다.