[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 180

 

이중 유형의 숫자로 작업할 때 변수에 값을 할당해야 하는 경우(예: 0) 작성자마다 철자가 다릅니다. 예를 들어 a=0; 또는 그래서 a = 0.0; 또는 그래서 a = 0.0000; 프로그램의 올바른 동작에 차이가 있습니까?

 

if ((OrderSymbol()==Symbol()) && ((OrderMagicNumber()==44) || (OrderMagicNumber()==55)) && (티켓==0)){

주문삭제(주문티켓());

int err1=GetLastError();

인쇄 (err1);}

이 코드는 최근에 잘 작동했습니다... 이제 ERR_OFF_QUOTES 오류를 반환합니다. 티켓 번호를 손으로 쓴 경우에도 오류가 OrderDelete를 반환한다는 점에 유의하십시오. 누구든지 상황을 설명 할 수 있습니까? 고맙습니다.

 
Elenn :

이중 유형의 숫자로 작업할 때 변수에 값을 할당해야 하는 경우(예: 0) 작성자마다 철자가 다릅니다. 예를 들어 a=0; 또는 그래서 a = 0.0; 또는 그래서 a = 0.0000; 프로그램의 올바른 동작에 차이가 있습니까?


아니요, 규칙이 없습니다. 하지만 개인적으로 점을 사용하여 상수 이중 값을 쓰는 것을 선호합니다.

예를 들어:

 if ( a == 1.0 )
{}

// ...

b = 3.0 ;

먼저 텍스트를 얼핏 보면 값 유형이 이중임을 알 수 있습니다.

둘째, 일부 버그를 제거합니다. 비교하다:

 double a= 2 / 3 ;
double b= 2.0 / 3.0 ;

Print ( "a=" ,a, " b=" ,b);
 

도와주세요. 코드를 실행하고 싶지 않습니다.

정수 시작()
{
인터프리12;
{
if(PRICE_CLOSE>PRICE_OPEN)
pre12=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,"",Bid-100*Point,Ask+100*Point, CLR_NONE );
}
반품;

}

즉, 계획대로 촛불이 오르면 열립니다.

모든 것이 컴파일됩니다. 그러나 테스트 중에는 아무 일도 일어나지 않습니다. 즉, 그는 명령을 내리지 않습니다. 오류에 코를 찔러, pliz ...

 
NaVolne :

도와주세요. 코드를 실행하고 싶지 않습니다.

정수 시작()
{
인터프리12;
{
if(PRICE_CLOSE>PRICE_OPEN)
pre12=OrderSend(Symbol(),OP_BUY,0.1,매도,3,"",Bid-100*포인트,매도+100*포인트,CLR_NONE);
}
반품;

}

즉, 계획대로 촛불이 오르면 열립니다.

모든 것이 컴파일됩니다. 그러나 테스트 중에는 아무 일도 일어나지 않습니다. 즉, 어떤 명령도 내리지 않습니다. 오류에 코를 찌르십시오, pliz ...

어떤 촛불을 지정하지 않았습니까? 차트에 현재? 전일? 지난주? 예를 들어 이전 일일 것이 ... 예를 들어 다음과 같을 것입니다.

if(iOpen(NULL,1440,1)< iClose (NULL, 1440,1 )) 모든 것은 iOpen/iClose 도움말에 설명되어 있습니다.

 
NaVolne :

도와주세요. 코드를 실행하고 싶지 않습니다.

정수 시작()
{
인터프리12;
{
if(PRICE_CLOSE>PRICE_OPEN)
pre12=OrderSend(Symbol(),OP_BUY,0.1,매도,3,"",Bid-100*포인트,매도+100*포인트,CLR_NONE);
}
반품;

}

즉, 계획대로 촛불이 오르면 열립니다.

모든 것이 컴파일됩니다. 그러나 테스트 중에는 아무 일도 일어나지 않습니다. 즉, 그는 명령을 내리지 않습니다. 오류에 코를 찔러, pliz ...

요점은 PRICE_CLOSE 및 PRICE_OPEN이 상수이며 함수가 아니며 시계열 배열도 아니라는 것입니다. 양초의 시가 및 종가 값을 얻으려면 함수( iOpeniClose ) 또는 시계열 배열( OpenClose )을 참조해야 합니다.

자세히 알아보려면 자습서 를 읽어보세요. 예를 들어 이 섹션에서는 미리 정의된 변수(필요한 시계열 배열, 열기 및 닫기 포함)에 대해 설명합니다.

 
Elenn :

이중 유형의 숫자로 작업할 때 변수에 값을 할당해야 하는 경우(예: 0) 작성자마다 철자가 다릅니다. 예를 들어 a=0; 또는 그래서 a = 0.0; 또는 그래서 a = 0.0000; 프로그램의 올바른 동작에 차이가 있습니까?

다음과 같은 경우 이해합니다.

 double a = 1 ;

컴파일러는 "1"을 int 유형의 값으로 처리하고 형변환 (int를 대상 유형 double으로)합니다.

그리고 다음의 경우:

 double a = 1.0

또는 (차이가 없습니다)

 double a = 1.0000

컴파일러는 "1.(xxxx)"을 double 유형의 값으로 처리하고 캐스트가 수행되지 않습니다.


추신: 예를 들어 PapaYozh 에게 감사드립니다. 위에 요약된 생각은 바로 그 직후에 나왔습니다.

그리고 유형을 다시 한 번 캐스팅하지 않을 때 컴파일러가 더 쉽다는 것을 알고 있습니까? 아니면 "캐스팅되지 않은" 유형의 라인이 ex4에 작성되었습니까? 성능 저하를 의미합니까? 컴파일러는 이론적으로 코드를 최적화해야 합니다.

숙련된 MQL4 프로그래머가 저를 수정해 드리겠습니다...

 
메가 자세한 답변에 감사드립니다. 읽었습니다, 이해합니다.
 
NaVolne :
메가 자세한 답변에 감사드립니다. 읽었습니다, 이해합니다.
교과서는 우리의 대답이 아니라 읽어야 합니다! :)) 커버부터 커버까지 자연스럽게.
 
LexAlex :

이 코드는 최근에 잘 작동했습니다... 이제 ERR_OFF_QUOTES 오류를 반환합니다. 티켓 번호를 손으로 쓴 경우에도 오류가 OrderDelete를 반환한다는 점에 유의하십시오. 누구든지 상황을 설명 할 수 있습니까? 고맙습니다.

동결 수준 일 수 있습니다. 계정에 대한 빈번한 작업으로 인해 계정과 브로커가 흐름을 중지한 것일 수 있습니다.