포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 1083

 
그리고 주어진 수의 최근 막대에서 가장 큰 값을 찾아야 한다면?
 

그래서 그것은 정적 배열 입니다

 //--- создадим массив 
   double array[]; 
   int size= 772 ; 
   ArrayResize (array,size); 
   //---  заполним его значениями индикатора 
   for ( int i= 0 ;i<size;i++) 
     { 
      array[i]=iATR(NULL,0,14,i);
     }
   //--- найдем позицию максимального элемента в массиве 
   int max_position= ArrayMaximum (array, 772 , 0 ); 
   //--- теперь получим само максимальное значение в массиве 
   double max=array[max_position];
 

그래서 결국, 나는 프로그래머의 삶에 대한 인식의 복잡성을 이해하는 데 그리 멀지 않은 독학으로 직접 씁니다 (주제는 : 초보자를위한 질문 ...). 아무 노력도 하지 않고 모든 것을 공짜로 얻고 싶다는 질책을 받지 않기 위해 예시를 들지만, 한편으로는 (남의 글을 읽을 수 없다는 말을 하지 않기 위해) 과제를 명확하게 공식화하려고 노력한다. 생각).

다시 한 번, 이 코드에서 또는 아마도 코딩의 개인적인 표현을 이해하는 사람들의 은혜에 의해 주어진 마지막 막대 수에 대한 표시기의 최대값을 얻는 방법???

프로그래머가 다른 세계에서 온 사람이라는 사실을 진심으로 존경하고 존경하며 이해한다는 것은 이러한 섬세한 설명이 원하는 결과를 얻기 위해 위에서 설명한 모든 내용을 더 이상, 아마도 한 번 이상 언급해야 한다는 사실이 아닙니다.

 //--- 배열 생성 
이중 배열[]; 
정수 크기 = 772; 
ArrayResize(배열, 크기); 
//--- 표시기 값으로 채우기 
for(int i=0;i<크기;i++) 
{ 
배열[i]=iATR(NULL,0,14,i);
}
//--- 배열에서 최대 요소의 위치를 찾습니다. 
int max_position=ArrayMaximum(배열,772,0); 
//--- 이제 배열 자체에서 최대값을 얻습니다. 
이중 최대=배열[최대 위치];
 

할 수 있는 모든 것을 뒤졌지만 해결책을 찾지 못했습니다. 마지막 희망은 다릅니다. :)

일반적인 작업은 차트에 던진 후 이미 작동하는 것처럼 보이는 표시기를 만드는 것이 었습니다. 지정된 키를 누르면 현재 커서 위치 아래에 추세선이 나타납니다 (date1=date2, price1=price2)

문제는 포인터 좌표를 if (id== CHARTEVENT_MOUSE_MOVE ) 에서 if ( id== CHARTEVENT_KEYDOWN ) 으로 포인터 좌표를 전송할 수 없을 때 발생했으며 아래 코드에서도 전달하기를 원하지 않습니다. 구현 방법을 모르겠습니다. 이건 또 다른 옵션이 있긴 한데 문제가 있는 것 같은데 차트에 인디케이터를 던지면 초기 메뉴가 뜨는데 어떻게든 차단해서 인디케이터가 차트에 바로 나오도록 하는 게 가능한가요? ?

 #property strict
#define VK_D             0x44 


int OnInit ()
  {
//---
   ChartSetInteger ( 0 , CHART_EVENT_MOUSE_MOVE , true );

   return ( INIT_SUCCEEDED );
  }

//+------------------------------------------------------------------+
void OnChartEvent ( const int id,
                   const long &lparam,
                   const double &dparam,
                   const string &sparam)
{    
 
if (id== CHARTEVENT_MOUSE_MOVE )

{     int       x     =( int )lparam;
       int       y     =( int )dparam; 
       datetime dt    = 0 ; 
       double    price = 0 ; 
       int       window= 0 ;
       ChartXYToTimePrice ( 0 ,x,y,window,dt,price); 


   if (id== CHARTEVENT_KEYDOWN )
{ 
   switch ( int (lparam)) 
{ case VK_D:
   
   ObjectCreate ( "Trend Line" , OBJ_TREND , 0 ,dt,price,dt,price);
   ObjectSetInteger ( 0 , "Trend Line" , OBJPROP_SELECTED , true ); 
}   
} 
}    
}
 
Craft :

그래서 결국, 나는 프로그래머의 삶에 대한 인식의 복잡성을 이해하는 데 그리 멀지 않은 독학으로 직접 씁니다 (주제는 : 초보자를위한 질문 ...). 아무 노력도 하지 않고 모든 것을 공짜로 얻고 싶다는 질책을 받지 않기 위해 예시를 들지만, 한편으로는 (남의 글을 읽을 수 없다는 말을 하지 않기 위해) 과제를 명확하게 공식화하려고 노력한다. 생각).

다시 한 번, 이 코드에서 또는 아마도 코딩의 개인적인 표현을 이해하는 사람들의 은혜에 의해 주어진 마지막 막대 수에 대한 표시기의 최대값을 얻는 방법???

프로그래머가 다른 세계에서 온 사람이라는 사실을 진심으로 존경하고 존경하며 이해한다는 것은 이러한 섬세한 설명이 원하는 결과를 얻기 위해 위에서 설명한 모든 내용을 더 이상, 아마도 한 번 이상 언급해야 한다는 사실이 아닙니다.


음, 주기를 반대로 하면 끝입니다.

rate_total-1에서 Rates_total에서 desired_number_of_bars를 뺀 값입니다. Expert Advisor의 경우 Bars () -1에서 Bars () 빼기...

 
K_i_r_i_t_o :

할 수 있는 모든 것을 뒤졌지만 해결책을 찾지 못했습니다. 마지막 희망은 다릅니다. :)

일반적인 작업은 차트에 던진 후 이미 작동하는 것처럼 보이는 표시기를 만드는 것이 었습니다. 지정된 키를 누르면 현재 커서 위치 아래에 추세선이 나타납니다 (date1=date2, price1=price2)

문제는 포인터 좌표를 if (id== CHARTEVENT_MOUSE_MOVE ) 에서 if ( id== CHARTEVENT_KEYDOWN ) 으로 포인터 좌표를 전송할 수 없을 때 발생했으며 아래 코드에서도 전달하기를 원하지 않습니다. 구현 방법을 모르겠습니다. 이건 또 다른 옵션이 있긴 한데 문제가 있는 것 같은데 차트에 인디케이터를 던지면 초기 메뉴가 뜨는데 어떻게든 차단해서 인디케이터가 차트에 바로 나오도록 하는 게 가능한가요? ?

변수의 가시성에 주의하십시오.

깊이 파고 들지는 않았지만 변수가 조건 내부에 선언되어 있음을 알았습니다. 그러면 안됩니다.

 
AlexeyVik :

변수의 가시성에 주의하십시오.

깊이 파고 들지는 않았지만 변수가 조건 내부에 선언되어 있음을 알았습니다. 그러면 안됩니다.

그래서 이것이 문제입니다. 하나의 if에서 다른 것으로 변수를 전송하는 방법, 많은 변형을 시도했지만 전혀 작동하고 싶지 않습니다..
 
K_i_r_i_t_o :
그래서 이것이 문제입니다. 하나의 if에서 다른 것으로 변수를 전송하는 방법, 많은 변형을 시도했지만 전혀 작동하고 싶지 않습니다..

여기에서 읽으십시오 .

많은 변형은 무엇입니까? 전역 수준 변수는 프로그램의 모든 부분에서 볼 수 있으며 이는 극단적인 경우입니다.

 
AlexeyVik :

여기에서 읽으십시오 .

많은 변형은 무엇입니까? 전역 수준 변수는 프로그램의 모든 부분에서 볼 수 있으며 이는 극단적인 경우입니다.

네, 다 읽었습니다. 문제의 사실은 변수의 값을 다른 함수로 옮기는 것이 불가능하고, 한 함수에서는 수집할 방법이 없고 막다른 골목에 있지만, 표시기 메뉴에 대해?
 
Craft :

좋은 오후입니다. 신사 숙녀 여러분.

배열 질문입니다. 첫 번째 막대가 아닌 차트의 마지막 막대에 필요한 수에서 표시기의 가장 높은 값을 찾는 방법은 무엇입니까?

글쎄, 이것은 여러 번 논의되었지만 (찾을 수 없음) 배열을 사용할 일이 거의 없기 때문에주의를 기울이지 않았습니다.

인덱싱 문제를 해결하는 방법을 알려주십시오. ArrayMaximum(array)을 통해 더 우아하게 처리할 수 있습니까?

어딘가에 기본적인 실수가 있으면 실례합니다. 독학입니다.

MQL4 빌드의 버그 수정 흐름은 절대 멈추지 않으므로 코드가 단순할수록 더 안정적입니다.

Amax=-1000000;

iAmax=-1;

for ( int i= 0 ;i<크기; i++) {

if (array[i]>Amax) {iAmax=i; Amax=배열[i];}

}

if (iAmax<0) ...뭔가 잘못됐어