오류, 버그, 질문 - 페이지 101

 
Urain :

등등.

if(a==0){expression}은 a가 0이고 true이면 {expression}을 실행한다는 의미입니다.

if(a=0){expression} 은 if(a){a=0;expression} 과 동일하므로 a가 true이면 { a assign 0, expression}입니다.

두 번째는 정확하지 않습니다. 이렇게 쓰는 것이 좋습니다.

if(a=x) { expression } 변수 a에 값 x를 할당하고 그 이후에 a가 0이 아니면 표현식을 실행합니다.

if(a=0) { } 최적화 후, a=0만 남습니다.

 
mql5 :

두 번째는 정확하지 않습니다. 이렇게 쓰는 것이 좋습니다.

if(a=x) { expression } 변수 a에 값 x를 할당하고 그 이후에 a가 0이 아니면 표현식을 실행합니다.

if(a=0) { } 최적화 후, a=0만 남습니다.

소리는 그대로 왼쪽에서 오른쪽으로 표현식이 실행됩니다.

그러므로 처음에는 임무가 있고 그 다음에는 진실이 확인됩니다.

[삭제]  
Renat :

다음과 같이 다소:

이 코드 는 최대 볼륨 을 계산할 뿐만 아니라 기호 설정의 한계에 정확히 맞춥니다.

무언가를 계산하십시오 - 계산하지만 입력하면 계산 된 이유를 잊어 버립니다.

   double minvol= SymbolInfoDouble (symbol, SYMBOL_VOLUME_MIN );
   if (lot<minvol) lot=minvol;

이때 로트 값은 최소 마진으로 모든 가용 마진을 소비하는 방식으로 계산됩니다.

이 값이 최소한 볼륨 단계만큼 증가하면 포지션을 열기에 충분한 자금이 없을 것입니다.

그러나 인용된 코드의 두 번째 줄은 if 아래의 조건이 충족되면 로트 값을 증가시키며, volume min = 0.1이고 volume step = 0.01이 실제로 발생하기 때문에 volume step 값보다 훨씬 더 큰 값으로 증가시킬 수 있습니다.

그리고 아래의 이 코드에서 0으로 나누기가 발생할 수 있으며 이로부터 보호 기능이 없습니다.

   double stepvol= SymbolInfoDouble (symbol, SYMBOL_VOLUME_STEP );
   lot=stepvol* NormalizeDouble (lot/stepvol, 0 );

SymbolInfoDouble()이 0을 반환하면 그게 전부입니다. 0으로 나누면 MQL5 프로그램이 싹에서 끝나죠? 0을 반환할 수 없습니까? 여기 사람들은 정보 함수가 종종 0을 반환한다고 불평합니다. "0을 반환하지 않을 것"이라고 믿을 수는 없습니다. 첫째, 반환할 수 있고 둘째로 0으로 나누는 것은 치명적이기 때문입니다.

"적합 정확도"에 대한 덜 중요한 의견도 있지만 실제로는 그다지 중요하지 않습니다. 즉, 심각한 결과가 없으므로 선명하게 할 수 없습니다.

코드가 "모범적"이라는 사실에 대한 가능한 주장을 예상하면서 나는 다음과 같이 지적합니다. 얼마나 많은 제품 사용자가 그러한 "나쁜 위치"를 찾아 올바르게 수정할 수 있습니까?

그들에게 이것은 "개발자의 코드"입니다. 찾아 볼 예입니다.

 

모든 필수 필드를 채웠을 때 "다음" 버튼이 활성화되지 않는 이유는 무엇입니까?

 
EvgeTrofi :

모든 필수 필드를 채웠을 때 "다음" 버튼이 활성화되지 않는 이유는 무엇입니까?

우편으로 뉴스를 받기 위해서는 미리미리 전달해야 합니다.
 
simpleton :

무언가를 계산하십시오 - 계산하지만 입력하면 계산 된 이유를 잊어 버립니다.

코드가 "모범적"이라는 사실에 대한 가능한 주장을 예상하면서 나는 다음과 같이 지적합니다. 얼마나 많은 제품 사용자가 그러한 "나쁜 위치"를 찾아 올바르게 수정할 수 있습니까?

코드는 대략적인 것이었지만(두 부분을 복사하여 붙여넣기) 귀하의 의견은 정확합니다.

수정된 버전은 다음과 같습니다.

 double CalculateMaxVolume( string symbol)
  {
   double price= 0.0 ;
   double margin= 0.0 ;
//--- select lot size
   if (! SymbolInfoDouble (symbol, SYMBOL_ASK ,price))                return ( 0.0 );
   if (!OrderCalcMargin( ORDER_TYPE_BUY ,symbol, 1.0 ,price,margin)) return ( 0.0 );
   if (margin<= 0.0 )                                            return ( 0.0 );

   double lot= NormalizeDouble ( AccountInfoDouble ( ACCOUNT_FREEMARGIN )/margin, 2 );
//--- normalize and check limits
   double stepvol= SymbolInfoDouble (symbol, SYMBOL_VOLUME_STEP );
   if (stepvol> 0.0 )
     {
       double newlot=stepvol* NormalizeDouble (lot/stepvol, 0 );
       if (newlot>lot) lot= NormalizeDouble (newlot-stepvol, 2 );
       else            lot=newlot;
     }

   double minvol= SymbolInfoDouble (symbol, SYMBOL_VOLUME_MIN );
   if (lot<minvol) lot= 0.0 ;   // 

   double maxvol= SymbolInfoDouble (symbol, SYMBOL_VOLUME_MAX );
   if (lot>maxvol) lot=maxvol;
//--- return trading volume
   return (lot);
  }
 
gumgum :

그리고 왜 session_index++; session_index=1이 이미 false인 경우:

악기의 세션 수를 미리 알 수 없습니다. 따라서 각 세션을 번호로 요청합니다. 사실이라면

session_exist= SymbolInfoSessionQuote (symbol,day,session_index,start,finish);

그런 다음 우리는 시작과 끝의 시간에 관심이 있습니다. 잘못된 수신됨 - 이 번호를 사용하는 세션이 없습니다.

 
Rosh :

악기의 세션 수를 미리 알 수 없습니다. 따라서 각 세션을 번호로 요청합니다. 사실이라면

그런 다음 우리는 시작과 끝의 시간에 관심이 있습니다. 잘못된 수신됨 - 이 번호를 사용하는 세션이 없습니다.

그리고 ...... 왜 금요일에는 모든 것이 24:00에 끝나지만 실제로는 23:00에 끝나는 겁니까?
 
gumgum :
그리고 ...... 왜 금요일에는 모든 것이 24:00에 끝나지만 실제로는 23:00에 끝나는 겁니까?
그것이 서버에 있는 방식이기 때문입니다. 확인해보겠습니다. 감사합니다.
 
이제 프로필에서 이메일을 변경할 수 있다는 것을 이해했습니다. 이제 이메일 필드를 변경할 수 있지만 저장되지는 않습니다!