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

 
xrust писал (а) >> 를 썼습니다.
또 다른 질문으로, 말하자면 표준화를 위해 내 기능에서와 동일한 구문과 변수 이름을 사용하는 것이 어떻습니까?

당신이 옳다고 생각하는 것을 하십시오.

 

SetLabel() 함수.

이 함수는 OBJ_LABEL 개체를 현재 차트의 텍스트 레이블로 설정합니다.

  • nm - 개체의 이름입니다. 필수 매개변수입니다.
  • tx - 텍스트. 필수 매개변수입니다.
  • cl - 레이블 색상. 필수 매개변수입니다.
  • xd - 앵커 각도를 기준으로 한 픽셀 단위의 X 좌표입니다. 필수 매개변수입니다.
  • yd - 앵커 각도를 기준으로 한 픽셀 단위의 Y 좌표입니다. 필수 매개변수입니다.
  • cr - 앵커 각도 번호. 유효한 값: 0 - 왼쪽 상단, 1 - 오른쪽 상단, 2 - 왼쪽 하단, 3 - 오른쪽 하단. 기본값은 0 입니다.
  • fs - 글꼴 크기. 기본값은 9 입니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Установка текстовой метки, объект OBJ_LABEL.                   |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    nm - наименование объекта                                               |
//|    tx - текст                                                              |
//|    cl - цвет метки                                                         |
//|    xd - координата X в пикселах                                            |
//|    yd - координата Y в пикселах                                            |
//|    cr - номер угла привязки        (0 - левый верхний,                     |
//|                                     1 - правый верхний,                    |
//|                                     2 - левый нижний,                      |
//|                                     3 - правый нижний )                    |
//|    fs - размер шрифта              (9 - по умолчанию  )                    |
//+----------------------------------------------------------------------------+
void SetLabel ( string nm , string tx , color cl , int xd , int yd , int cr = 0 , int fs = 9 ) {
   if ( ObjectFind ( nm ) < 0 ) ObjectCreate ( nm , OBJ_LABEL , 0 , 0 , 0 ) ;
   ObjectSetText ( nm , tx , fs ) ;
   ObjectSet ( nm , OBJPROP_COLOR     , cl ) ;
   ObjectSet ( nm , OBJPROP_XDISTANCE , xd ) ;
   ObjectSet ( nm , OBJPROP_YDISTANCE , yd ) ;
   ObjectSet ( nm , OBJPROP_CORNER    , cr ) ;
   ObjectSet ( nm , OBJPROP_FONTSIZE , fs ) ;
}
 

SetLabel() 함수 사용의 예.

  • 왼쪽 상단 모서리에 있는 세 개의 파란색 텍스트 레이블, 글꼴 9.
     SetLabel ( " Label1 " , " Текстовая метка " , Blue , 5 , 15 ) ;
    SetLabel ( " Label2 " , " Ещё одна текстовая метка " , Blue , 5 , 30 ) ;
    SetLabel ( " Label3 " , " Параметр cr=0 " , Blue , 5 , 45 ) ;

  • 오른쪽 상단 모서리에 있는 세 개의 보라색 텍스트 레이블, 글꼴 12.
     SetLabel ( " Label1 " , " Текстовая метка " , Magenta , 5 , 15 , 1 , 12 ) ;
    SetLabel ( " Label2 " , " Ещё одна текстовая метка " , Magenta , 5 , 30 , 1 , 12 ) ;
    SetLabel ( " Label3 " , " Параметр cr=1 " , Magenta , 5 , 45 , 1 , 12 ) ;

  • 오른쪽 하단 모서리에 있는 3개의 녹색 텍스트 레이블, 글꼴 12.
     SetLabel ( " Label1 " , " Текстовая метка " , Green , 5 , 15 , 3 , 12 ) ;
    SetLabel ( " Label2 " , " Ещё одна текстовая метка " , Green , 5 , 30 , 3 , 12 ) ;
    SetLabel ( " Label3 " , " Параметр cr=3 " , Green , 5 , 45 , 3 , 12 ) ;


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

파일:
 
SergNF писал (а) >> 를 썼습니다.

"포함" 파일(mqh)을 만들고(아마도 2 - "trade" 및 "other") 파일 이름에 동의하고 "개발자"가 배포판에 파일을 포함시키도록 합니다.

생각은 죽일 수 없으며, 사물은 오랫동안 통합을 향해 나아가고 있습니다. 비전공자로서의 제 꿈은 일반 사용자에게 결정만 내리도록 하여 소프트웨어의 미묘함에서 벗어나게 하는 것입니다.

Igor의 발전(일관성과 디테일 면에서 놀라운)은 가능한 한 이것에 가깝습니다. 또한 저자는 프로그램뿐만 아니라 지속적으로 자신의

코드의 실용적인 가치를 배가하는 실제에 대한 조언자.

나는 그의 개발에 대한 mqh-design의 가능성, 그러한 구현의 장점과 단점에 대한 Igor의 의견을 듣고 싶습니다.

 
granit77 писал (а) >>
나는 그의 개발에 대한 mqh-design의 가능성, 그러한 구현의 장점과 단점에 대한 Igor의 의견을 듣고 싶습니다.

적절한 기회...

오랜만에 MQH파일을 만들어 봤습니다.. 아직 포스팅을 안하고.. 에이스처럼.. 마무리는... mqh 파일을 업로드하여.

위대한 dastoinstva와 nidastatki ...

MQH 파일은 편리합니다. 다른 Expert Advisor에서 사용할 수 있습니다. 특정 고문의 코드가 크게 줄어듭니다. 남은 것은 골치아픈 논리와 다른 것뿐이며 모든 종소리와 휘파람과 래퍼가 밖에 있습니다.

그러나 나는 mqh 파일을 거의 사용하지 않으며 대부분 하나만 사용합니다. 이것은 stdlib.mqh입니다. 그리고 필요한 모든 기능을 어드바이저 파일에 복사하여 붙여넣습니다. 저에게는 더 편합니다. 주문할 내용을 많이 작성하고 고객에게 이것 또는 저 mqh 파일을 보내는 것을 종종 잊었을 때 이 습관을 얻었습니다. 그리고 나 자신은 하나의 Expert Advisor 파일을 터미널의 다른 폴더에 복사하고 그 뒤에 포함된 전체 묶음을 드래그하지 않는 것이 더 편리합니다.

 
재미만 있는 것이 아닙니다! 이거 엄청나 네! 그러한 라이브러리 없이 배포가 불완전하다고 간주되는 날이 멀지 않았습니다.
 

유용한 기능에서 http://www.kroufr.ru/content/view/1027/124/ 기사에 설명된 주문을 열 수 있는 스크립트가 있을 수 있습니다.

수동으로 하기에는 시간이 많이 소요되는데 그렇지 않다면 어디에서 찾을 수 있는지 조언 부탁드립니다. 감사합니다. .

 

CrossPointOfLines() 함수.

이 함수는 두 선의 교차점 좌표를 계산합니다. 각 선은 점의 좌표 쌍으로 정의됩니다. 세 개의 배열이 매개변수로 함수에 전달됩니다.

  • x - 가로 좌표의 배열. x[0] , x[1] - 첫 번째 줄의 가로 좌표, x[2] , x[3] - 두 번째 줄의 가로 좌표의 네 가지 요소를 포함해야 합니다.
  • y - 좌표 배열. 4개의 요소를 포함해야 합니다. y[0] , y[1] - 첫 번째 라인의 좌표, y[0] , y[1] - 두 번째 라인의 좌표.
  • t - 두 선의 필요한 교차점의 좌표 배열입니다. 함수가 정상적으로 실행된 후 이 배열에는 두 개의 요소가 포함됩니다. t[0] - 두 선의 원하는 교차점의 가로 좌표 및 t[1] - 동일한 점의 세로 좌표.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Вычисляет координаты точки пересечения двух прямых.            |
//|             Каждая прямая задаётся парой координат своих точек.            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив абсцисс              x[0], x[1] - первая прямая              |
//|                                    x[2], x[3] - вторая прямая              |
//|    y - массив ординат              y[0], y[1] - первая прямая              |
//|                                    y[0], y[1] - вторая прямая              |
//|    t - массив искомых координат    t[0]       - абсцисса                   |
//|                                    t[1]       - ордината                   |
//+----------------------------------------------------------------------------+
void CrossPointOfLines ( double & x [] , double & y [] , double & t []) {
   double z = ( y [ 3 ] - y [ 2 ]) * ( x [ 1 ] - x [ 0 ]) - ( y [ 1 ] - y [ 0 ]) * ( x [ 3 ] - x [ 2 ]) ;
   ArrayResize ( t , 2 ) ;
   ArrayInitialize ( t , 0.0 ) ;

   if ( z == 0 ) Print ( " CrossPointOfLines(): Не удалось найти точку пересечения! " ) ;
   else {
     double xy1 = x [ 1 ] * y [ 0 ] - x [ 0 ] * y [ 1 ] ;
     double xy2 = x [ 3 ] * y [ 2 ] - x [ 2 ] * y [ 3 ] ;
     t [ 0 ] = NormalizeDouble (( xy1 * ( x [ 3 ] - x [ 2 ]) - xy2 * ( x [ 1 ] - x [ 0 ])) / z , 0 ) ;
     t [ 1 ] = ( xy1 * ( y [ 3 ] - y [ 2 ]) - xy2 * ( y [ 1 ] - y [ 0 ])) / z ;
   }
}
 

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

CrossPointOfLines() 함수를 사용하는 예로서 나는 전통적으로 내 자신의 스크립트를 제공합니다(첨부 참조). 스크립트가 올바르게 작동하려면 수직, 수평, 추세 유형 중 하나의 현재 차트에 두 개의 교차 선을 그려야 합니다. 그런 다음 차트에 스크립트를 추가합니다. 스크립트의 결과는 두 직선의 교차점에서 왼쪽 가격 표시 가 됩니다.

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

 

SetRegression() 함수.

이 함수는 OBJ_REGRESSION 개체를 현재 차트의 선형 회귀 채널로 설정합니다.

  • cl - 개체의 색상입니다. 필수 매개변수입니다.
  • nm - 개체의 이름입니다. 기본값을 전달할 때 - "" 현재 막대의 여는 시간이 이름으로 사용됩니다.
  • t1 - 개체 설치 시간의 첫 번째 좌표입니다. 기본값은 0 - 열 번째 막대가 열리는 시간입니다.
  • t2 - 개체 설치 시간의 두 번째 좌표입니다. 기본값은 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_REGRESSION канал линейной регрессии.     |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cl - цвет линии                                                         |
//|    nm - наименование               ( ""   - время открытия текущего бара)  |
//|    t1 - время открытия бара        (  0   - Time[10])                      |
//|    t2 - время открытия бара        (  0   - Time[0])                       |
//|    ry - луч                        (False - по умолчанию)                  |
//|    st - стиль линии                (  0   - простая линия)                 |
//|    wd - ширина линии               (  1   - по умолчанию)                  |
//+----------------------------------------------------------------------------+
void SetRegression ( color cl , string nm = "" , datetime t1 = 0 , datetime t2 = 0 ,
                     bool ry = False , int st = STYLE_SOLID , int wd = 1 ) {
   if ( nm == "" ) nm = DoubleToStr ( Time [ 0 ] , 0 ) ;
   if ( t1 <= 0 ) t1 = Time [ 10 ] ;
   if ( t2 <= 0 ) t2 = Time [ 0 ] ;
   if ( ObjectFind ( nm ) < 0 ) ObjectCreate ( nm , OBJ_REGRESSION , 0 , 0 , 0 , 0 , 0 ) ;
   ObjectSet ( nm , OBJPROP_TIME1 , t1 ) ;
   ObjectSet ( nm , OBJPROP_TIME2 , t2 ) ;
   ObjectSet ( nm , OBJPROP_COLOR , cl ) ;
   ObjectSet ( nm , OBJPROP_RAY   , ry ) ;
   ObjectSet ( nm , OBJPROP_STYLE , st ) ;
   ObjectSet ( nm , OBJPROP_WIDTH , wd ) ;
}