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

 
DCodec :

솔직히, 나는 아무것도 이해하지 못했습니다. Close[2], Close[1]에 있는 표시기의 위쪽 라인 값이 필요합니다. 그게 전부입니다.

표시기 코드에 "맞춤"되지 않도록 모든 표시기에서 이러한 값을 추출하는 방법.


닫기가 아닌 모든 BARS에서 표시기 버퍼의 값을 얻을 수 있습니다. iCustom 도움말을 참조하세요.

아이커스텀

지정된 사용자 지정 표시기의 핸들을 반환합니다.

절차:

  • OnInit()에서 표시기 핸들 만들기
  • OnTick() 또는 OnTime()에서 필요한 INDICATOR 버퍼에서 주어진 BARK 번호에 대한 표시기 데이터를 얻습니다.

 
Vladimir Karputov :

닫기가 아닌 모든 BARS에서 표시기 버퍼의 값을 얻을 수 있습니다. iCustom 도움말을 참조하세요.

아이커스텀

지정된 사용자 지정 표시기의 핸들을 반환합니다.

절차:

  • OnInit()에서 표시기 핸들 만들기
  • OnTick() 또는 OnTime()에서 필요한 INDICATOR 버퍼에서 주어진 BARK 번호에 대한 표시기 데이터를 얻습니다.

예, 제가 말을 잘못했습니다. 첫 번째 막대와 두 번째 막대에 표시기 값이 필요합니다. 그러나 볼린저 밴드에 3개의 줄이 있다고 가정해 보겠습니다. 나에게 반환되는 라인의 가치??? 어리석은 질문에 대해 사과하지만 정말 STUPOR입니다.
 
DCodec :
예, 제가 말을 잘못했습니다. 첫 번째 막대와 두 번째 막대에 표시기 값이 필요합니다. 그러나 볼린저 밴드에 3개의 줄이 있다고 가정해 보겠습니다. 나에게 반환되는 라인의 가치??? 어리석은 질문에 대해 사과하지만 정말 STUPOR입니다.

잠깐 기다려요...

다음은 iBands에서 값을 가져오는 함수입니다.

 //+------------------------------------------------------------------+
//| Get value of buffers for the iBands                              |
//|  the buffer numbers are the following:                           |
//|   0 - BASE_LINE, 1 - UPPER_BAND, 2 - LOWER_BAND                  |
//+------------------------------------------------------------------+
double iBandsGet( const int buffer, const int index)
  {
   double Bands[ 1 ];
//ArraySetAsSeries(Bands,true);
//--- reset error code 
   ResetLastError ();
//--- fill a part of the iBands array with values from the indicator buffer that has 0 index 
   if ( CopyBuffer (handle_iBands,buffer,index, 1 ,Bands)< 0 )
     {
       //--- if the copying fails, tell the error code 
       PrintFormat ( "Failed to copy data from the iBands indicator, error code %d" , GetLastError ());
       //--- quit with zero result - it means that the indicator is considered as not calculated 
       return ( 0.0 );
     }
   return (Bands[ 0 ]);
  }

함수가 잘렸습니다. 그 목적은 항상 "인덱스" 막대 번호의 "버퍼" 표시기 버퍼 에서 단 하나의 값을 수신하는 것입니다.

iBand의 세 줄에는 모두 고유한 상수가 있습니다.

 //|   0 - BASE_LINE, 1 - UPPER_BAND, 2 - LOWER_BAND                  |
 
Vladimir Karputov :

잠깐 기다려요...

다음은 iBands에서 값을 가져오는 함수입니다.

함수가 잘렸습니다. 그 목적은 항상 "인덱스" 막대 번호의 "버퍼" 표시기 버퍼 에서 단 하나의 값을 수신하는 것입니다.

iBand의 세 줄에는 모두 고유한 상수가 있습니다.

예 예. 어떻게 신청하는지 이해가 안가네요

 //|   0 - BASE_LINE, 1 - UPPER_BAND, 2 - LOWER_BAND  

이는 생각의 폭이 좁기 때문일 것입니다. 나는 여전히 MQL4처럼 생각한다.

 
DCodec :

예 예. 어떻게 신청하는지 이해가 안가네요

이는 생각의 폭이 좁기 때문일 것입니다. 나는 여전히 MQL4처럼 생각한다.


코드베이스의 iBands 사용 예: Bollinger Bands RSI

 
DCodec :

...


어떻게 진행되고 있나요? 아니면 지표에서 데이터를 가져오는 방법을 단계별로 작성하여 주제를 만드시겠습니까?

 
Vladimir Karputov :

어떻게 진행되고 있나요? 아니면 지표에서 데이터를 가져오는 방법을 단계별로 작성하여 주제를 만드시겠습니까?

재미있네요. 그리고 그 버퍼가 저에게 떠올랐습니다.

 CopyBuffer

이것이 내가 필요한 것입니다

 CopyBuffer (handle_iBands,buffer,index, 1 ,Bands)

고맙습니다.

 

질문 하나 더 드리겠습니다. 필요하지 않은 표시기의 라인을 비활성화하는 방법은 무엇입니까?

iEnvelopes에서 UPPER_LINE을 비활성화합시다.

 
DCodec :

재미있네요. 그리고 그 버퍼가 저에게 떠올랐습니다.

이것이 내가 필요한 것입니다

고맙습니다.


그것은 당신에게 보였다. 나는 웃지 않고 진지하게 물었다. 예를 들어 Simple Expert Advisor라는 주제가 있습니다. 막대 크기를 확인합니다. 매수/매도


DCodec :

질문 하나 더 드리겠습니다. 표시기에서 필요하지 않은 줄을 비활성화하는 방법은 무엇입니까?

iEnvelopes에서 UPPER_LINE을 비활성화합시다.


질문이 명확하지 않습니다. WHERE와 무엇을 하고 싶은지 더 정확하게 기술하십시오.

 
Vladimir Karputov :

그것은 당신에게 보였다. 나는 웃지 않고 진지하게 물었다. 예를 들어 Simple Expert Advisor라는 주제가 있습니다. 막대 크기를 확인합니다. 매수/매도



질문이 명확하지 않습니다. WHERE와 무엇을 하고 싶은지 더 정확하게 기술하십시오.

Expert Advisor에서 OnInit()에서 표시기 핸들을 수신할 때 ...

 int OnInit ()
  {
//--- Получить хэндл индикатора Envelopes_upper для отрисовки верхней линии
   EnvHandle_upper= iEnvelopes ( NULL , 0 ,Period_upper, 0 , MODE_SMA , PRICE_MEDIAN ,Deviation_upper);

....터미널은 두 선을 모두 그립니다. 그러나 저는 맨 위 선만 필요합니다.

이 선 그리기를 어떻게 끌 수 있습니까? 저것들. 색상을 CLR_NONE 으로 변경하거나 선 스타일을 DRAW_DONE 으로 변경하시겠습니까?

사유: