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

 
Karputov Vladimir :

따라서 이러한 위시리스트를 즉시 지정해야 합니다. :).

상황은 다음과 같습니다. 차트에 막대가 있으면 표시기 버퍼 의 셀이 이에 해당합니다. 이 셀에 무언가를 쓸 때까지 쓰레기는 이 셀에 저장됩니다.

그리고 왜 MT4에서는 쓰레기가 아니지만 단순히 이 막대 아래에 표시기를 표시하지 않습니까?
 
Aleksey Lebedev :

정수(int, long, datetime 등)를 나눌 때 결과는 정수입니다. 나머지는 폐기됩니다. 오늘 00:00 과 어제 23:59:59 의 차이는 1일이 됩니다.

첫째, 이것은 그렇지 않습니다. 지표에서 실험적으로 입증되었습니다.

둘째, 1이 어떻게 나올까요? 처음에는 초 단위로 계산할 수 있다는 사실을 고려하여 수학적으로 보여줍니다.

 
Alexey Kozitsyn :
같은 방식으로 단순 유형의 무효화도 마찬가지입니다. 그들에게 값 0을 할당함으로써. 필수 필드 에 값 0이 할당 되자 마자 역 연산 StructToTime()을 사용하십시오.

제로 아웃:

MqlDateTime str1;
datetime  Open_timePos=iTime(_Symbol,0,pos);
TimeToStruct(Open_timePos,str1);
   str1.hour=0;
   str1.min=0;
   str1.sec=0;
datetime  start_time=StructToTime(str1);
Print("день=",TimeToStr(start_time));

모든 것이 해결되었습니다! 감사합니다!
 

Aleksey Lebedev :
При делении целых чисел(int,long,datetime и т.п.) результат целое число, т.е. остаток отбрасывается. 00:00 сегодня и 23:59:59 вчера, разность будет равна 1дню.

-알렉스 - :

첫째, 이것은 그렇지 않습니다. 지표에서 실험적으로 입증되었습니다.

기본에 의문을 가질 필요가 없다

-알렉스 - :

둘째, 1이 어떻게 나올까요? 처음에는 초 단위로 계산할 수 있다는 사실을 고려하여 수학적으로 보여줍니다.

 datetime today= D'2016.03.09 00:00:00' ;
datetime yesterday= D'2016.03.08 23:59:59' ;
Print ( "today=" , 86400 *(today/ 86400 ), " value=" , int (today));
Print ( "yesterday=" , 86400 *(yesterday/ 86400 ), " value=" , int (yesterday));
Print ( "разница в днях = " , int (today/ 86400 -yesterday/ 86400 ));

이해하기 쉬운 경우 구조체 변환을 사용하십시오.

 
Aleksey Lebedev :

기본에 의문을 가질 필요가 없다

이해하기 쉬운 경우 구조체 변환을 사용하십시오.

그는 자신이 이해하는 것을 이해합니다. 나는 당신의 코드를 실행하려고 시도하지 않았지만 당신이 스스로 했다고 생각합니다. 그래서 그것이 어떻게 일어나는지 합리적이지 않은지 설명하십시오:

86401/86400-86400/86400은 수학 규칙에 따라 1.000012-1=0.000012이고 int가 정수로 반올림되어야 하는 경우 1과 같습니다. 0.

 
-Aleks- :

그는 자신이 이해하는 것을 이해합니다. 나는 당신의 코드를 실행하려고 시도하지 않았지만 당신이 스스로 했다고 생각합니다. 그래서 그것이 어떻게 일어나는지 합리적이지 않은지 설명하십시오:

86401/86400-86400/86400은 수학 규칙에 따라 1.000012-1=0.000012이고 int가 정수로 반올림되어야 하는 경우 1과 같습니다. 0.

하지만 실행)

하루의 시작 00:00:00을 나머지 없이 86400으로 나누고 이전 값은 최소 1초 미만입니다. 반올림 - 전체 표현식이 아닌 나눗셈의 나머지 부분이 삭제됩니다.

86400/86400=1

86399/86400=0

 
Aleksey Lebedev :

하지만 실행)

하루의 시작 00:00:00을 나머지 없이 86400으로 나누고 이전 값은 최소 1초 미만입니다. 반올림 - 전체 표현식이 아닌 나눗셈의 나머지 부분이 삭제됩니다.

86400/86400=1

86399/86400=0

표현식 내부에서 일종의 반올림이 발생하는 것이 너무 놀랍습니다. 변수에 값을 할당할 때 쉼표 뒤의 값이 삭제되는 것으로 생각했습니다.
 
얘들아! 차트에 표시기를 프로그래밍 방식으로 표시할 수 있습니까? 아니면 그냥 손?
 
Vladimir Tkach :
얘들아! 차트에 표시기를 프로그래밍 방식으로 표시할 수 있습니까? 아니면 그냥 손?
https://www.mql5.com/ru/docs/chart_operations/chartindicator 를 추가할 수 있습니다.
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
  • www.mql5.com
Операции с графиками / ChartIndicatorAdd - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
mql5와 mql4에 있습니까?
사유: