초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 926

 
Seric29 :
2개의 결과를 반환할 수 있는 연산자는 무엇입니까? 이 조건을 찾기 위해 if 문 을 사용하지만 이 경우 여러 결과를 반환할 수 없으며 동일한 조건을 2번 작성해야 하기 때문에 그런 질문으로 글을 씁니다.  

어떤 조건을 확인하고 있는지 완전히 명확하지 않지만 아마도 스위치가 당신에게 적합할 것입니다. 그리고 TRUE이면 필요한 값을 할당하십시오.

 
두 변수의 값을 바꾸는 기능이 있나요?
 
pivomoe :
두 변수의 값을 바꾸는 기능이 있나요?

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

mql5 언어의 특징, 미묘함 및 작업 방법

fxsaber , 2018.08.26 19:02

포럼의 영어 부분에 표시
 // Обмен значениями между двумя числовыми переменными
#define SWAP(A, B) { A += B; B = A - B; A -= B; }

 
Artyom Trishkin :

고맙습니다. 이러한 정의를 숙달해야 합니다.

 
안녕하세요! Bars() 함수 가 표시기와 EA에서 호출될 때 다른 값을 갖는 이유는 무엇이며 규정 준수를 달성하는 방법은 무엇입니까?
 
Tango_X :
안녕하세요! Bars() 함수 가 표시기와 EA에서 호출될 때 다른 값을 갖는 이유는 무엇이며 규정 준수를 달성하는 방법은 무엇입니까?

어드바이저와 인디케이터의 코드를 보여주세요.

 
Alexey Viktorov :

어드바이저와 인디케이터의 코드를 보여주세요.

그냥 함수 호출 Bars(_Symbol,_Period)

 
Tango_X :

그냥 함수 호출 Bars(_Symbol,_Period)

결과 출력을 요청해야 합니까?

나는 차이가 없다. 내가 거의 알지 못하는 이야기의 가용성으로 인해 이 옵션이 테스터에서 제외되지는 않지만, 내가 한 번 읽었던 것에 대한 막연한 기억만 있을 뿐입니다. 결국 이것은 사용 가능한 막대의 총 수입니다. 하지만 가끔 물어보면 별반 다를게 없습니다.

 
Alexey Viktorov :
if 문은 값을 반환하지 않습니다.

별도의 함수에서 특정 변수에 값을 할당하는 두 가지 옵션이 있습니다.

1. 변수는 프로그램의 모든 부분에서 볼 수 있어야 합니다. 즉, 전역 변수 수준(코드 시작 부분)에서 선언됩니다.

2. 참조로 사용자 정의 함수에 로컬로 선언된 변수를 전달합니다. 즉, 변수 이름 앞에 &

조건이 참이면 예를 들어 2개의 동일한 작업을 수행함을 의미합니다.

         if
        (Bar_Op[qt+ 2 ]>=Bar_Lo[qt+ 1 ]&&Bar_Cl[qt+ 2 ]<=Bar_Hi[qt+ 1 ]&& 
        Bar_Cl[qt+ 2 ]>=Bar_Lo[qt+ 1 ]&&Bar_Op[qt+ 2 ]<=Bar_Hi[qt+ 1 ]&&
        Bar_Op[qt+ 3 ]>=Bar_Lo[qt+ 1 ]&&Bar_Cl[qt+ 3 ]<=Bar_Hi[qt+ 1 ]&&
        Bar_Cl[qt+ 3 ]>=Bar_Lo[qt+ 1 ]&&Bar_Op[qt+ 3 ]<=Bar_Hi[qt+ 1 ]&&
        Bar_Op[qt+ 4 ]>=Bar_Lo[qt+ 1 ]&&Bar_Cl[qt+ 4 ]<=Bar_Hi[qt+ 1 ]&&
        Bar_Cl[qt+ 4 ]>=Bar_Lo[qt+ 1 ]&&Bar_Op[qt+ 4 ]<=Bar_Hi[qt+ 1 ])
         {
           int iHgCL= iHighest ( _Symbol , PERIOD_D1 , MODE_CLOSE , 4 ,qt+ 1 ); int iHgOP= iHighest ( _Symbol , PERIOD_D1 , MODE_OPEN , 4 ,qt+ 1 );
         Price_UrNij = Bar_Cl[iHgCL]>Bar_Op[iHgOP] ? Bar_Cl[iHgCL]:Bar_Op[iHgOP]; //провести нижний уровень
         int iLwCL= iLowest ( _Symbol , PERIOD_D1 , MODE_CLOSE , 3 ,qt+ 1 ); int iLwOP= iLowest ( _Symbol , PERIOD_D1 , MODE_OPEN , 3 ,qt+ 1 );
         Price_UrVerh = Bar_Cl[iLwCL]<Bar_Op[iLwOP] ? Bar_Cl[iLwCL]:Bar_Op[iLwOP]; //провести верхний уровень я перепутал записи местами и условие перевёрнуто задом на перёд но для примера вопроса пойдёт

         string Line_TR= "Ln_TRUr" + DoubleToString (qt, 0 );
         vs_Line_TR( Line_TR, iTime ( _Symbol , PERIOD_D1 ,qt+ 2 ),  Price_UrNij, iTime ( _Symbol , PERIOD_D1 ,qt), Price_UrNij, clrGreen , DRAW_LINE , 2 , false , false );
}

내가 선언하고 아무것도 하지 않는 변수 Price_UrNij = Bar_Cl[iHgCL]>Bar_Op[iHgOP] ? Bar_Cl[iHgCL]:Bar_Op[iHgOP]; 또는 이 작업은 Price_UrVerh = Bar_Cl[iLwCL]<Bar_Op[iLwOP]입니까? Bar_Cl[iLwCL]:Bar_Op[iLwOP]; 2개의 동일한 동작을 수행하고 조건에 따라 상위 및 하위 레벨을 모두 수행하도록 하는 방법. 누군가 나에게 이것을 기록하는 방법을 알려줄 수 있습니까?

 
Konstantin Nikitin :

어떤 조건을 확인하고 있는지 완전히 명확하지 않지만 아마도 스위치가 당신에게 적합할 것입니다. 그리고 TRUE이면 필요한 값을 할당하십시오.

  if
        (Bar_Op[qt+ 2 ]>=Bar_Lo[qt+ 1 ]&&Bar_Cl[qt+ 2 ]<=Bar_Hi[qt+ 1 ]&& 
        Bar_Cl[qt+ 2 ]>=Bar_Lo[qt+ 1 ]&&Bar_Op[qt+ 2 ]<=Bar_Hi[qt+ 1 ]&&
        Bar_Op[qt+ 3 ]>=Bar_Lo[qt+ 1 ]&&Bar_Cl[qt+ 3 ]<=Bar_Hi[qt+ 1 ]&&
        Bar_Cl[qt+ 3 ]>=Bar_Lo[qt+ 1 ]&&Bar_Op[qt+ 3 ]<=Bar_Hi[qt+ 1 ]&&
        Bar_Op[qt+ 4 ]>=Bar_Lo[qt+ 1 ]&&Bar_Cl[qt+ 4 ]<=Bar_Hi[qt+ 1 ]&&
        Bar_Cl[qt+ 4 ]>=Bar_Lo[qt+ 1 ]&&Bar_Op[qt+ 4 ]<=Bar_Hi[qt+ 1 ])
         {
           int iHgCL= iHighest ( _Symbol , PERIOD_D1 , MODE_CLOSE , 4 ,qt+ 1 ); int iHgOP= iHighest ( _Symbol , PERIOD_D1 , MODE_OPEN , 4 ,qt+ 1 );
         Price_UrNij = Bar_Cl[iHgCL]>Bar_Op[iHgOP] ? Bar_Cl[iHgCL]:Bar_Op[iHgOP]; //провести нижний уровень
         int iLwCL= iLowest ( _Symbol , PERIOD_D1 , MODE_CLOSE , 3 ,qt+ 1 ); int iLwOP= iLowest ( _Symbol , PERIOD_D1 , MODE_OPEN , 3 ,qt+ 1 );
         Price_UrVerh = Bar_Cl[iLwCL]<Bar_Op[iLwOP] ? Bar_Cl[iLwCL]:Bar_Op[iLwOP]; //провести верхний уровень я перепутал записи местами и условие перевёрнуто задом на перёд но для примера вопроса пойдёт

         string Line_TR= "Ln_TRUr" + DoubleToString (qt, 0 );
         vs_Line_TR( Line_TR, iTime ( _Symbol , PERIOD_D1 ,qt+ 2 ),  Price_UrNij, iTime ( _Symbol , PERIOD_D1 ,qt), Price_UrNij, clrGreen , DRAW_LINE , 2 , false , false );

Price_UrNij = Bar_Cl[iHgCL]>Bar_Op[iHgOP]를 실행해야 합니까? Bar_Cl[iHgCL]:Bar_Op[iHgOP]; 및 Price_UrVerh = Bar_Cl[iLwCL]<Bar_Op[iLwOP] ? Bar_Cl[iLwCL]:Bar_Op[iLwOP];.