[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 346

 
죄송합니다
 
Stepan241 >> :

당신이 쓰는 스크립트의 맨 처음에

#property show_inputs

외부 이중 로트=0.1

그 후 도구 창에 스크립트를 첨부하는 순간 대화 상자가 나타납니다. 거기에 로트 크기를 입력하십시오

이해합니다. 하지만 그것은 내가 필요한 것이 아닙니다. 이 명령을 사용하면 어드바이저의 일반 설정과 현재 스크립트의 설정이 포함된 대화 상자가 나타납니다. 스크립트 설정으로 BEFORE ONLY를 즉시 표시하는 데 사용할 수 있는 기능이 있는지 묻습니다.

 
모든 미결 주문을 지정된 시간에 마감하는 방법을 알려주시겠습니까?
 
JackaLrus писал(а) >>

이해합니다. 그러나 그것은 내가 필요한 것이 아닙니다. 이 명령을 사용하면 어드바이저의 일반 설정과 현재 스크립트의 설정이 포함된 대화 상자가 나타납니다. 스크립트 설정으로 BEFORE ONLY를 즉시 표시하는 데 사용할 수 있는 기능이 있는지 묻습니다.

그런 다음 MetaEditor만.

 
vik-777 >> :
모든 미결 주문을 지정된 시간에 마감하는 방법을 알려주시겠습니까?

if (HourTime[0]=12)_CloseAllOrder

마지막 페이지 또는 마지막 페이지에서 _CloseAllOrder 함수 자체를 참조하십시오.

 
Stepan241 >> :

if (HourTime[0]=12)_CloseAllOrder

마지막 페이지 또는 마지막 페이지에서 _CloseAllOrder 함수 자체를 참조하십시오.

덕분에 기능이 매우 편리합니다

 

친애하는 감정가,

이 결과가 나온 이유를 알려주세요.

본질:

int start()
{
//----
double c;
int q;
c=0.3/0.1;
q=c;
Print("c=",c," q=",q);
//----
return(0);
}

"c=3 q=2" 로그에 출력

질문: 그는 어떻게 3개 중 2개를 얻습니까?

만화는 0.3 대신 0.4 또는 다른 분수로 대체하면 예상대로 해결된다는 것입니다.

예를 들어

int start()
{
//----
double c,v;
int q,w;
c=0.3/0.1;
v=0.4/0.1;
q=c;
w=v;
Print("c=",c," q=",q," v=",v," w=",w);
//----
return(0);
}

"c=3 q=2 v=4 w=4" 로그에 출력

질문: 그는 어떻게 3개 중 2개를 얻습니까?

컴파일을 시도하십시오. 아마도 내 컴퓨터가 계산 방법을 잊어 버린 것 같습니다 (일종의 어리 석음 ...)

 
mukata >> :

친애하는 감정가,

이 결과가 나온 이유를 알려주세요.

본질:

int start()
{
//----
double c;
int q;
c=0.3/0.1;
q=c;
Print("c=",c," q=",q);
//----
return(0);
}

"c=3 q=2" 로그에 출력

질문: 그는 어떻게 3개 중 2개를 얻습니까?

만화는 0.3 대신 0.4 또는 다른 분수로 대체하면 예상대로 해결된다는 것입니다.

예를 들어

int start()
{
//----
double c,v;
int q,w;
c=0.3/0.1;
v=0.4/0.1;
q=c;
w=v;
Print("c=",c," q=",q," v=",v," w=",w);
//----
return(0);
}

"c=3 q=2 v=4 w=4" 로그에 출력

질문: 그는 어떻게 3개 중 2개를 얻습니까?

컴파일을 시도하십시오. 아마도 내 컴퓨터가 계산 방법을 잊어 버린 것 같습니다 (일종의 어리 석음 ...)


이것은 실수가 아니라 실수로 작업할 때 흔히 발생하는 반올림 오류입니다.

첫 번째 경우, 예를 들어 c는 2.999999999와 같지만 출력은 반올림됩니다. 3이지만 정수 유형에 할당되면 소수 부분은 버려집니다.

 
splxgf >> :

이것은 실수가 아니라 실수로 작업할 때 흔히 발생하는 반올림 오류입니다.

첫 번째 경우, 예를 들어 c는 2.999999999와 같습니다...

2.9999가 어떻게 나올 수 있는지 명확하지 않습니까? 0.3/0.1=3 정확히 1을 3으로 나누는 것이 아니라 0.33333이 되어야 합니다...

그러나 정수 유형에 할당되면 소수 부분은 삭제됩니다.

정수 유형에 값 c가 할당되고 c는 분수 부분 없이 명시적으로 3과 같습니다. 버릴 것이 없다...

정답은 100% 틀립니다.

다른 옵션이 있습니까?

 
mukata >> :


2.9999가 어떻게 나올 수 있는지 명확하지 않습니까? 0.3/0.1=3 정확히 1을 3으로 나누는 것이 아니라 0.33333이 되어야 합니다...


그것은 정확하게 보이지만 기계 표현에서 마지막 비트는 다른 값을 가질 수 있습니다. 저것들. 2.9999, 3 또는 3.00000001


이러한 오해를 없애기 위해 MQL에는 NormalizeDouble() 함수가 있습니다.