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

 
borisych писал(а) >>

...

3. 여기서 회귀는 선형회귀방정식과 그 그래프를 의미한다.

ur.lin 회귀의 기울기에 대해 질문했습니다. 나는 그것이 다른 방식으로 계산될 수 있음을 보여주었다. 당신이 말하는 것이 필요하다면 포인트 3. 그런 다음 ' KimIV 의 유용한 함수'를 참조하십시오. 함수에는 2가지 유형이 있습니다. 계산은 최소 제곱을 기반으로 합니다. 더 큰 차수의 다항식이 필요한 경우 이 알고리즘을 사용하십시오. 임의의 흐름과 FOREX'

 

StrTran() 함수.

이 함수는 부분 문자열 교체를 수행합니다. 발견된 모든 항목이 대체됩니다. 예를 들어, 모든 쉼표를 마침표로 바꾸거나 그 반대의 경우도 마찬가지입니다. StrSplit() 함수는 결과 문자열을 반환하고 다음 필수 매개변수를 사용합니다.

  • str - 부분 문자열 strFrom 을 대체할 문자열입니다.
  • strFrom - 교체할 부분 문자열입니다. 하위 문자열 strFrom 이 문자열 str 에서 발견되면, 이는 하위 문자열 strTo 로 대체됩니다.
  • strTo - 대체 하위 문자열입니다.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  описание : Замена подстроки                                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    str     - текстовая строка, в которой производится замена               |
//|    strFrom - заменяемая подстрока                                          |
//|    strTo   - заменяющая подстрока                                          |
//+----------------------------------------------------------------------------+
string StrTran ( string str , string strFrom , string strTo ) {
   int     n ;
   string strOut = "" , strTemp ;

   for ( n = 0 ; n < StringLen ( str ) ; n + + ) {
    strTemp = StringSubstr ( str , n , StringLen ( strFrom ) ) ;
     if ( strTemp = = strFrom ) {
      strOut = StringConcatenate ( strOut , strTo ) ;
      n = n + StringLen ( strFrom ) - 1 ;
     } else strOut = StringConcatenate ( strOut , StringSubstr ( str , n , 1 ) ) ;
   }
   return ( strOut ) ;
}
 

StrTran() 함수 사용의 예.

  1. 소수점을 쉼표로 바꾸기:
     string s = DoubleToStr ( Close [ 1 ] , Digits ) ;
    Print ( s ) ;
    s = StrTran ( s , "." , "," ) ;
    Print ( s ) ;
  2. 공백 제거
     string s = "1 2 3 4 5 6 7 8" ;
    Print ( s , " " , StrToInteger ( s ) ) ;
    s = StrTran ( s , " " , "" ) ;
    Print ( s , " " , StrToInteger ( s ) ) ;
  3. 단어 교체
     string s = "листья жёлтые весной" ;
    Print ( s ) ;
    s = StrTran ( s , "весной" , "осенью" ) ;
    Print ( s ) ;

실행 결과 예시:

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

파일:
 

업데이트된 기능 목록:

파일:
f_kimiv.rar  12 kb
 
zhuki писал(а) >>
..
가능하다면 작업 표시줄 바로 가기에 무언가를 표시하는 기능을 제안하고 싶습니다.
터미널을 열지 않고 직장에서 고문의 작업을 모니터링하는 데 사용합니다(많은 외부 엿보는 눈).

나는 한 번 이러한 목적을 위해 별도의 프로그램을 작성했습니다 - http://www.miraxem.com/rqids.htm


Forex Trader's Calculator는 오픈 포지션의 현재 손익과 포지션이 부분적으로 마감되거나 취소되었을 때 받은 손익을 자동으로 계산합니다.

12개 통화 쌍에 대한 실시간 시세 및 차트

모든 창 상단에 스트립으로 표시되며 선택한 통화 쌍, 손익 포인트 및 중요한 이벤트가 시작되기 전에 신호를 제공하는 타이머가 있는 뉴스 캘린더에 대한 현재 시세를 보여줍니다.

 
KimIV писал(а) >>
아 ... 음, 원칙적으로 참조로 전달된 배열을 사용할 수 있습니다. 그러면 반환되는 매개변수의 수는 배열의 크기에 의해 제한됩니다.

아... 그런가요?

"인수( 형식 매개변수 )는 값으로 전달됩니다. 즉, 각 표현식 xl , ... ., xn 이 평가되고 값이 함수에 전달됩니다...."
도움말 예시

 int start ( )
   {
   double some_array [ 4 ] = { 0.3 , 1.4 , 2.5 , 3.6 } ;
   double a = linfunc ( some_array , 10.5 , 8 ) ;
   //...
   }
double linfunc ( double x [ ] , double a , double b )
   {
   return ( a * x [ 0 ] + b ) ;
   }
그리고 x [ 0 ]=999; 내가 기억하는 한 편집에서 맹세합니다.
'x' - 배열 항목을 할당할 수 없습니다.

 
KimIV писал(а) >>
[...]
이들은 OP_BUY 및 OP_SELL거래 작업 이며 내가 이해하는 주문은 OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT 및 OP_SELLSTOP 거래 작업입니다. 저는 포지션을 열고 주문을 합니다. 무엇을 열었습니까? NumberOfOrders() 함수는 주문과 함께 작동하도록 설계되었습니다.

사실 차이가 없어야 합니다. 직책도 함께 일해야 합니다.
함수는 다음을 비교합니다. ot
= OrderType () ;

주문 유형 ()
"현재 선택한 주문의 작업 유형을 반환합니다. 다음 값 중 하나일 수 있습니다.
OP_BUY - 매수 포지션,
OP_SELL - 포지션 매도,
...

 
diakin писал(а) >>
아... 그런가요?

말 그대로 다음을 의미했습니다.

 void start ( )
{
   double some_array [ ] ;
   string st = "" ;
  linfunc ( some_array ) ;
   for ( int i = 0 ; i < ArraySize ( some_array ) ; i + + )
   {
    st = StringConcatenate ( st , "some_array[" , i , "]=" , some_array [ i ] , " \n " ) ;
   }
   Comment ( st ) ;
}
void linfunc ( double & x [ ] )
{
   ArrayResize ( x , 7 ) ;
   for ( int i = 0 ; i < ArraySize ( x ) ; i + + )
   {
    x [ i ] = 0.7 * ( i + 0.1 ) ;
   }
} 

디아킨 은 다음과 같이 썼습니다. >>
'x' - 배열 항목을 할당할 수 없습니다.

대신에:

 double linfunc ( double x [ ] , double a , double b )

필요

 double linfunc ( double & x [ ] , double a , double b )
 
diakin писал(а) >>
사실 차이가 없어야 합니다. 직책도 함께 일해야 합니다.

직위와 명령으로 나누는 것은 인위적이다. 내 개인적인 편의를 위해 내가 발명했습니다. 그리고 이 구분은 다음과 같은 차이점을 기반으로 합니다.

1. 주문(OrderOpenPrice())의 시가/설정 가격은 변경할 수 있지만 포지션은 변경할 수 없습니다.

2. 주문은 삭제되어야 하고(OrderDelete()), 포지션은 반드시 청산되어야 합니다(OrderClose()).

3. 입금에 대한 손실없이 주문의 로트 크기(코멘트, 매직넘버)를 변경할 수 있습니다. 이전 주문을 삭제하고 새로운 로트 크기(코멘트, 매직 넘버)로 새 주문을 넣으십시오. 위치에 대해 동일한 작업을 수행하면 로트 크기와 포인트 값을 곱한 스프레드 금액에 손실이 발생합니다.

4. 주문에는 수명이 있지만 위치에는 수명이 없습니다.

 
KimIV писал(а) >>

말 그대로 다음을 의미했습니다.

대신에:

필요

고맙습니다! 이제 나는 가능한 것을 알게 될 것이고 참고로 ...

글쎄요, 왜 MQL 도움말에 매개변수가 값으로 전달된다는 것을 한 섹션에서 작성하고 다른 섹션에서는 "참조로 전달할 수 있습니다"라고 작성해야 합니까?

어머나!

주문에 관해서는 히치가 무엇인지 더 읽었습니다 (> 1 && <6), 즉 OP_BUY, OP_SELL은 여기에 포함되지 않습니다.

그런데 Magic Number 는 OrderModify()를 통해 변경할 수 없습니다. 아니면 내가 또 뭔가를 놓친 걸까? ;-()

사유: