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

 
Igor Zakharov :

ATR 표시기 사용

감사합니다. 하지만 제 경우에는 어떻게 사용할 수 있는지 아직 알지 못했습니다.

누군가 CopyRates 에 대한 링크를 게시했습니다(감사합니다, 불행히도 댓글은 삭제되었습니다). 그래서 저는 iVolume()이 고가와 저가의 차이인지 아니면 다른 무엇인지 이해하려고 노력하고 있습니다.

저것들. 내 경우에는 (내가 이해하는 것처럼) 한 달과 일주일 동안 데이터 배열을 만든 다음 값을 평균화하는 등의 작업을 수행할 수 있습니다.

 
Alexander Layzerevich :

iVolume()을 이해하려고 합니다. 고가와 저가의 차이입니까 아니면 다른 것입니까?

이것은 틱 볼륨 입니다. MT에서 차트를 마우스 오른쪽 버튼으로 클릭하고 볼륨 표시를 선택하십시오. 차트 하단에 히스토그램이 나타납니다.

https://docs.mql4.com/en/series/ivolume

iVolume - Доступ к таймсериям и индикаторам - Справочник MQL4
iVolume - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Значение тикового объема бара (указанного параметром shift) соответствующего графика или 0 в случае ошибки. Для получения дополнительной информации об ошибке необходимо вызвать функцию GetLastError().
 
Igor Makanu :

이것은 틱 볼륨 입니다. MT에서 차트를 마우스 오른쪽 버튼으로 클릭하고 볼륨 표시를 선택하십시오. 차트 하단에 히스토그램이 나타납니다.

https://docs.mql4.com/en/series/ivolume

많은 설명 감사합니다.

따라서 다음이 남습니다. 2개의 배열 High 및 Low 는 해당 월의 데이터를 계산하기 위해 생성되고 2개의 배열 High 및 Low 는 주의 계산을 위해 생성됩니다.

그런 다음 모든 것이 평균화됩니다.

나는 모든 것을 코드에 넣으려고 노력할 것입니다 ...

여기에 또 다른 질문이 있습니다. 지난 달과 지난 주를 가장 잘 계산하는 방법은 무엇입니까?

예에 따르면:

시작 위치 및 필요한 요소 수로 참조

int CopyHigh (  
                symbol_name , // 기호 이름  
    ENUM_TIMEFRAMES    timeframe , // 기간  
    정수                start_pos , // 시작 위치  
    정수                count , // 복사할 양  
    더블             high_array[]        // 최고가를 복사하기 위한 배열  
);

기간 = PERIOD_D1;

시작 위치 = 1; // 이전 막대

카운트 = 30; // 30일(월)

 
Alexander Layzerevich :

여기에 또 다른 질문이 있습니다. 지난 달과 지난 주를 가장 잘 계산하는 방법은 무엇입니까?

날짜, tk에 첨부하는 것이 좋습니다. 막대가 없는 주말과 막대 사이에 간격(따옴표)이 있으면 다음이 도움이 됩니다.

Обращение по начальной и конечной датам требуемого интервала времени

int    CopyHigh (
   string            symbol_name,       // имя символа
   ENUM_TIMEFRAMES   timeframe,         // период
   datetime          start_time,       // с какой даты
   datetime          stop_time,         // по какую дату
   double            high_array[]       // массив для копирования максимальных цен
   );

https://docs.mql4.com/ru/series/copyhigh

CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Функция получает в массив high_array исторические данные максимальных цен баров для указанной пары символ-период в указанном количестве. Необходимо отметить, что отсчет элементов от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар. При копировании заранее неизвестного количества...
 
Igor Makanu :

날짜, tk에 첨부하는 것이 좋습니다. 막대가 없는 주말과 막대 사이에 간격(따옴표)이 있으면 다음이 도움이 됩니다.

https://docs.mql4.com/ru/series/copyhigh

감사합니다만, 어드바이저(로봇)에게 언제부터 시작하고 어디에서 멈출지 명확하게 하는 방법입니다.

1일(어제부터)부터 30초(30일)를 세는 것이 더 쉽습니다. 글쎄, 또는 7 개의 양초 (일).

결과는 다음 코드입니다.

 //************************************************************************************************/
double iPointOrderStep()
{
double Awerage30 = 0 , SummAwerage30 = 0 ;
double Awerage7 = 0 , SummAwerage7 = 0 ;

double High30[], Low30[], High7[], Low7[];
//----------------Для месяца---------------------------
int iHigh30 = CopyHigh ( Symbol (), PERIOD_D1 , 1 , 30 ,High30);
int iLow30 = CopyLow ( Symbol (), PERIOD_D1 , 1 , 30 ,Low30);
//----------------Для недели---------------------------
int iHigh7 = CopyHigh ( Symbol (), PERIOD_D1 , 1 , 7 ,High7);
int iLow7 = CopyLow ( Symbol (), PERIOD_D1 , 1 , 7 ,Low7);

for ( int i= 0 ;i< 30 ;i++) 
   {
      SummAwerage30 += (High30[i]-Low30[i]);
   }
for ( int i= 0 ;i< 7 ;i++) 
   {
      SummAwerage7 += (High7[i]-Low7[i]);
   }

   Awerage30 = SummAwerage30/ 30 ;
   Awerage7 = SummAwerage7/ 7 ;
   
   double iPointOrderStep = NormalizeDouble (((Awerage30+Awerage7)/ 2 ), 0 );
   return (iPointOrderStep/ 6 );
}
//************************************************************************************************/

그러나 불행히도 값은 = 0을 반환합니다.

어디가 잘못된건지 알려주세요..

그리고 더 나아가...

세션 시작 시 또는 터미널이 다시 시작된 경우 일주일에 한 번 계산을 수행하는 방법은 무엇입니까?

 
Alexander Layzerevich :

감사합니다. 하지만 제 경우에는 어떻게 사용할 수 있는지 아직 알지 못했습니다.

ATR의 본질은 기간 동안 막대의 평균 높이입니다. 같은 성공으로 MA(high)-MA(low)를 사용할 수 있습니다. 반복문을 푸는 것보다 쉽습니다.

 
Igor Zakharov :

ATR의 본질은 기간 동안 막대의 평균 높이입니다. 동일한 성공으로 MA(high)-MA(low)를 사용할 수 있습니다. 반복문을 푸는 것보다 쉽습니다.

저것들. 예에 따르면

int iATR (
                기호 , // 기호 이름
    ENUM_TIMEFRAMES    기간 , // 기간
    정수                ma_period        // 평균 주기
);

이중 Awerage30 = iATR( 기호 (), PERIOD_D1 , 30 ); 30일 동안의 평균 수치가 될까요?

 
Alexander Layzerevich :

저것들. 예에 따르면

int iATR (
                기호 , // 기호 이름
    ENUM_TIMEFRAMES    기간 , // 기간
    정수                ma_period        // 평균 주기
);

이중 Awerage30 = iATR( 기호 (), PERIOD_D1 , 30 ); 30일 동안의 평균 수치가 될까요?

그냥 달력이 아닙니다. 30일전(일요일,토요일)

shift 매개변수가 없는 함수로 판단하면 5k로 하고 있는데 4번째 분기에서 질문이 나왔네요 :)

 
Igor Zakharov :

그냥 달력이 아닙니다. 30일전(일요일,토요일)

shift 매개변수가 없는 함수로 판단하면 5k로 하고 있는데 4번째 분기에서 질문이 나왔네요 :)

이 스레드는 두 터미널 모두에 있습니다. 특히 동일한 기능으로.

 
Artyom Trishkin :
이 스레드는 두 터미널 모두에 있습니다. 특히 동일한 기능으로.

그럼 제목을 수정할까요?