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

 

NumberOfBarCloseLastPos() 함수.

이 함수는 마지막 위치의 닫는 막대 번호 또는 -1 을 반환합니다. 고려할 위치 선택은 외부 매개변수에 의해 설정됩니다.

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

   if ( sy == "" || sy == " 0 " ) sy = Symbol () ;
   for ( i = 0 ; i < k ; i ++ ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_HISTORY )) {
       if ( OrderSymbol () == sy ) {
         if ( OrderType () == OP_BUY || OrderType () == OP_SELL ) {
           if ( op < 0 || OrderType () == op ) {
             if ( mn < 0 || OrderMagicNumber () == mn ) {
               if ( t < OrderCloseTime ()) t = OrderCloseTime () ;
             }
           }
         }
       }
     }
   }
   return ( iBarShift ( sy , tf , t , True )) ;
}
추신. NumberOfBarCloseLastPos() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
 
 
 
KimIV :

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

DeleteOrders() 함수는 BuyLimit, BuyStop, SellLimit 및 SellStop 보류 주문을 삭제하도록 설계되었습니다. op - 거래 작업 유형, 보류 중인 주문 유형. -1, OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT 또는 OP_SELLSTOP의 다섯 가지 값 중 하나가 가능합니다. 기본값 -1은 모든 주문을 의미합니다.
mn
- MagicNumber, 보류 중인 주문의 식별 번호입니다. 기본값 -1은 모든 마법을 의미합니다.

안녕하세요. 10페이지에서 이 함수는 사용을 위해 노출됩니다.

내 Expert Advisor에서 예금을 제거하는 데 사용했습니다. 오히려 사용하고 싶었습니다. int 시작 섹션 외부에 함수를 배치했습니다.

그리고 삽입

 if ( isCloseLastPosByTake ( NULL , OP_BUY , My order Buy ))    {
               DeleteOrders ( NULL , - 1 ,   My order Sell) ;   }

그러나 컴파일 할 때 오류가 발생합니다.

'clDelete' - 정의되지 않은 변수 C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (1155, 40)

오류를 어떻게 고칠 수 있습니까? clDelete는 무엇입니까

그리고 ClosePositions() 함수를 사용할 때 - 시장 가격으로 포지션을 청산 하면 오류 없이 모든 것이 정상입니다!

/ DeleteOrders 함수를 삽입하고 아직 적용하지 않아도 이 오류는 계속 컴파일됩니다!

 
Rita писал (а):
그러나 컴파일 할 때 오류가 발생합니다.
'clDelete' - 정의되지 않은 변수 C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (1155, 40)
오류를 어떻게 고칠 수 있습니까? clDelete 란 무엇입니까

같은 위치에 첨부 파일의 10페이지에 test_DeleteOrders.mq4 파일이 있습니다.

그것을 다운로드하고 clDelete에 대한 모든 언급을 찾으십시오.

 

다운로드하고 보았다! 하도록 하다? 그것은 단지 그것이 나왔고 닫기 아이콘의 색상을 설정해야했습니다!

그러나 이제 모든 것이 다시 좋지 않습니다. 이제 그 오류가 사라졌습니다. 그러나 다른 하나가 나타났습니다 - 이미 ClosePositions() 함수에 오류가 있었습니다. 이전에는 없었습니다.

 if ( L_2Sell == true )                  {   
         ClosePositions ( NULL , - 1 , Magic ) ;
                                       }

'ClosePosBySelect' - 함수 가 정의되지 않았습니다. C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (905, 47)
그리고 거기에는 볼 스크립트가 없습니다(p. 14).

오류를 수정하는 방법을 알려주실 수 있습니까?

 
Rita писал (а):
'ClosePosBySelect' - 함수가 정의되지 않았습니다. C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (905, 47)

이 오류는 ClosePosBySelect() 함수가 정의되지 않았 음을 의미합니다.

리타 는 다음과 같이 썼습니다.
오류를 수정하는 방법을 알려주실 수 있습니까?
ClosePosBySelect() 함수 코드를 찾아 Expert Advisor의 파일에 붙여넣어야 합니다. 13페이지를 보십시오.
 

자꾸 방해해서 미안 해요! 나는 ClosePositions() 옆에 지정한 ClosePosBySelect() 함수를 넣었고 컴파일 후에 이미 6개의 오류가 있었습니다! 음, 악으로는 충분하지 않습니다!

4개는 제가 직접 했습니다. 미끄러짐, 색상, 닫기 시도 횟수 .... 2 오류 남음, -

사운드 파일 -

'UseSound' - 변수가 정의되지 않음 C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (1002, 13)

'NameFileSound' - 변수가 정의되지 않음 C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (1002, 33)

어디에서 가져갈까요? 어디에 넣을까?

음 extern bool UseSound = false;//Switch

PROPERTIES EXPERT와 NameFileSound'를 입력하겠습니다. 이게 뭐죠? 그리고 어디로 데려갈까?

************************************************** ***** **************************

글로벌에서 찾아내다

 extern bool UseSound = false ; //выключатель звука
extern string NameFileSound =" alert . wav ";

그런 다음 하나의 오류 대신 컴파일러가 4개의 조각을 던졌습니다.

'GetNameOP' - 함수 가 정의되지 않았습니다.

'ErrorDescription' - 함수가 정의되지 않았습니다.

'else' - 예기치 않은 토큰

'GetNameOP' - 함수가 정의되지 않았습니다.

이러한 오류는 무기한 계속 나타날 것 같습니다. 하나의 ClosePositions() 함수를 사용하려면 먼저 다른 함수인 ClosePosBySelect()를 넣어야 했습니다. 그리고 다른 하나는 차례로 어떤 종류의 소리가 필요합니다. 그리고 나에게 전혀 필요하지 않은 이러한 소리를 매우 어렵게 찾으면 완전히 이해할 수 없는 오류('else')가 발생합니다. 예기치 않은 토큰 및 기타 오류가 발생합니다. 아직 이 기능을 사용하기 시작하지도 않았습니다. 그냥 다른 사람들 사이에 넣어.!

오류를 어떻게 고칠 수 있는지 알려주실 수 있습니까? 이 모든 GetNameOP를 주석 처리했습니다. 오류가 사라진 것 같습니다. 그러나 기능이 없어도 잘 작동합니까?

 
Rita писал (а):
그런 다음 컴파일러는 하나의 오류 대신 4개의 조각을 던졌습니다.
'GetNameOP' - 함수가 정의되지 않았습니다.

첨부 파일 testrSetOrder.mq4의 첫 번째 페이지에서

리타 는 다음과 같이 썼습니다.
ErrorDescription' - 함수가 정의되지 않았습니다.

Expert Advisor의 코드에 다음 줄을 삽입하십시오.

#include <stdlib.mqh>

리타 는 다음과 같이 썼습니다.
'else' - 예기치 않은 토큰
위에서 설명한 대로 하면 이 오류가 저절로 사라집니다.
 

NumberOfBarOpenLastPos() 함수.

이 함수는 마지막 위치의 열림 막대 번호 또는 -1 을 반환합니다. 고려할 위치 선택은 외부 매개변수에 의해 설정됩니다.

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

   if ( sy == "" || sy == " 0 " ) sy = Symbol () ;
   for ( i = 0 ; i < k ; i ++ ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol () == sy ) {
         if ( OrderType () == OP_BUY || OrderType () == OP_SELL ) {
           if ( op < 0 || OrderType () == op ) {
             if ( mn < 0 || OrderMagicNumber () == mn ) {
               if ( t < OrderOpenTime ()) t = OrderOpenTime () ;
             }
           }
         }
       }
     }
   }
   return ( iBarShift ( sy , tf , t , True )) ;
}
추신. NumberOfBarOpenLastPos() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.