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

 

GetTypeLastClosePos() 함수.

이 함수는 마지막으로 닫힌 위치의 유형 또는 -1을 반환합니다. 고려할 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.

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

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

GetTypeLastOpenPos() 함수.

이 함수는 마지막 열린 위치의 유형 또는 -1을 반환합니다. 고려할 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.

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

   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 ( OrderType () == OP_BUY || OrderType () == OP_SELL ) {
           if ( t < OrderOpenTime ()) {
             t = OrderOpenTime () ;
             r = OrderType () ;
           }
         }
       }
     }
   }
   return ( r ) ;
}
추신. GetTypeLastOpenPos() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
 
KimIV :

온라인용 OpenPosition() 함수.

      if ( err == 128 || err == 142 || err == 143 ) {
        Sleep ( 1000 * 66.666 ) ;
        if ( ExistPositions ( sy , op , mn , ot )) {
          if ( UseSound ) PlaySound ( NameFileSound ) ; break ;
        }
      

오류 코드 142 및 143은 무엇을 의미합니까?

고맙습니다.

 
zennon :

오류 코드 142 및 143은 무엇을 의미합니까?

142 - 주문이 대기 중입니다.

143 - 주문이 실행을 위해 딜러에 의해 수락되었습니다.

여기에서 더 읽어보기

 

독의 조언은 오류 128 로 처리하는 것입니다.

가능하다면 귀하의 관점이나 입장에서 이에 대한 몇 마디 ...

 
kombat :

독의 조언은 오류 128로 처리하는 것입니다.

가능하다면 귀하의 관점이나 입장에서 이에 대한 몇 마디 ...

제 관점은 Andrey가 위의 두 게시물을 제공한 코드에 표현되어 있습니다.

 

죄송합니다 ... 물론 보았습니다 ...

P에 대해 t에 대해 내가 이해할 수 없는 정도입니다.

 Sleep ( 1000 * 66.666 ) ;

게다가, 그리고 아무 생각도 하지 않는... 자...

그러나 더 나아가면 실제로는 아닙니다.

저것들. 우리는 자고 , 자리 가 있으면 행진곡 을 연주합니다.

-

좋아요, 질문이 애매하다면 다시 한번 저를 용서하세요 . 그러면 대답 없이 가도 됩니다 .

 
kombat писал (а):
좋아요, 질문이 애매하다면 다시 한번 저를 용서하세요 . 그러면 대답 없이 가도 됩니다 .

아뇨... 알아내자... 분해하면 이해가 깊어집니다... 당신이 이해하지 못하는 것을 난 그냥 이해하지 못합니다. 질문을 간단하고 일반적으로 받아 들여지는 용어로 공식화하십시오. 최대 절전 모드 간격이 귀찮습니까? 정확히 66초인 이유는 무엇입니까?

 
KimIV :
정확히 66초인 이유는 무엇입니까?

아니야, 이건 아니야! 이것으로 질문이 없습니다 ... 절대적으로!

그러나 이 조각에서 추가 논리적-순차적 작업은 그다지 좋지 않습니다.

우리가 오류 코드 를 얻었다고 가정하고, 우리는 잠을 자고, 볼트가 있는 경우 ifim, 이 기능이 활성화되면 Shpoen 왈츠가 연주됩니다 ...

-

(젠장, 메시지 꼬리가 사라지고, 나는 스스로를 반복해야합니다 :(((

-

우리가 시작한 일을 계속하는 방법에 대한 질문에 훨씬 더 관심이 있습니다!

저것들. 추가 거래 제스처: 기능 중 하나가 망치질

열리거나 다른 사람에게 제어권을 이전할 때까지 ...

첫 번째 경우 "루프", "자체" 또는 어떻게 호출하는지 명확하지 않습니다.

 

흠... 아직 아무것도 이해하지 못했습니다. 랜덤으로 쏴드립니다. 다음은 모두 오류 128, 142 및 143에 적용됩니다.

오류 128이 어떤 식으로든 처리되지 않으면 하나가 아닌 두 개의 동일한 오픈 포지션을 얻을 위험이 있습니다. 2년 동안 2개의 실계좌로 거래하면서 그런 경우는 딱 한 번 있었습니다. 포지션 중복은 거래 서버가 어떤 이유로 거래 실행 제한 시간 만료에 대한 메시지를 단말기에 반환했기 때문에 발생합니다. 터미널 서비스가 거부되지 않았습니다. 그리고 거래는 여전히 실행될 수 있습니다. 실행이 "허용되지 않을 정도로" 오랫동안 지연되었을 뿐입니다. 이러한 메시지 이후에 다른 실행 요청이 전송되면 지연된 요청과 새 요청이 모두 실행될 수 있습니다. 이러한 상황을 피하기 위해서는 개발자의 권고에 따라 거래 서버에서 실행이 지연된다는 메시지를 보낸 요청과 관련하여 최소 1분 동안 일시 중지하고 요청이 실행되지 않았는지 확인해야 합니다. YES이면 목표에 도달한 것입니다. 포지션이 열려 있고 NO이면 거래 요청 을 반복할 수 있습니다. 이것은 내 코드가 구현하는 오류 128, 142 및 143을 처리하기 위한 논리입니다.