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

 

안녕 안드레이!

  1. 현재 시가에 대한 세 가지 기능이 있습니다.
  2. 티켓 기능도 있습니다. 그 중 두 가지가 있습니다.
Andrey, 이 기능에는 로트 크기별 선택을 제외하고 필요한 모든 것이 있습니다. 조만간 다른 기능을 만들어서 로트 사이즈별로 개통 가격과 티켓을 구할 수 있도록 하겠습니다.

 
KimIV :

안녕 안드레이!

  1. 현재 시가에 대한 세 가지 기능이 있습니다.
  2. 티켓 기능도 있습니다. 그 중 두 가지가 있습니다.
Andrey, 이 기능에는 로트 크기별 선택을 제외하고 필요한 모든 것이 있습니다. 조만간 다른 기능을 만들어서 로트 사이즈별로 개통 가격과 티켓을 구할 수 있도록 하겠습니다.
아마도 그것들은 나에게 중복되고 나는 가장 가까운 포지션의 시가, 마지막 시가, 시장에 가장 가까운 것과 같은 불필요한 조건을 제거해야 합니다. 그리고 항상 올바르게 작동하지는 않습니다. 또한 올바른 옵션을 비교할 때 이러한 모든 지혜를 더 빨리 이해할 수 있습니다. 감사합니다. 기다릴게요.
 

GetOpenPriceByLot() 함수.

이 함수는 위치 또는 주문의 시작 가격을 로트 크기별로 반환합니다. 고려할 위치 선택은 외부 매개변수에 의해 설정됩니다.

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

GetTicketByLot() 함수.

이 함수는 로트 크기별로 위치 또는 주문 티켓을 반환합니다. 고려할 위치 선택은 외부 매개변수에 의해 설정됩니다.

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

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if ((OrderSymbol()==sy || sy== "" ) && (mn< 0 || OrderMagicNumber()==mn)) {
         if ((op< 0 || OrderType()==op) && OrderType()< 6 ) {
           if (lo== 0 || lo==NormalizeLot(OrderLots())) t=OrderTicket();
        }
      }
    }
  }
   return (t);
}

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


파일:
 

안녕하세요 이고르입니다!

새로운 기능과 모든 것이 매우 빠릅니다. 모든 것이 매우 훌륭합니다. 함수 반환   예를 들어 티켓   외부 변수로 설정할 수 있는 조건으로 주문하거나 사용할 수 없습니다. 나는 이 줄을 잘 이해하지 못한다.

if ((op<0 || OrderType()==op) && (OrderType()>1 && OrderType()<6))

여기에서 if 문의 조건을 확인합니다.   외부 변수 <0 이면 모든 유형의 주문을 사용할 수 있습니다. 또는 함수 호출에서 다음과 같이 작성하는 경우   OP_BUY , 선택은 주문에서 나옵니다.   유형   OP_BUY. 이 조건은 명확하지만 다음을 통해 작성된 동등한 조건이 옵니다.    && 라고 말하는   OrderType ()은 보류 중인 주문의 범위, 즉 1에서 5 사이여야 합니다. 우리의 OP_BUY 유형은 이 범위에 포함되지 않으므로 연산자 조건이 false여야 하고 제어가 통과해야 합니다.   if-else 연산자 뒤에 오는 연산자, 즉 본문의 곱슬 화살표 너머 어딘가에 있는 곳을 말하기는 어렵습니다. 내가 보기에는 시장가 주문에 대한 조건이 기능하고 별도의   보류 중인 주문과 동일한 기능. 즉, 시장가 주문 중에서 선택을 하고 싶은데 잘 모르겠다면   정확한 유형, 다음   나는 취한다   외부변수 <0, 하지만 0부터 1까지의 조건을 명시한 함수를 말하는데, 보류주문도 마찬가지입니다. 즉, 주문 유형의 각 범주에 대해 이 유용한   기능을 사용하는 데 필요한 조건입니다.

그리고 라이브러리 연결에 문제가 있습니다. 검색을 시도하고 읽었지만 내가 쓰고 있는 Expert Advisor를 컴파일할 때 연결에서 오류가 발생합니다. 아직 알아낼 시간이 없어 빨리 유익한 Expert Advisor를 작성하고 싶어서 필요한 세 개의 라이브러리를 모두 복사하여 특수 start() 함수 뒤에 붙여넣고 전역 변수를 해당 전역 변수의 전역 변수 로 옮겼습니다. Expert Advisor가 링크를 주석 처리했습니다. 매우 편리하지는 않지만 작동합니다.
 
00007 :

나는 이 줄을 잘 이해하지 못한다.

if ((op<0 || OrderType()==op) && (OrderType()>1 && OrderType()<6))

덕분에! 수정됨... 이것은 복사-붙여넣기의 결과입니다. 즉 지정가 및 정지 주문 에서만 작동하도록 설계된 다른 기능의 공백을 사용하는 것입니다.

00007 :

그리고 라이브러리 연결에 문제가 있습니다. 검색을 시도하고 읽었지만 내가 쓰고 있는 Expert Advisor를 컴파일할 때 연결에서 오류가 발생합니다. 아직 알아낼 시간이 없어 빨리 유익한 Expert Advisor를 작성하고 싶어서 필요한 세 개의 라이브러리를 모두 복사하여 특수 start() 함수 뒤에 붙여넣고 전역 변수를 해당 전역 변수의 전역 변수로 옮겼습니다. Expert Advisor가 링크를 주석 처리했습니다. 매우 편리하지는 않지만 작동합니다.

그건 그렇고, 나는 MQH 파일의 형태로 내 라이브러리를 사용하지 않습니다. 저는 보통 Expert Advisor에 필요한 기능을 복사합니다. 즉, 평소에 준비된 Expert Advisor는 하나의 MQ4 파일입니다. 필요한 모든 것이 이 파일 안에 있습니다. 예, 코드 반복성이 있습니다. 그러나 기능 버전에는 문제가 없습니다.

 

그건 그렇고, 나는 이미 당신이 각 기능에 대한 테스트를 위한 스크립트를 가지고 있다는 것을 알아차렸습니다. 여기에는 기능과 함께 고문에게 간단히 추가할 수 있는 모든 필요한 추가 기능이 있으며 모든 것이 하나의 파일에 있고 그 이상은 없습니다. 기능은 간단하고 유용한 것으로 판명되었지만 귀하의 허락을 받아 나 자신을 위해 그 중 4개를 만들 것입니다. 2개는 연기용이고 2개는 직위용입니다. 그들은 내 고문의 미묘한 필요를 위해 더 보편적인 것으로 판명될 것입니다. 그러나 이제 나는 그것이 얼마나 쉬운 일인지 알았습니다. 이고르님 정말 감사합니다.

존경합니다, 앤드류.

 

TimeOpenFirstPos() 함수.

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

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

여보세요

SetRegression() ( https://www.mql5.com/en/forum/107476/page35 ) 채널에 fibu를 추가하는 방법.

 
gince :

여보세요

SetRegression() ( https://www.mql5.com/en/forum/107476/page35 ) 채널에 fibu를 추가하는 방법.

예, 쉽습니다.

  1. fibo 선의 첫 번째 점을 설정합니다(필요한 위치에서 계산).
  2. 두 번째 점을 얻을 막대를 결정하십시오.
  3. 그런 다음 EquationDirect() 함수를 사용하여 가격을 얻습니다.
  4. 두 점의 좌표가 주어지면 SetTLine() 함수를 사용하여 두 점을 지나는 선을 그립니다.