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

 
KimIV >> :

IIFc() 함수.

...

누락된 삼항 연산자를 만들려고 합니까?

Zachot, 덕분에 가능하면 중괄호를 사용하는 습관이 있어 매우 유용할 것입니다.

 
CMEPTHiK писал (а) >> 를 썼습니다.
V. Yakimkin이 책을 읽었습니다. "Forex 시장은 성공으로 가는 길입니다" "...(DJI x Nikkei)와 차등..."과 같은 문구가 나타났습니다. ..

차동은 ROC 표시기 가 나타내는 속도입니다.

 

Igor, 반대 위치의 존재를 고려한 마감을 포함하여 빈의 모든 위치를 한 번에 마감하는 기능이 없었습니까?

저것들. 많은 카운터 위치의 불일치를 고려하여 가능한 한 모든 카운터를 먼저 닫고 수익성이없고 수익성이 ..

 
alexx_v писал(а) >>

Igor, 반대 위치의 존재를 고려한 마감을 포함하여 빈의 모든 위치를 한 번에 마감하는 기능이 없었습니까?

저것들. 많은 카운터 위치의 불일치를 고려하여 가능한 한 모든 카운터를 먼저 닫고 수익성이없고 수익성이 ..

아니, 아직...

 

ExistInHistoryCloseBetween() 함수.

날짜 사이에 마감(삭제)된 위치 또는 주문 내역의 존재 플래그를 반환합니다. ExistInHistoryCloseBetween() 함수는 다음 매개변수를 사용합니다.

  • sy - 시장 상품의 이름. "" - 모든 문자, NULL - 현재 문자. 기본값은 "" 입니다.
  • op - 거래 작업. 유효한 값: -1 , OP_BUY , OP_SELL , OP_BUYLIMIT , OP_BUYSTOP , OP_SELLLIMIT , OP_SELLSTOP . 기본값은 -1 - 모든 작업입니다.
  • mn - 거래 작업의 식별자, MagicNumber . 기본값은 -1 - 모든 마법입니다.
  • d1 - 위치 종료 시간(대기 중인 스레드 삭제). 기본값은 0 - 모든 마감(삭제) 시간입니다. 시간 d1 은 시간 d2 보다 작아야 합니다.
  • d2 - 위치 종료 시간(대기 중인 스레드 삭제). 기본값은 0 - 모든 마감(삭제) 시간입니다. 시간 d2 는 시간 d1 보다 커야 합니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 27.08.2008                                                     |
//|  Описание : Возвращает флаг существования в истории позиции или ордера,    |
//|           : закрытой (удалённого) между датами.                            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая операция)                 |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//|    d1 - время закрытия             ( 0   - любое время закрытия)           |
//|    d2 - время закрытия             ( 0   - любое время закрытия)           |
//+----------------------------------------------------------------------------+
bool ExistInHistoryCloseBetween ( string sy = "" , int op = - 1 , int mn = - 1 ,
                                 datetime d1 = 0 , datetime d2 = 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 = = "" ) & & ( op < 0 | | OrderType ( ) = = op ) ) {
         if ( mn < 0 | | OrderMagicNumber ( ) = = mn ) {
           if ( d1 < = OrderCloseTime ( ) & & ( d2 = = 0 | | d2 > = OrderCloseTime ( ) ) ) return ( True ) ;
         }
       }
     }
   }
   return ( False ) ;
}
 

ExistInHistoryCloseBetween() 함수 사용 예.

  1. 현재 차트의 기호에 대해 어제 삭제된 MagicNumber=0인 모든 유형의 어제 마감된 위치 또는 주문의 존재 .
     datetime d1 = iTime ( NULL , PERIOD_D1 , 1 ) ;
    datetime d2 = iTime ( NULL , PERIOD_D1 , 0 ) - 1 ;
    Message ( IIFs ( ExistInHistoryCloseBetween ( NULL , - 1 , - 1 , d1 , d2 ) , "Есть" , "Нет" ) ) ;
  2. 지난 3시간 동안 마감(삭제)된 포지션 또는 주문의 존재.
    datetime d1=TimeCurrent()-3*60*60;
    Message(IIFs(ExistInHistoryCloseBetween("", -1, -1, d1), "Есть", "Нет"));
  3. 지난 5분 동안 유로화 구매가 종료되었는지 여부.
     datetime d1 = TimeCurrent ( ) - 5 * 60 ;
    Message ( IIFs ( ExistInHistoryCloseBetween ( "EURUSD" , OP_BUY , - 1 , d1 ) , "Да" , "Нет" ) ) ;

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

 

ExistInHistoryOpenBetween() 함수.

날짜 사이에 열린(배치된) 위치 또는 주문 내역의 존재 플래그를 반환합니다. ExistInHistoryOpenBetween() 함수는 다음 매개변수를 사용합니다.

  • sy - 도구 이름. "" - 모든 문자, NULL - 현재 문자. 기본값은 "" 입니다.
  • op - 거래 작업. 유효한 값: -1 , OP_BUY , OP_SELL , OP_BUYLIMIT , OP_BUYSTOP , OP_SELLLIMIT , OP_SELLSTOP . 기본값은 -1 - 모든 작업입니다.
  • mn - 거래 작업의 식별자, MagicNumber . 기본값은 -1 - 모든 마법입니다.
  • d1 - 포지션을 오픈한 시간(대기 주문 설정). 기본값은 0 (개방(설정) 시간)입니다. 시간 d1 은 시간 d2 보다 작아야 합니다.
  • d2 - 포지션을 오픈한 시간(대기 주문 설정). 기본값은 0 (개방(설정) 시간)입니다. 시간 d2 는 시간 d1 보다 커야 합니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 27.08.2008                                                     |
//|  Описание : Возвращает флаг существования в истории позиции или ордера,    |
//|           : открытой (установленного) между датами.                        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//|    d1 - время открытия             ( 0   - любое время открытия)           |
//|    d2 - время открытия             ( 0   - любое время открытия)           |
//+----------------------------------------------------------------------------+
bool ExistInHistoryOpenBetween ( string sy = "" , int op = - 1 , int mn = - 1 ,
                               datetime d1 = 0 , datetime d2 = 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 = = "" ) & & ( op < 0 | | OrderType ( ) = = op ) ) {
         if ( mn < 0 | | OrderMagicNumber ( ) = = mn ) {
           if ( d1 < = OrderOpenTime ( ) & & ( d2 = = 0 | | d2 > = OrderOpenTime ( ) ) ) return ( True ) ;
         }
       }
     }
   }
   return ( False ) ;
}
 

안녕하세요!

Igor, 내가 원하는 색으로 막대를 칠하는 방법을 알려주시겠습니까?

처음부터 말씀드리겠습니다. 저는 Williams B 시장의 네 번째 차원인 영역 거래에 대한 지표를 작성하고 있습니다. 그리고 거기에 막대를 녹색, 빨간색 또는 회색으로 칠해야 합니다.

표시기는 다음과 같이 썼습니다.

이것은 내가 원하는 것이 아닙니다. 정확히 중앙에 바를 칠하는 방법. 채우기 방법으로 두 개의 좌표가 있는 직사각형을 사용합니다. 이것은 직사각형의 시작과 끝 좌표를 선택하는 방법에 대한 전체 문제가 있는 곳입니다.

말해 주세요.

첨부된 것은 표시기 코드입니다.

파일:
zonetrade.mq4  6 kb
 
Duke3D писал(а) >>
Igor, 내가 원하는 색으로 막대를 칠하는 방법을 알려주시겠습니까?
...
정확히 중앙에 바를 칠하는 방법.

Heiken Ashi 표시기를 확인하십시오. 소스 코드는 MetaTrader 4에 포함되어 있습니다.

 

ExistInHistoryToDay() 함수.

오늘 열린(배치된) 위치 또는 주문 내역의 존재 플래그를 반환합니다. ExistInHistoryToDay() 함수는 다음 매개변수를 사용합니다.

  • sy - 도구 이름. "" - 모든 문자, NULL - 현재 문자. 기본값은 "" 입니다.
  • op - 거래 작업. 유효한 값: -1 , OP_BUY , OP_SELL , OP_BUYLIMIT , OP_BUYSTOP , OP_SELLLIMIT , OP_SELLSTOP . 기본값은 -1 - 모든 작업입니다.
  • mn - 거래 작업의 식별자, MagicNumber. 기본값은 -1 - 모든 마법입니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 06.08.2008                                                     |
//|  Описание : Возвращает флаг наличия ордера или позиции в истории за сегодня|
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool ExistInHistoryToDay ( string sy = "" , int op = - 1 , int mn = - 1 ) {
   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 ( op < 0 | | OrderType ( ) = = op ) {
           if ( mn < 0 | | OrderMagicNumber ( ) = = mn ) {
             if ( TimeDay    ( OrderOpenTime ( ) ) = = Day ( )
             & &    TimeMonth ( OrderOpenTime ( ) ) = = Month ( )
             & &    TimeYear ( OrderOpenTime ( ) ) = = Year ( ) ) return ( True ) ;
           }
         }
       }
     }
   }
   return ( False ) ;
}