MQL4 프로그래밍에 대한 온라인 책의 베타 버전 - Sergey Kovalev(SK.) - 페이지 7

 

나는 또한 왜 텍스트가 OrderType () OrderOpenPrice()를 사용하여 괄호 없이 함수를 사용하는지 궁금할 것입니다.

 
Climber :
 // Критерии закрытия ордеров

if
( _OrdersTotal == 1 ) //Выполнять следующее если открыт 1 ордер
{
OrderSelect ( 0 , SELECT_BY_POS ) ;
Tip = OrderType ;
OPrice = OrderOpenPrice ;

if ( Tip = 0 ) // Расчитать цену закрытия в зависимости от типа ордера (В=0,S=1)
{
Cprice = OPrice + ( TakeProfit * Point ) + Spread ;
if ( Bid >= Cprice )
{
Cls_B = True ;
}
}
if ( Tip = 1 )                 
{
Cprice = OPrice - ( TakeProfit * Point ) - Spread ;
if ( Ask <= Cprice )
{
Cls_S = True ;
}
}
코드에서 오류는 대괄호가 없는 경우가 아니라 조건에 다른 등호가 없는 경우(빨간색으로 표시됨)일 가능성이 더 높습니다.
 
도움이 되지 않았습니다 ==. 오류에는 모두 동일한 대괄호가 작성됩니다. 테이크 프로가 설정되어 있으면 종료 기준을 코드에 쓰지 않는 것이 가능한가요? 또는 예를 들어 가격이 갑자기 TP에 접근하고 한 틱에 갑자기 여러 포인트가 변경되어 TP를 뛰어 넘으면 작동하지 않을 수 있습니까?
 
Climber :
또는 예를 들어 가격이 갑자기 TP에 접근하고 한 틱에 갑자기 여러 포인트가 변경되어 TP를 뛰어 넘으면 작동하지 않을 수 있습니까?


이론적으로 이것은 가능합니다. 즉, 주문은 여전히 마감되지만 TP 가격이 아닌 처음 나타나는 가격으로 마감될 수 있습니다.
MQL4 Tutorial -Trade Operations -Order Characteristics and Rules for Conducting Trade Operations . 미끄러짐과 유사한 예가 있습니다.

 
프로그래밍 학습 단계의 또 다른 독창적 인 기능 - 항상 쉼표를 넣으려면 영어 레이아웃에 쉼표가있는 문자 b를 누르십시오.)))). 당신은 러시아어로 글을 쓰고 쉼표를 넣으면 러시아어 레이아웃을 잊어 버립니다.
 
Climber :
프로그래밍 학습 단계의 또 다른 독창적 인 기능 - 항상 쉼표를 넣으려면 영어 레이아웃에 쉼표가있는 문자 b를 누르십시오.)))). 당신은 러시아어로 글을 쓰고 쉼표를 넣으면 러시아어 레이아웃을 잊어 버립니다.

이것은 통과할 것입니다. 이것이 많은 사람들이 러시아어를 사용하지 않고 영어로 프로그램을 작성하는 이유입니다. 더 빠르고 쉽고 레이아웃이 자주 변경되지 않습니다. 그런 다음 주석이 필요한 경우 바로 실행 중에 누군가를 위해 프로그램을 러시아어로 조정합니다. 이 작업 기간에는 Russify가 더 편리합니다. 그래서 이런 이유가 있습니다 :) 영어 레이아웃은 그러한 저작에 종사하는 사람들의 기초이며 러시아어는 비율을 추정하면 가장 최소한의 규모로 사용됩니다. 영어 레이아웃을 사용하는 경우 99%입니다. 한때 러시아어로 프로그램을 작성하고 싶었지만 1C를 즐기면서 이 욕구가 사라졌습니다.
 
Rosh :
문제가 수정되었으며 수정될 예정입니다.

이제 https://book.mql4.com/en/metaeditor/compose 에서 사진을 봅니다.
 

내 메시지가 사라지도록 어떻게 했는지 궁금합니다. 너희들은 정직하지 않다. 대답할 것이 없으면 그렇게 말하십시오. 나는 이해할 것이다.

 

내가 쓴 사람들이 읽고 답할 수 있기를 바라는 것만 남아 있습니다.

 
포럼에서 필요한 기능을 찾았습니다. 하나는 숫자로 지그재그 극한값의 막대 번호를 반환하고 두 번째는 숫자로 지그재그 극한값을 반환합니다. 첫 번째 것은 새로운 지그재그 극한값이 나타났는지 여부(0 지그재그의 막대 번호 = 0인 경우)를 판별하는 데 도움이 되며, 여기서부터 다른 기준을 확인하기 시작합니다. 두 번째 것도 작동합니다. 하지만 두 번째는 너무 이르다. 먼저 처리하고 싶습니다.

이 함수를 가져와서 표시기를 만들어 편집기에 던졌습니다. 아무것도 추가하거나 제거하지 않았습니다. 그리고 컴파일시 오류가 너무 많았습니다. 공포. 그런 다음 이 기능만으로 Expert Advisor를 만들어 보았습니다. 비슷한 결과입니다.((
 //+----------------------------------------------------------------------------+
//|  Возвращает номер бара экстремума ЗигЗага по его номеру.                   |
//|  Параметры:                                                                |
//|    sym - наименование инструмента  ("" - текущий символ)                   |
//|    tf  - таймфрейм                 ( 0 - текущий ТФ)                       |
//|    ne  - номер экстремума          ( 0 - текущий)                          |
//|    dp  - ExtDepth                                                          |
//|    dv  - ExtDeviation                                                      |
//|    bc  - ExtBackstep                                                       |
//+----------------------------------------------------------------------------+
int GetExtremumZZBar ( string sym = "" , int tf = 0 , int ne = 0 , int dp = 12 , int dv = 5 , int bc = 3 ) {
  if ( sym == "" ) sym = Symbol () ;
  double zz ;
  int    i , k = iBars ( sym , tf ) , ke = 0 ;
 
  for ( i = 1 ; i < k ; i ++ ) {
    zz = iCustom ( sym , tf , " ZigZag " , dp , dv , bc , 0 , i ) ;
    if ( zz != 0 ) {
      ke ++;
      if ( ke > ne ) return ( i ) ;
    }
  }
  Print ( " GetExtremumZZBar(): Экстремум ЗигЗага номер " , ne , " не найден " ) ;
  return ( 0 ) ;
}
여기서 무슨 문제가 있습니까? 그는 왜 실수에 대해 소리 지르는가?