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

 
ALXIMIKS :
이 기사 를 보면 모든 것이 보이는 것처럼 간단하지 않으며 일반적으로 매우 유용합니다.

보았다. 자세히 공부하려면 일주일이 걸립니다. 그러나 그보다 더 나쁜 것은 내 작업과 관련된 장소를 찾지 못했다는 것입니다. 표시기에 색상을 지정하지 않고 어떤 식으로든 수정하지 않습니다. 마지막 n개의 막대에서 최고점과 최저점을 찾고 싶습니다. RSI_Extremums_Sample.mq4 에 유사성의 힌트가 있습니다. 하지만 이 코드를 얻을 수 없습니다. 잉여가 많이 있고 거기에 표시가 DRAWN입니다 ....하지만 필요하지 않습니다 ...
 
lottamer :

보았다. 자세히 공부하려면 일주일이 걸립니다. 그러나 그보다 더 나쁜 것은 내 작업과 관련된 장소를 찾지 못했다는 것입니다. 표시기에 색상을 지정하지 않고 어떤 식으로든 수정하지 않습니다. 마지막 n개의 막대에서 최고점과 최저점을 찾고 싶습니다. RSI_Extremums_Sample.mq4 에 유사성의 힌트가 있습니다. 하지만 이 코드를 알아낼 수 없습니다. 잉여가 많이 있고 거기에 표시가 DRAWN입니다 ....하지만 필요하지 않습니다 ...


3173
artmedia70 27.10.2013 15:42 #
Forexman77 :

"ArrayMaximum" 함수를 사용하여 사용자 지정 표시기의 가장 가까운 최대값을 계산할 수 있습니까?

아니면 이것을 위해 다른 기능이 필요합니까?

나는 이것을 다음과 같이 하려고 노력했다.

그리고 아무것도 나오지 않습니다. 전문가, 방법을 알려주세요?

   for (i= 2 ; i<nBars; i++) {                    
       double a= iCustom ( NULL , 0 , "EMAF" , 0 , 0 ,i+ 1 );
       double b= iCustom ( NULL , 0 , "EMAF" , 0 , 0 ,i);
       double c= iCustom ( NULL , 0 , "EMAF" , 0 , 0 ,i- 1 );
       if ((a-b)*(b-c)< 0 ) {
         if (b<c) {                                
             // Нашли донышко
            }
         if (b>c) {                           
             // Нашли пичок
            }
         }
      }   
고문에서 검색합니다. 표시기에는 없습니다.

 
lottamer :

이 코드는 교과서에서 가져왔습니다. 모든 것이 기본적으로 명확합니다. n 기간 동안의 가격 극단값을 계산하는 대신 MACD 지표의 극값을 계산하는 방법은 명확하지 않습니다. 예를 들면 ?

키 블록에서 분명히 HIGH와 LOW를 MACD로 변경해야 합니다. 하지만 어떻게 ... 모든 시도가 탬버린 끝에서 제로로 끝나는지 이해가 되지 않습니다.

MACD 배열을 생성해야 한다는 것을 이해합니다...

이중 MACDBuffer[];

나는 또한 다른 조언자들에게서 이 라인을 보았다.

하지만 서로 비교하기는 어렵습니다...

방법을 알려주세요?


기사 .
 

Kim과 비슷한 것을 찾았습니다.

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 17.05.2008                                                     |
//|  Описание : Возвращает значение максимального элемента массива.            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив значений числового ряда                                      |
//+----------------------------------------------------------------------------+
double ArrayMax( double & x[]) {
   if ( ArraySize (x)> 0 ) return (x[ ArrayMaximum (x)]);
   else {
     Print ( "ArrayMax(): Массив пуст!" );
     return ( 0 );
  }
}

질문: 표시기 값의 배열을 만드는 방법은 무엇입니까?

 
lottamer :

Kim과 비슷한 것을 찾았습니다.

질문: 표시기 값의 배열을 만드는 방법은 무엇입니까?

질문하신 내용을 다시 읽어보니 처음에 잘못 이해했습니다(

터키 데이터로 버퍼를 얻으려면 다음을 수행하십시오.

1) iMACD 값을 수집하여 버퍼 에 주기를 실행합니다.

2) MACD에서 소스 코드를 가져오면 거기에 버퍼가 있습니다.

 int start()
  {
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if (counted_bars> 0 ) counted_bars--;
   limit= Bars -counted_bars;
//---- macd counted in the 1-st buffer
   for ( int i= 0 ; i<limit; i++)
      MacdBuffer[i]= iMA ( NULL , 0 ,FastEMA, 0 , MODE_EMA , PRICE_CLOSE ,i)- iMA ( NULL , 0 ,SlowEMA, 0 , MODE_EMA , PRICE_CLOSE ,i);
//---- signal line counted in the 2-nd buffer
   for (i= 0 ; i<limit; i++)
      SignalBuffer[i]=iMAOnArray(MacdBuffer, Bars ,SignalSMA, 0 , MODE_SMA ,i);
//---- done
   return ( 0 );
  }
 
ALXIMIKS :

질문하신 내용을 다시 읽어보니 처음에 잘못 이해했습니다(

터키 데이터로 버퍼를 얻으려면 다음을 수행하십시오.

1) iMACD 값을 수집하여 버퍼에 주기를 실행합니다.

2) MACD에서 소스 코드를 가져오면 거기에 버퍼가 있습니다.


하지만 어떻게 버퍼를 렌더링할 수 있습니까? 그렇지 않으면 버퍼로 무엇을 해야할지 이해가 안됩니다....

인쇄 (MACDBuffer[1]); ?? 0을 인쇄합니다...왜? 이론상으로 1번째 막대의 값이 있어야 합니다....

그리고 더... 직접 iMACD 기능이 있을 때 MA를 통해 MACD를 계산하는 이유는 무엇입니까?

 
lottamer :


하지만 어떻게 버퍼를 렌더링할 수 있습니까? 그렇지 않으면 버퍼로 무엇을 해야할지 이해가 안됩니다....

인쇄(MACDBuffer[1]); ?? 0을 인쇄합니다...왜? 이론상으로 1번째 막대의 값이 있어야 합니다....

그리고 더... 직접 iMACD 기능이 있을 때 MA를 통해 MACD를 계산하는 이유는 무엇입니까?


무엇이 필요한지 알려주세요

그러나 더 명확한 방법으로, 어리석은 사람도 이해할 수 있습니다.

 
ALXIMIKS :


무엇이 필요한지 알려주세요

그러나 더 명확한 방법으로, 어리석은 사람도 이해할 수 있습니다.

주어진 막대 수에 대한 MACD 표시기 의 최소값(그림과 같이)과 최대값을 결정해야 합니다. (이 경우 20).

이 가격에 이 작업을 수행하는 코드를 찾았고 어리석게도 HIGH LOW를 MACD로 바꾸려고 했습니다. 그러나 아무 일도 일어나지 않았다....



 
artmedia70 :
양질의 스토리를 제공하는 것은 DC의 역할입니다. 그들은 게으르고 항상 MK를 비난합니다.


고맙습니다!
 
lottamer :

주어진 막대 수에 대한 MACD 표시기의 최소값(그림과 같이)과 최대값을 결정해야 합니다. (이 경우 20).

이 가격에 이 작업을 수행하는 코드를 찾았고 어리석게도 HIGH LOW를 MACD로 바꾸려고 했습니다. 그러나 아무 일도 일어나지 않았다....

사용자 정의 macdac의 끝에 붙여넣습니다.
   int max,min,maxlast,minlast;
   max = ArrayMaximum (MacdBuffer, 20 , 1 );
   min = ArrayMinimum (MacdBuffer, 20 , 1 );
   if (max!=maxlast){
       ObjectDelete   ( "highline" );   
       ObjectCreate  ( "highline" , 1 ,WindowOnDropped( ) , 0 ,MacdBuffer[max], 0 , 0 );
   }
   if (min!=minlast){
       ObjectDelete   ( "lowline" );   
       ObjectCreate  ( "lowline" , 1 ,WindowOnDropped( ) , 0 ,MacdBuffer[min], 0 , 0 );
   }

추신 이것이 더 정확하고 더 좋지만:

   int max,min;
   static double maxlast,minlast;
   max = ArrayMaximum (MacdBuffer, 20 , 1 );
   min = ArrayMinimum (MacdBuffer, 20 , 1 );
   if (MacdBuffer[max]!=maxlast){
      maxlast=MacdBuffer[max];
       ObjectDelete   ( "highline" );   
       ObjectCreate ( "highline" , 1 ,WindowOnDropped( ) , 0 ,MacdBuffer[max], 0 , 0 );
   }
   if (MacdBuffer[min]!=minlast){
      minlast=MacdBuffer[min];
       ObjectDelete   ( "lowline" );   
       ObjectCreate ( "lowline" , 1 ,WindowOnDropped( ) , 0 ,MacdBuffer[min], 0 , 0 );
   }