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

 

NumberOfLossPosToday() 함수.

이 함수는 오늘 마감된 수익성 없는 포지션의 수를 반환합니다. 고려할 위치 선택은 외부 매개변수에 의해 설정됩니다.

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

   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 ) {
               t = OrderCloseTime () ;
               if ( Year () == TimeYear ( t ) && DayOfYear () == TimeDayOfYear ( t )) {
                 if ( OrderProfit () < 0 ) kp ++;
               }
             }
           }
         }
       }
     }
   }
   return ( kp ) ;
}
PS Attached는 NumberOfLossPosToday() 함수를 테스트하기 위한 스크립트입니다.
 

PriceCloseLastPos() 함수.

이 함수는 마지막으로 마감된 포지션의 종가를 반환합니다. 고려할 위치 선택은 외부 매개변수에 의해 설정됩니다.

  • 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 PriceCloseLastPos ( string sy = "" , int op =- 1 , int mn =- 1 ) {
   datetime t ;
   double    r = 0 ;
   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 () ;
                 r = OrderClosePrice () ;
               }
             }
           }
         }
       }
     }
   }
   return ( r ) ;
}
추신. PriceCloseLastPos() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
 
KimIV 님 , 모든 기능의 라이브러리를 분기 끝에 게시해 주시면 좋을 것 같습니다.
 

나는 지원한다. 당신은 이것을 할 수도 있습니다. 전체 라이브러리가 아닙니다. 그리고 여러 라이브러리, 그리고 끝이 아니라 특정 주제에 대한 f-th의 축적으로.

예를 들어, 열기/닫기를 위한 별도의 라이브러리(개봉 기능은 마켓워치 및 마감에 의한 열기를 더한 것뿐입니다)

과정. 라이브러리 - 특정 근거에서 위치의 존재를 반환하는 함수 포함.

글쎄, 등등.

여기에는 도서관 총회에 참석한 제안서만 입력하면 됩니다.

 

PriceOpenLastPos() 함수.

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

  • 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 PriceOpenLastPos ( string sy = "" , int op =- 1 , int mn =- 1 ) {
   datetime t ;
   double    r = 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 ( t < OrderOpenTime ()) {
                 t = OrderOpenTime () ;
                 r = OrderOpenPrice () ;
               }
             }
           }
         }
       }
     }
   }
   return ( r ) ;
}
추신. PriceOpenLastPos() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
파일:
 

PriceOpenLastClosePos() 함수.

이 함수는 마지막으로 마감된 포지션의 시가를 반환합니다. 고려할 위치 선택은 외부 매개변수에 의해 설정됩니다.

  • sy - 시장 상품의 이름. 이 매개변수를 설정하면 이 기능은 지정된 도구의 위치만 고려합니다. 기본값은 "" 는 모든 시장 상품을 의미합니다. NULL 값은 현재 기기를 의미합니다.
  • op - 거래 작업, 위치 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 의미합니다.
  • mn - 위치 ID, MagicNumber. 기본값 -1 은 모든 식별자를 의미합니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 03.06.2008                                                     |
//|  Описание : Возвращает цену открытия последней закрытой позиций.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double PriceOpenLastClosePos ( string sy = "" , int op =- 1 , int mn =- 1 ) {
   datetime t ;
   double    r = 0 ;
   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 () ;
                 r = OrderOpenPrice () ;
               }
             }
           }
         }
       }
     }
   }
   return ( r ) ;
}
추신. PriceOpenLastClosePos() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
 
rid :

나는 지원한다. 당신은 이것을 할 수도 있습니다. 전체 라이브러리가 아닙니다. 그리고 여러 라이브러리, 그리고 끝이 아니라 특정 주제에 대한 f-th의 축적으로.

예를 들어, 열기/닫기를 위한 별도의 라이브러리(개봉 기능은 마켓워치 및 마감에 의한 열기를 더한 것뿐입니다)

과정. 라이브러리 - 특정 근거에서 위치의 존재를 반환하는 함수 포함.

글쎄, 등등.

도서관을 완성할 때 참석한 사람들의 제안을 여기에 입력하기만 하면 됩니다.

안녕하세요.

친애하는 김 IV.

당신은 초보 EA 작가들에게 매우 유용한 일을 하고 있습니다.

나는 이전 청원자에 합류한다.

어렵지 않다면 주요 기능을 하나의 " 전문가 템플릿 "으로 모을 수 있습니다.

- 사전 점검

- 포지션 오픈

- 주문을하다

- 포지션 클로징

-주문 삭제

- 주문 및 위치 유지(수정).

그리고 모든 사람은 이러한 함수를 직접 호출하여 블록을 구성합니다.

처음부터 Expert Advisor를 작성할 수는 없습니다.

그래서 다른 사람의 코드를 바꾸는 것부터 시작했습니다.

나는 당신의 기능을 블록에 추가하기 시작했습니다.

며칠간의 수정과 추가 끝에 시험판 EA가 작동하기 시작했지만 매우 서툴렀습니다..

그래서 간단한 전문가 템플릿을 만들어달라는 요청이 생겼습니다.


저를 위한 Roche 템플릿은 MetaEditor 기사: 템플릿의 힘을 기반으로 빌드에서 와 같이 초기 단계에서 이해하기 다소 어렵고 중복됩니다.

 

PriceOpenNearPos() 함수.

이 함수는 가장 가까운 위치의 시가를 반환합니다. 포지션 "근접성" 기준은 포지션 개시 가격과 현재 시장 가격 사이의 최소 거리(포인트 단위)입니다. 고려할 위치 선택은 외부 매개변수에 의해 설정됩니다.

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

   if ( sy == " 0 " ) sy = Symbol () ;
   for ( i = 0 ; i < k ; i ++ ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES )) {
       if (( OrderSymbol () == sy || sy == "" ) && ( op < 0 || OrderType () == op )) {
         if ( OrderType () == OP_BUY || OrderType () == OP_SELL ) {
           if ( mn < 0 || OrderMagicNumber () == mn ) {
             if ( OrderType () == OP_BUY )    mi = MarketInfo ( OrderSymbol () , MODE_ASK ) ;
             if ( OrderType () == OP_SELL ) mi = MarketInfo ( OrderSymbol () , MODE_BID ) ;
             p = MarketInfo ( OrderSymbol () , MODE_POINT ) ;
             if ( p == 0 ) if ( StringFind ( sy , " JPY " ) < 0 ) p = 0.0001 ; else p = 0.01 ;
             if ( pp == 0 || pp > MathAbs ( OrderOpenPrice () - mi ) / p ) {
               pp = MathAbs ( OrderOpenPrice () - mi ) / p ;
               oop = OrderOpenPrice () ;
             }
           }
         }
       }
     }
   }
   return ( oop ) ;
}

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

관심 있는 사람이 있으면 DistMarketAndPos() 및 PriceOpenNearPos() 함수를 직접 비교하십시오. 차이점에 유의하십시오.

파일:
 

TicketNearPos() 함수.

이 함수는 시장에서 가장 가까운 포지션의 티켓을 반환합니다. 포지션 "근접성" 기준은 포지션 개시 가격과 현재 시장 가격 사이의 최소 거리(포인트 단위)입니다. 고려할 위치 선택은 외부 매개변수에 의해 설정됩니다.

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

   if ( sy == " 0 " ) sy = Symbol () ;
   for ( i = 0 ; i < k ; i ++ ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES )) {
       if (( OrderSymbol () == sy || sy == "" ) && ( op < 0 || OrderType () == op )) {
         if ( OrderType () == OP_BUY || OrderType () == OP_SELL ) {
           if ( mn < 0 || OrderMagicNumber () == mn ) {
             if ( OrderType () == OP_BUY )    mi = MarketInfo ( OrderSymbol () , MODE_ASK ) ;
             if ( OrderType () == OP_SELL ) mi = MarketInfo ( OrderSymbol () , MODE_BID ) ;
             p = MarketInfo ( OrderSymbol () , MODE_POINT ) ;
             if ( p == 0 ) if ( StringFind ( sy , " JPY " ) < 0 ) p = 0.0001 ; else p = 0.01 ;
             if ( pp == 0 || pp > MathAbs ( OrderOpenPrice () - mi ) / p ) {
               pp = MathAbs ( OrderOpenPrice () - mi ) / p ;
               ti = OrderTicket () ;
             }
           }
         }
       }
     }
   }
   return ( ti ) ;
}
추신. TicketNearPos() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
파일:
 

TypeNearPos() 함수.

이 함수는 시가에서 시장에 가장 가까운 포지션의 유형( 0 -Buy, 1 -Sell)을 반환하거나 -1 을 반환합니다. 포지션 "근접성" 기준은 포지션 개시 가격과 현재 시장 가격 사이의 최소 거리(포인트 단위)입니다. 고려할 위치 선택은 외부 매개변수에 의해 설정됩니다.

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

   if ( sy == " 0 " ) sy = Symbol () ;
   for ( i = 0 ; i < k ; i ++ ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES )) {
       if (( OrderSymbol () == sy || sy == "" ) && ( op < 0 || OrderType () == op )) {
         if ( OrderType () == OP_BUY || OrderType () == OP_SELL ) {
           if ( mn < 0 || OrderMagicNumber () == mn ) {
             if ( OrderType () == OP_BUY )    mi = MarketInfo ( OrderSymbol () , MODE_ASK ) ;
             if ( OrderType () == OP_SELL ) mi = MarketInfo ( OrderSymbol () , MODE_BID ) ;
             p = MarketInfo ( OrderSymbol () , MODE_POINT ) ;
             if ( p == 0 ) if ( StringFind ( sy , " JPY " ) < 0 ) p = 0.0001 ; else p = 0.01 ;
             if ( pp == 0 || pp > MathAbs ( OrderOpenPrice () - mi ) / p ) {
               pp = MathAbs ( OrderOpenPrice () - mi ) / p ;
               ty = OrderType () ;
             }
           }
         }
       }
     }
   }
   return ( ty ) ;
}
추신. TypeNearPos() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
파일: