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

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

MQL4의 포인터로는 어렵습니다. 직접적인 지원은 없습니다. 여기 포럼에서 누군가 배열을 사용하여 이 작업을 시도한 것 같습니다. 정확히 말할 수는 없습니다. 자신을 찾아라...

MathRand()

프로그래밍 방식으로 배열의 첫 번째 차원만 변경할 수 있습니다. ArrayResize() 함수. 두 번째, 세 번째 및 네 번째 차원은 하드코딩되어야 합니다.

글쎄, 우리는 포인터와 동적 배열도 함께 전달했습니다 ...

언어의 버전 5를 기대합니다...

도와 주셔서 감사합니다



하나의 네트워크로 작업하는 것은 구현하기 쉽습니다.

농담은 내 생각에 하나의 네트워크로는 충분하지 않다는 것입니다. 그리고 네트워크 간에 전환하는 알고리즘을 만들고 싶었습니다. 포인터를 사용하면 어렵지 않습니다.

하지만 아니 ... 당신은 하드 코어해야합니다.

 

SetTLineByAngle() 함수.

이 함수는 현재 차트의 기울기에 따라 추세선의 OBJ_TRENDBYANGLE 객체를 설정합니다.

  • cl - TREND LINE 개체의 색상입니다. 필수 매개변수입니다.
  • nm - 개체의 이름입니다. 기본값을 전달할 때 - "" 현재 막대의 여는 시간이 이름으로 사용됩니다.
  • t1 - 개체 설치 시간의 첫 번째 좌표입니다. 기본값은 0 - 열 번째 막대가 열리는 시간입니다.
  • p1 - 객체 설치 가격의 첫 번째 좌표. 기본값은 0 - 낮은 10번째 막대입니다.
  • t2 - 개체 설치 시간의 두 번째 좌표입니다. 기본값은 0 - 현재 막대의 여는 시간입니다.
  • p2 - 물체의 설치 가격의 두 번째 좌표. 이 매개변수는 일종의 스위치입니다. 0이 아닌 값은 이 함수를 SetTLine() 함수와 동일시합니다. 즉, 추세선은 시간/가격 좌표 쌍을 사용하여 그려지고 추세선 기울기 값은 무시됩니다. 기본값은 0 입니다. 기울기를 기반으로 추세선을 만듭니다.
  • - 경사각(도). 기본값 - 0 - 수평선.
  • ry - 플래그 속성 RAY. 기본값은 False 입니다.
  • st - 선 스타일. 유효한 값은 STYLE_SOLID (기본값), STYLE_DASH , STYLE_DOT , STYLE_DASHDOT , STYLE_DASHDOTDOT 입니다.
  • wd - 선 두께. 기본값은 1 입니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Установка объекта OBJ_TRENDBYANGLE трендовая линия по углу     |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cl - цвет линии                                                         |
//|    nm - наименование               (  ""  - время открытия текущего бара)  |
//|    t1 - время открытия бара        (  0   - Time[10]                       |
//|    p1 - ценовой уровень            (  0   - Low[10])                       |
//|    t2 - время открытия бара        (  0   - время открытия текущего бара)  |
//|    p2 - ценовой уровень            (  0   - по углу)                       |
//|    an - угол                       (  0   - по умолчанию)                  |
//|    ry - луч                        (False - не луч)                        |
//|    st - стиль линии                (  0   - простая линия)                 |
//|    wd - ширина линии               (  1   - по умолчанию)                  |
//+----------------------------------------------------------------------------+
void SetTLineByAngle ( color cl , string nm = "" ,
               datetime t1 = 0 , double p1 = 0 , datetime t2 = 0 , double p2 = 0 ,
               double an = 0 , bool ry = False , int st = 0 , int wd = 1 ) {
   if ( nm == "" ) nm = DoubleToStr ( Time [ 0 ] , 0 ) ;
   if ( t1 <= 0 ) t1 = Time [ 10 ] ;
   if ( p1 <= 0 ) p1 = Low [ 10 ] ;
   if ( t2 <= 0 ) t2 = Time [ 0 ] ;
   if ( ObjectFind ( nm ) < 0 ) ObjectCreate ( nm , OBJ_TRENDBYANGLE , 0 , 0 , 0 ) ;
   ObjectSet ( nm , OBJPROP_TIME1 , t1 ) ;
   ObjectSet ( nm , OBJPROP_PRICE1 , p1 ) ;
   ObjectSet ( nm , OBJPROP_TIME2 , t2 ) ;
   if ( p2 > 0 ) ObjectSet ( nm , OBJPROP_PRICE2 , p2 ) ;
   else ObjectSet ( nm , OBJPROP_ANGLE , an ) ;
   ObjectSet ( nm , OBJPROP_COLOR , cl ) ;
   ObjectSet ( nm , OBJPROP_RAY   , ry ) ;
   ObjectSet ( nm , OBJPROP_STYLE , st ) ;
   ObjectSet ( nm , OBJPROP_WIDTH , wd ) ;
}
 

SetTLineByAngle() 함수 사용 예.

  1. 5번째 막대의 하단에서 45°의 주황색 실선.
     SetTLineByAngle ( Orange , "" , Time [ 5 ] , Low [ 5 ] , 0 , 0 , 45 , True ) ;
  2. 13번째 막대의 하단에서 빨간색 점선의 팬입니다.
     for ( int i = 0 ; i < 90 ; i += 10 )
       SetTLineByAngle ( Red , " TL " + i , Time [ 13 ] , Low [ 13 ] , 0 , 0 , i , True , STYLE_DOT ) ;

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

파일:
 

SetArrow() 함수.

이 함수는 개체 의 OBJ_ARROW 아이콘을 현재 차트로 설정합니다.

  • cd - 아이콘 코드. 필수 매개변수입니다.
  • cl - 아이콘 색상. 필수 매개변수입니다.
  • nm - 개체의 이름입니다. 기본값을 전달할 때 - "" 현재 막대의 여는 시간이 이름으로 사용됩니다.
  • t1 - 개체 설치 시간의 첫 번째 좌표입니다. 기본값은 0 - 현재 막대의 여는 시간입니다.
  • p1 - 객체 설치 가격의 첫 번째 좌표. 기본값은 0 - 현재 입찰 가격입니다.
  • sz - 아이콘 크기. 기본값은 0 입니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Установка значка на графике, объекта OBJ_ARROW.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cd - код значка                                                         |
//|    cl - цвет значка                                                        |
//|    nm - наименование               ("" - время открытия текущего бара)     |
//|    t1 - время открытия бара        (0  - текущий бар)                      |
//|    p1 - ценовой уровень            (0  - Bid)                              |
//|    sz - размер значка              (0  - по умолчанию)                     |
//+----------------------------------------------------------------------------+
void SetArrow ( int cd , color cl ,
               string nm = "" , datetime t1 = 0 , double p1 = 0 , int sz = 0 ) {
   if ( nm == "" ) nm = DoubleToStr ( Time [ 0 ] , 0 ) ;
   if ( t1 <= 0 ) t1 = Time [ 0 ] ;
   if ( p1 <= 0 ) p1 = Bid ;
   if ( ObjectFind ( nm ) < 0 ) ObjectCreate ( nm , OBJ_ARROW , 0 , 0 , 0 ) ;
   ObjectSet ( nm , OBJPROP_TIME1     , t1 ) ;
   ObjectSet ( nm , OBJPROP_PRICE1    , p1 ) ;
   ObjectSet ( nm , OBJPROP_ARROWCODE , cd ) ;
   ObjectSet ( nm , OBJPROP_COLOR     , cl ) ;
   ObjectSet ( nm , OBJPROP_WIDTH     , sz ) ;
}
 

SetArrow() 함수를 사용하는 예.

  • 9번째 막대의 고점에 있는 황금색 왼쪽 가격 레이블 .
     SetArrow ( 5 , Gold , "" , Time [ 9 ] , High [ 9 ] , 3 ) ;

  • 두 번째 막대의 고가에 있는 빨간색 오른쪽 가격 레이블.
     SetArrow ( 6 , Red , "" , Time [ 2 ] , High [ 2 ] , 3 ) ;

  • 3. 두 번째 막대의 고점 위의 파란색 화살표.
     SetArrow ( 242 , Blue , "" , Time [ 2 ] , High [ 2 ] + 50 * Point , 2 ) ;
    

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

파일:
 
당신이 하는 일에 대해 대단히 감사합니다. 이 지점에서 기능을 수집하여 내 웹사이트, 포럼 표시가 있는 별도의 섹션 및 귀하의 웹사이트에 게시해도 됩니까?
 

일반적으로 이 게시물의 첫 페이지에 분기의 "콘텐츠"를 만드는 것이 좋습니다. 기능, 설명 및 페이지 링크를 나열하는 표입니다. 또는 첫 번째 페이지에 업데이트된 아카이브 하나를 유지하고 나머지 페이지에서 설명을 찾을 수 있습니다.

그러므로 xrust가 그의 제안을 마스터한다면, 여기서 그것을 반복하는 것이 좋을 것입니다. 과로로 얻은 체계화를 위해 :))

 
xrust писал (а) >> 를 썼습니다.
...이 지점에서 기능을 수집하여 내 웹사이트, 포럼 표시가 있는 별도의 섹션 및 귀하의 웹사이트에 게시해도 됩니까?

아니, 난 안할거야...

 
xrust писал (а) >> 를 썼습니다.
당신이 하는 일에 대해 대단히 감사합니다. 이 지점에서 기능을 수집하여 내 웹사이트, 포럼 표시가 있는 별도의 섹션 및 귀하의 웹사이트에 게시해도 됩니까?

"포함" 파일(mqh)(아마도 2 - "trade" 및 "other")을 만들고 이름에 동의한 다음 "개발자"가 배포판에 파일을 포함시키도록 합니다. 각 고문의 모든 사람이 바퀴를 재발명하지 않도록.

:)

 
다시 한 번 감사합니다. 저는 조금 게을러서 모든 것을 힙에 모아서 손에 넣고 싶습니다. 또 다른 질문으로, 말하자면 표준화를 위해 내 기능에서와 동일한 구문과 변수 이름을 사용하는 것이 어떻습니까?