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

 
텍스트의 모든 값을 요약하는 방법을 알려주십시오.
 void Hmin(){ datetime    h = iBars ( NULL , PERIOD_H1 ); 
       ObjectCreate ( 0 , "Hmin" +h, OBJ_TEXT , 1 , TimeCurrent (), 0 );     
       double Hmin=ObjectDescription( "Hmin" +h);     
       ObjectSetText( "Hmin" +h, MathMin (Hmin,AccountEquity()-AccountBalance()), 15 , "Arial" , clrWhite );
       ObjectSetInteger ( 0 , "Hmin" +h, OBJPROP_ANCHOR , ANCHOR_RIGHT );  
           }
이 코드는 그것들만을 생성합니다
 
Дмитрий :

안녕하세요 이해를 도와주세요...

MathMax 함수는 두 숫자 값의 최대 값을 반환합니다. -1과 -2 막대의 차이로 두 개의 동일한 배열 high[rates_total]에서 최대 숫자 값을 반환한다는 것이 밝혀졌습니다.

간단히 말해서 첫 번째 배열 12345와 두 번째 배열 1234에서 함수는 5를 반환합니까?

아니요. 함수는 12345를 반환합니다.

 
Дмитрий :

안녕하세요 이해를 도와주세요...

MathMax 함수는 두 숫자 값의 최대 값을 반환합니다. -1과 -2 막대의 차이로 두 개의 동일한 배열 high[rates_total]에서 최대 숫자 값을 반환한다는 것이 밝혀졌습니다.

간단히 말해서 첫 번째 배열 12345와 두 번째 배열 1234에서 함수는 5를 반환합니까?

high[rates_total-1]과 high[rates_total-2]에 위치한 두 값의 최대값을 반환합니다.

high[rates_total-1]이 12345이고 high[rates_total-2]가 1234이면 둘 중 어느 것이 더 큽니까?

12345는 1234보다 분명히 10배 더 큽니다. high[rates_total-1]에서 12345를 반환합니다.

 
Artyom Trishkin :

high[rates_total-1]과 high[rates_total-2]에 위치한 두 값의 최대값을 반환합니다.

high[rates_total-1]이 12345이고 high[rates_total-2]가 1234이면 둘 중 어느 것이 더 큽니까?

12345는 1234보다 분명히 10배 더 큽니다. high[rates_total-1]에서 12345를 반환합니다.

감사합니다... 하지만 여기서 high[rates_total-1]가 이미 high[rates_total-2]보다 한 막대 높은 경우 선의 합리성에 대한 질문이 발생합니다.

아니면 여기에 다른 의미가 있습니까?

고맙습니다.

 
Дмитрий :

감사합니다... 하지만 여기서 high[rates_total-1]가 이미 high[rates_total-2]보다 한 막대 높은 경우 선의 합리성에 대한 질문이 발생합니다.

아니면 여기에 다른 의미가 있습니까?

고맙습니다.

바는 어떻습니까?

동일한 배열의 두 막대에 있는 높은 값 을 비교하고 있습니다. rate_total-1 및 Rates_total-2는 비교 중인 두 막대를 나타냅니다.

인덱스 값이 아닌 Rates_total-1과 Rates_total-2 인덱스가 위치하는 막대의 High 값을 비교하고 있습니다.

생각한 내용은 다음과 같습니다. MathMax (rates_total-1, Rates_total-2) - 이것은 Rates_total-1이 항상 반환되는 곳입니다.

 
Rustam Bikbulatov :
텍스트의 모든 값을 요약하는 방법을 알려주십시오. 이 코드는

균형에서 자본을 뺀 값을 원하십니까? 자세히 쓰다

 
Artyom Trishkin :

바는 어떻습니까?

당신은에있는 높은 값 을 비교하고 있습니다 ...

명확하게 해 주셔서 감사합니다)
 

모두에게 좋은 하루!

MT4에서는 ALL TIKS 모델에서 미닛 캔들에서 어드바이저를 테스트합니다. 내 임무는 프로그램이 코드 실행에 가능한 한 적은 시간을 소비하도록 하는 것입니다. 그러나 나를 놀라게 한 것은!

이 코드를 사용하여 프로그램은 모든 틱을 확인하고 코드를 실행하는 데 6초를 보냅니다. 375밀리초

 void OnTick ()
{
Tick++;
if (Tick!=x3)
{
Print ( "---------------------КАЖДЫЙ ТИК ----------Tick-----=" ,Tick);
x3=Tick;
}
}

이 코드를 사용하면 프로그램이 모든 틱을 확인하지 않고 매분 초의 첫 번째 틱만 확인하고 코드 실행에 훨씬 적은 시간을 소비해야 한다고 생각했습니다.

void OnTick ()
{
Tick++;

if (Minute()!=x3) //&&Seconds()==0

{
Print ( "---------------------КАЖДЫЙ ТИК ----------Tick-----=" ,Tick, "  Bid  " ,   Bid, "  LoY  " ,   LoY);
x3=Minute();
}
}



하지만 프로그램은 6초가 걸렸다. 219밀리초. 이로부터 코드가 프로그램에 60초에 한 번만 괄호 안의 표현식을 확인하도록 지시한다는 사실에도 불구하고 프로그램은 여전히 거의 매 틱마다 이 표현식을 확인하고 이전 코드와 거의 같은 시간을 실행에 소비한다는 결론을 내렸습니다.
그런 다음 모델을 AT OPENING PRICES 로 변경하고 두 번째 옵션을 실행했습니다. 그러나 프로그램은 같은 방식으로 실행에 시간을 보냈습니다.   6초 219밀리초.  


문제 . 코드를 실행하는 데 훨씬 적은 시간을 할애하기 위해 모든 틱이 아닌 새 분 초의 첫 번째 틱만 확인하도록 모든 TICKS 모델의 MT4 프로그램을 분 초에서 강제로 실행할 수 있습니까? 가능하다면 어떤 기능 또는 언어 구성의 도움으로?
고맙습니다.

 
datetime current, last;

void OnTick()
   {
   current=iTime(symbol,frame,0);
   if(last==current) return;
   last=current;

   } 
 
Aleksei Stepanenko :

귀하의 코드와 일치하도록 내 코드를 변경했습니다.

 datetime current, last;
void OnTick ()
{
Tick++;
current= iTime ( NULL , 0 , 0 );
if (last==current) return ;
last=current;
{
Print ( "---------------------КАЖДЫЙ ТИК ----------Tick-----=" ,Tick);
}
}


프로그램이 코드를 실행하는 데 소요한 시간 .... 6 , 235 , 즉, 내 코드(6.375)보다 적지만 때때로 는 아닙니다.
그리고 프로그램은 매 분 초가 열리기 시작할 때 틱 값을 한 번만 확인해야하기 때문에 몇 배나 적은 것 같습니다.

우리 중 누가 잘못했는지 ..... 그것은 나에게 보인다.