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

 
SamMan писал (а) >> 를 썼습니다.

정확히. 그리고 코드가 작을수록 이해하기 쉽습니다. 나는 2-3개의 스크린에서 f번째 "번짐"을 싫어한다. 기능은 뒤집지 않고 화면에 모두 표시되어야 합니다. 그러므로 나는 간결함을 추구한다.


나도 참을 수 없어 :) . 내 기능이 화면에 맞습니다.


그건 그렇고, 독자의 관심을 다시 그들 자신에게 끌어들이는 선택적인 연속체를 많이 가지고 있어도 괜찮습니까?


음, 함수의 복잡성을 줄이는 것은 GOOD 코드를 작성하기 위한 기본 조건 중 하나입니다.

그런 식으로 마음에 들면 2가지 옵션이 있습니다.

1. 당신은 코드의 나쁜 스타일에 익숙해지고 그것을 스스로 사용합니다. 이것에 좋은 것은 없습니다. 당신이 정말로 근본적인 코드를 작성해야 할 때, 당신은 제 천진함을 이해하게 될 것입니다. 적어도 MQL5로 전환할 때.

2. 그리고 나는 그것이 당신에 관한 것이라고 생각합니다. 당신은 자신의 코드를 작성할 수 없기 때문에 이 코드를 사용합니다. 프로그래머로서 당신은 아무 것도 아니며 주제 작성자에게 내 게시물을 비난하고 토론할 권리가 없습니다. 특히 작가와 이야기를 나누다 보니.

나는 저자에게 내 게시물에 대해 사과합니다. 나는 헛되이 썼습니다. 어쨌든 나는 이 코드를 사용하지 않을 것이다. 왜냐하면. 나는 필요한 모든 것을 갖춘 나만의 라이브러리를 가지고 있습니다. 이후 오랜 시간 동안 명백하게 부정적인 리뷰가 없었습니다. 이는 작성자의 코드가 적합함을 의미합니다. 참을 수가 없었어요 :) 죄송합니다.

 
TheXpert писал (а) >>

나는 저자에게 내 게시물에 대해 사과합니다. 나는 헛되이 썼습니다. 어쨌든 나는 이 코드를 사용하지 않을 것이다. 나는 필요한 모든 것을 갖춘 나만의 라이브러리를 가지고 있습니다. 이후 오랜 시간 동안 명백하게 부정적인 리뷰가 없었습니다. 이는 작성자의 코드가 적합함을 의미합니다. 참을 수 없었어요 :) 죄송합니다.

글을 쓰긴 했지만 참을 수가 없었다. 한 분의 의견 때문에 가지를 떠나면 헛수고입니다. 게다가 작가님께도 감사드린다.

하나의 동일한 문제가 2개(또는 그 이상)의 코드로 해결될 수 있다면 일반적으로 좋을 것 같습니다. 더 낫다고 생각되는 경우 동일한 문제를 해결하는 코드를 게시하십시오.

종종 다른 사람이 같은 것을 다른 스타일로 프로그래밍한 것처럼 보입니다. 많은 것을 얻을 수 있습니다.

피. 에스. 작업에 대해 Igor에게 감사드립니다.

 
실제로 Andrei, 당신은 헛되이이 모든 것을 그런 식으로 취했습니다. 간단해! 그리고 나를 밀어내는 것을 두려워하지 마십시오. 당신이 기여하고 나와 함께 무언가를 수정하거나 자신의 것을 게시하면 나는 상관하지 않을 것입니다.
 

ArraySearchDouble() 함수.

이 함수는 배열의 요소를 double 값으로 검색하고 발견된 요소의 인덱스 또는 -1 을 반환합니다. 이 함수는 하나의 요소만 찾고 결과가 양수이면 검색을 종료합니다.

  • m - 요소를 검색할 배열입니다.
  • e - 배열 m 에서 찾을 double 값입니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Выполняет поиск элемента массива по значению                   |
//|             и возвращает индекс найденного элемента или -1.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    m - массив элементов                                                    |
//|    e - значение элемента                                                   |
//+----------------------------------------------------------------------------+
int ArraySearchDouble ( double & m [] , double e ) {
   for ( int i = 0 ; i < ArraySize ( m ) ; i ++ ) {
     if ( m [ i ] == e ) return ( i ) ;
   }
   return ( - 1 ) ;
}
추신. ArraySearchDouble() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
 

ArraySearchInt() 함수.

이 함수는 int 값으로 배열 요소를 검색하고 발견된 요소의 인덱스 또는 -1 을 반환합니다. 이 함수는 하나의 요소만 찾고 결과가 양수이면 검색을 종료합니다.

  • m - 검색할 int 요소의 배열입니다.
  • e - 배열 m 에서 찾을 int 유형의 값입니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Выполняет поиск элемента массива по значению                   |
//|             и возвращает индекс найденного элемента или -1.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    m - массив элементов                                                    |
//|    e - значение элемента                                                   |
//+----------------------------------------------------------------------------+
int ArraySearchInt ( int & m [] , int e ) {
   for ( int i = 0 ; i < ArraySize ( m ) ; i ++ ) {
     if ( m [ i ] == e ) return ( i ) ;
   }
   return ( - 1 ) ;
}
추신. ArraySearchInt() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
파일:
 

ArraySearchString() 함수.

이 함수는 string 유형의 값으로 배열의 요소를 검색하고 발견된 요소의 인덱스 또는 -1 을 반환합니다. 이 함수는 하나의 요소만 찾고 결과가 양수이면 검색을 종료합니다.

  • m - 검색할 문자열 유형의 요소 배열입니다.
  • e - 배열 m 에서 찾을 문자열 값입니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 04.03.2008                                                     |
//|  Описание : Выполняет поиск элемента массива по значению                   |
//|             и возвращает индекс найденного элемента или -1.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    m - массив элементов                                                    |
//|    e - значение элемента                                                   |
//+----------------------------------------------------------------------------+
int ArraySearchString ( string & m [] , string e ) {
   for ( int i = 0 ; i < ArraySize ( m ) ; i ++ ) {
     if ( m [ i ] == e ) return ( i ) ;
   }
   return ( - 1 ) ;
}
추신. ArraySearchString() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
 
KimIV писал (а) >> 를 썼습니다.
실제로 Andrei, 당신은 헛되이이 모든 것을 그런 식으로 취했습니다. 간단해! 그리고 나를 밀어내는 것을 두려워하지 마십시오. 당신이 기여하고 나와 함께 무언가를 수정하거나 자신의 것을 게시하면 나는 상관하지 않을 것입니다.

좋아, 사물에 대한 내 견해는 다소 다릅니다. 이미 썼듯이 전 세계적인 보편성을 악으로 간주합니다. 코드는 최소한의 단순성과 편의성을 최대화하기 위해 작성하는 내용에 맞게 조정되어야 합니다. 따라서 여기에 내 코드를 게시할 요점이 없습니다.


당신이 상관하지 않는다면 나는 당신의 코드에 대한 검토자 역할을 할 수 있으며, 물론 내 자신의 코드 작성 버전을 제공하거나 그냥 코멘트를 제공할 수 있습니다.



ZYZH: 지원해 주셔서 감사합니다. 솔직히 말해서, 나는 당신에게서 그런 반응을 기대하지 않았습니다.

 
KimIV писал (а) >> 를 썼습니다.

ArraySearchDouble() 함수.

이 함수는 배열의 요소를 double 값으로 검색하고 발견된 요소의 인덱스 또는 -1 을 반환합니다. 이 함수는 하나의 요소만 찾고 결과가 양수이면 검색을 종료합니다.

  • m - 요소를 검색할 배열입니다.
  • e - 배열 m 에서 찾을 double 값입니다.
추신. ArraySearchDouble() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.

Double -- 조각이 교묘합니다. 귀하가 제공하는 코드는 일부 상황에서 잘못 작동할 수 있습니다.

나는 상황에서 가능한 탈출구를 제안한다

 int ArraySearchDouble ( double & array [] , double value , double precision = 0.00000000001 ) 
{ // на то, что я перемещаю скобки не обращайте внимания, мне так читабельней
   for ( int i = 0 ; i < ArraySize ( array ) ; i ++ ) 
   {
     if ( array [ i ] > value - precision && array [ i ] < value + precision ) return ( i ) ;
   }
   return ( - 1 ) ;
}

글쎄, 갑자기 끝에서 만 똑같이해야한다면

 int ArrayRevertSearchDouble ( double & array [] , double value , double precision = 0.00000000001 ) 
{ 
   for ( int i = ArraySize ( array ) - 1 ; i >= 0 ; i -- ) 
   {
     if ( array [ i ] > value - precision && array [ i ] < value + precision ) return ( i ) ;
   }
   return ( - 1 ) ;
}
 
TheXpert писал (а)
당신이 상관하지 않는다면 나는 당신의 코드에 대한 검토자 역할을 할 수 있으며, 물론 내 자신의 코드 작성 버전을 제공하거나 그냥 코멘트를 제공할 수 있습니다.
놀라운! 사물에 대한 다양한 관점은 모든 사람에게 도움이 될 것입니다. 내가 먼저 :-)
 

요전에 나는 이전 거래의 결과와 동일한 거래의 로트 크기에 따라 로트를 변경할 필요가 있다는 조언자를 썼습니다. 그리고 내가 마지막으로 닫은 위치의 로트 크기를 반환하는 함수가 없다는 것이 밝혀졌습니다. 고정...

GetLotLastClosePos() 함수.

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

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