MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 337

 
Artyom Trishkin :

당신은 이상한 느낌이 있습니다. 불필요한 불필요한 변수 없이 얼마나 단순한지 보여주었습니다.


그래서 나는 피곤하고 휴식을 취해야 할 시간입니다. 자, 예.

 

안녕하세요! Expert Advisor의 어떤 기능을 표시기 창으로 만들 수 있습니까?

 
Nauris Zukas :

안녕하세요! Expert Advisor의 어떤 기능을 표시기 창으로 만들 수 있습니까?


EA에서 빈 표시기를 호출합니다.

 
Alekseu Fedotov :

EA에서 빈 표시기를 호출합니다.

고맙습니다!

 
Vitaly Muzichenko :

여기에서 필요한 코드를 찾으세요


안녕하세요! 마지막 공개 매도 주문의 가격을 결정하는 기능을 수행했습니다.

PriceS( string sy= "0" , int op= OP_SELL , int mn=- 1 ) {             //Цена последнего открытого Селл ордера
   datetime t;
   double    r= 0 ;
   int       i, k= OrdersTotal ();

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol ()==sy || sy== "" ) {
         if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) {
           if (op< 0 || OrderType ()==op) {
             if (mn< 0 || OrderMagicNumber ()==mn) {
               if (t< OrderOpenTime ()) {
                t= OrderOpenTime ();
                r= OrderOpenPrice ();
              }
            }
          }
        }
      }
    }
  }
   return (r);
}

하지만 어드바이저에 삽입하면 'sy'에서 컴파일 오류가 발생합니다. 예기치 않은 토큰 기능 조건

'=' - 예기치 않은 토큰 252 십팔

l-값 필수 하나 하나

'문자열'에서 '숫자'로의 암시적 변환 252 십구

'=' - l-값이 필요합니다. 252 십팔

'=' - 'void' 유형의 표현식이 잘못되었습니다. 252 십팔

'op' - 예기치 않은 토큰 252 28

'=' - 예기치 않은 토큰 252 서른

l-값 필수 하나 하나

'OP_SELL' - 불법적인 조작 사용 252 31

유형 변환으로 인한 데이터 손실 가능성 252 서른

'=' - l-값이 필요합니다. 252 서른

'=' - 'void' 유형의 표현식이 잘못되었습니다. 252 서른

'n' - 예기치 않은 토큰 252 44

'=' - 예기치 않은 토큰 252 46

l-값 필수 하나 하나

'1' - 잘못된 연산 사용 252 48


다 맞아야 할 것 같은데요!!?? 말해주세요 제가 복사해서 변경한게 없습니다.


 
vikzip :

안녕하세요! 마지막 공개 매도 주문의 가격을 결정하는 기능을 수행했습니다.

하지만 어드바이저에 삽입하면 'sy'에서 컴파일 오류가 발생합니다. 예기치 않은 토큰 기능 조건

'=' - 예기치 않은 토큰 252 십팔

l-값 필수 하나 하나

'문자열'에서 '숫자'로의 암시적 변환 252 십구

'=' - l-값이 필요합니다. 252 십팔

'=' - 'void' 유형의 표현식이 잘못되었습니다. 252 십팔

'op' - 예기치 않은 토큰 252 28

'=' - 예기치 않은 토큰 252 서른

l-값 필수 하나 하나

'OP_SELL' - 불법적인 조작 사용 252 31

유형 변환으로 인한 데이터 손실 가능성 252 서른

'=' - l-값이 필요합니다. 252 서른

'=' - 'void' 유형의 표현식이 잘못되었습니다. 252 서른

'n' - 예기치 않은 토큰 252 44

'=' - 예기치 않은 토큰 252 46

l-값 필수 하나 하나

'1' - 잘못된 연산 사용 252 48


다 맞아야 할 것 같은데요!!?? 말해주세요 제가 복사해서 변경한게 없습니다.


함수 유형을 반환해야 함

 PriceS( string sy= "0" , int op= OP_SELL , int mn=- 1 ) {
double PriceS( string sy= "0" , int op= OP_SELL , int mn=- 1 ) {
 
vikzip :


다 맞아야 할 것 같은데요!!?? 말해주세요 제가 복사해서 변경한게 없습니다 .



함수 헤더 , 함수 유형을 복사하지 않음


처음에 함수는 다음과 같습니다.

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает цену открытия последней открытой позиций.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double PriceOpenLastPos( string sy= "" , int op=- 1 , int mn=- 1 ) {
   datetime t= 0 ;
   double    r= 0 ;
   int       i, k= OrdersTotal ();

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol ()==sy || sy== "" ) {
         if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) {
           if (op< 0 || OrderType ()==op) {
             if (mn< 0 || OrderMagicNumber ()==mn) {
               if (t< OrderOpenTime ()) {
                t= OrderOpenTime ();
                r= OrderOpenPrice ();
              }
            }
          }
        }
      }
    }
  }
   return (r);
}
 
'op' - unexpected token Армата.mq4 248 28 'OP_SELL' - illegal operation use Армата.mq4 248 31 'mn' - unexpected token Армата.mq4 248 44
 double PriceS( string sy= "" , int op= OP_SELL , int mn=- 1 ) {             //Цена последнего открытого Селл ордера
   datetime t;
   double    r= 0 ;
   int       i, k= OrdersTotal ();

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol ()==sy || sy== "" ) {
         if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) {
           if (op< 0 || OrderType ()==op) {
             if (mn< 0 || OrderMagicNumber ()==mn) {
               if (t< OrderOpenTime ()) {
                t= OrderOpenTime ();
                r= OrderOpenPrice ();
              }
            }
          }
        }
      }
    }
  }
   return (r);
}
알렉세우 페도토프:

함수 헤더 , 함수 유형을 복사하지 않음


처음에 함수는 다음과 같습니다.


알렉세우 페도토프 :

함수 헤더 , 함수 유형을 복사하지 않음


처음에 함수는 다음과 같습니다.


맞습니다. 여전히 예제에서 작성되었습니다. 내가 올바르게 이해했다면 내가 한 주문 유형을 선택할 수 있습니다.

  • op - 거래 작업, 위치 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 ​​의미합니다.
그런 다음 시작하기 전에 함수를 전역 함수로 만들었습니다. 그리고 함수명 바로 앞에 double 형을 리턴하면 에러가 뜨는데 이유를 알려주세요!

'PriceS' - 전역 범위에서만 함수를 선언할 수 있습니다. 252

함수는 전역이어야한다는 것을 이해합니다!

번역기 쓰기의 번역 오류

 함수는 전역 범위에서만 선언할 수 있으며 이 단어의 의미를 올바르게 이해했다면 전역적으로 선언해야 하므로 앞에 double이 있으면 안 됩니다. 그냥 복사해도 sy에 오류를 쓰는 이유는 분명하지 않습니다.
견본

'sy' - 예기치 않은 토큰 248 17 '=' - 예기치 않은 토큰 248 19 l-값 필수 1 1

sy를 글로벌로 만들 수 있습니까? 함수에서 다른 선언된 변수와 동일한 오류가 발생합니다.

'op' - 예기치 않은 토큰 248 28 'OP_SELL' - 잘못된 연산 사용 248 31 'n' - 예기치 않은 토큰 248 44

 
vikzip :


맞습니다. 여전히 예제에서 작성되었습니다. 내가 올바르게 이해했다면 내가 한 주문 유형을 선택할 수 있습니다.

  • op - 거래 작업, 위치 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 의미합니다.
그런 다음 시작하기 전에 함수를 전역 함수로 만들었습니다. 그리고 함수명 바로 앞에 double 형을 리턴하면 에러가 뜨는데 이유를 알려주세요!

'PriceS' - 전역 범위에서만 함수를 선언할 수 있습니다. 252

함수는 전역이어야한다는 것을 이해합니다!

번역기 쓰기의 번역 오류


함수를 시작 함수 외부에 배치

시작 함수의 본문에서 다음 과 같이 호출합니다.

PriceOpenLastPos(); //текущий символ  любая последняя поз.


PriceOpenLastPos( Symbol (), OP_SELL ); //текущий символ  OP_SELL   без магика


PriceOpenLastPos( Symbol (), OP_BUY ); //текущий символ   OP_BUY  без магика

쉼표로 구분된 3개의 매직 매개변수에 자신 또는 0을 입력하세요.

 
Alekseu Fedotov :

함수를 시작 함수 외부에 배치

시작 함수의 본문에서 다음 과 같이 호출합니다.

쉼표로 구분된 3개의 매직 매개변수에 자신 또는 0을 입력하세요.


정말 감사합니다!! 함수를 시작 밖으로 옮기자 마자 모든 오류가 사라졌습니다!!