prev_calculated - 페이지 10

 
Dmitry Fedoseev :
결정하지 않습니다. 몇 개의 막대가 지속되는 연결 해제가 있을 것이며, 여러 막대는 가비지로 초기화되지 않을 것입니다.
알렉세이 코지친 :
아니면, 위에서 Dmitry가 말했듯이 여러 마디에서 연결이 끊어졌습니다... 그런데, 연결이 끊어지면 prev_calculated도 0을 반환합니까?

분명히 이 시간에 의사 소통에 단절이 있었습니다.

2016.10.19 04:46:13.770 Network '4092672': scanning network finished
2016.10.19 04:45:37.260 Network '4092672': scanning network for access points
2016.10.19 04:45:36.630 Network '4092672': trading has been enabled - hedging mode
2016.10.19 04:45:36.630 Network '4092672': terminal synchronized with MetaQuotes Software Corp.
2016.10.19 04:45:36.000 Network '4092672': previous successful authorization performed from 31.173.80.3 on 2016.10.18 17:51:14
2016.10.19 04:45:36.000 Network '4092672': authorized on MetaQuotes-Demo through Access Point SG Singapore (ping: 583.86 ms)
2016.10.19 04:42:57.680 Network '4092672': connection to MetaQuotes-Demo lost

그리고 아마도 prev_calculated는 중단될 때 0을 반환합니다.

글쎄, 그것은 긴 연결 끊김이었고 prev_calculated의 다른 재설정을 일으킨 원인은 무엇입니까?

이 라인에서

2016.10.18 23:51:34.895 Network '4092672': scanning network finished
2016.10.18 23:51:20.865 Network '4092672': scanning network for access points

위의 것까지, 이와 같은 거래 기록 외에 다른 기록은 없습니다.

2016.10.19 00:00:36.066 Trades   '4092672': cancel order #103987819 buy stop 0.10 USDJPY at 103.977 sl: 103.377 tp: 104.077

이전 게시물에서 prev_calculated 재설정 횟수를 볼 수 있습니다.

 
Alexey Kozitsyn :

잠재적으로 jamb는 다음과 같을 수 있습니다.

if (rates_total > prev_calculated)
   {
    minEquity = 0 ;
    maxEquity = 0 ;
   }
   minEquity = NormalizeDouble ( fmin ((minEquity == 0 ? bal : minEquity), equity), 2 );
    maxEquity = NormalizeDouble ( fmax (maxEquity, equity), 2 );

새 막대가 오면 값을 0으로 재설정합니다. 그러나 권장하지 않는 방식으로 minEquity와 0이 같은지 확인합니다.

내 말의 확인 - 당신의 그림. 그것은 당신이 말했듯이 "쓰레기"값이 거의 0에 있음을 보여줍니다.

그리고 당연히 "가비지" 값이 있는 데이터 창을 그림에 추가하는 것이 좋습니다.

이 방법을 권장하지 않는 이유를 자세히 설명해 주시겠습니까?

minEquity == 0인 코드의 this(minEquity == 0 ? bal : minEquity) 부분은 조금 더 일찍 얻은 bal 값을 반환하고 fmin() 함수가 끝날 때까지 minEquity 값 은 변경되지 않습니다.

동의하지만 그런 철자는 약간 위험합니다 ... 그러나 그것은 문제가 아닙니다.

 
Alexey Viktorov :

이 방법을 권장하지 않는 이유를 자세히 설명해 주시겠습니까?

minEquity == 0인 코드의 this(minEquity == 0 ? bal : minEquity) 부분은 조금 더 일찍 얻은 bal 값을 반환하고 fmin() 함수가 끝날 때까지 minEquity 값 은 변경되지 않습니다.

동의하지만 그런 철자는 약간 위험합니다 ... 그러나 그것은 문제가 아닙니다.

나는 이것에 대해 구체적으로 말했습니다: minEquity == 0. 당신은 평등을 위해 double을 비교합니다. 이것은 값이 0으로 떨어지는 것을 설명할 수 있습니다.
 
Alexey Kozitsyn :
나는 이것에 대해 구체적으로 말했습니다: minEquity == 0. 당신은 평등을 위해 double을 비교합니다. 이것은 값이 0으로 떨어지는 것을 설명할 수 있습니다.

분명히 minEquity == 0.0이 더 정확할 것입니다 ... 나는 그것에 익숙해 질 수 없습니다.

나는 마지막 문장을 전혀 이해하지 못했다. 0 이전의 값은 무엇입니까?

 
Alexey Viktorov :

분명히 minEquity == 0.0이 더 정확할 것입니다 ... 나는 그것에 익숙해 질 수 없습니다.

나는 마지막 문장을 전혀 이해하지 못했다. 0 이전의 값은 무엇입니까?

그러나 여기서는 암시적 유형 캐스팅이 오류를 일으킬 수 있는지 여부를 알지 못하며 원칙적으로 실제 유형 비교에 대해 이야기하고 있었습니다. 저것들. 여기서는 신뢰성을 위해 다음과 같이 작성합니다.

CompareDoubles( minEquity, 0.0 );

bool CompareDoubles( double number1, double number2)
  {
   if ( NormalizeDouble (number1-number2, 8 )== 0 ) return ( true );
   else return ( false );
  }
 
Alexey Kozitsyn :

그러나 여기서는 암시적 유형 캐스팅이 오류를 일으킬 수 있는지 여부를 알지 못하며 원칙적으로 실제 유형 비교에 대해 이야기하고 있었습니다. 저것들. 여기서는 신뢰성을 위해 다음과 같이 작성합니다.

CompareDoubles( minEquity, 0.0 );

bool CompareDoubles( double number1, double number2)
  {
   if ( NormalizeDouble (number1-number2, 8 )== 0 ) return ( true );
   else return ( false );
  }


예, 제 버전에서는 소수점 이하 두 자리의 돈이 고려됩니다. 이것들은 이것에 너무 신중하게 접근하기 위한 인용문이 아닙니다.
 
Alexey Viktorov :
예, 제 버전에서는 소수점 이하 두 자리의 돈이 고려됩니다. 이것들은 이것에 너무 신중하게 접근하기 위한 인용문이 아닙니다.

그것은 엄격함에 관한 것이 아니라 정확성에 관한 것입니다. 귀하의 경우 버퍼에 0 값이 기록될 수 있습니다. 그러한 정밀도가 필요하지 않은 경우 다음을 수행하십시오.

if (rates_total > prev_calculated)
   {
    minEquity = - 1.0 ;
    maxEquity = 0.0 ;
   }
   minEquity = NormalizeDouble ( fmin ((minEquity < 0 ? bal : minEquity), equity), 2 );
    maxEquity = NormalizeDouble ( fmax (maxEquity, equity), 2 );

그러면 오류가 발생하지 않습니다.

 
Alexey Kozitsyn :

그것은 엄격함에 관한 것이 아니라 정확성에 관한 것입니다. 귀하의 경우 버퍼에 0 값이 기록될 수 있습니다. 그러한 정밀도가 필요하지 않은 경우 다음을 수행하십시오.

if (rates_total > prev_calculated)
   {
    minEquity = - 1.0 ;
    maxEquity = 0.0 ;
   }
   minEquity = NormalizeDouble ( fmin ((minEquity < 0 ? bal : minEquity), equity), 2 );
    maxEquity = NormalizeDouble ( fmax (maxEquity, equity), 2 );

그러면 오류가 발생하지 않습니다.

내가 왜 이렇게 멍청해??? minEquity를 0으로 초기화하지 않는 것이 더 낫다고 어떻게 추측하지 않을 수 있습니까? 그러면 모든 것이 훨씬 쉬워집니다 ...

if (rates_total > prev_calculated)
   {
    minEquity = DBL_MAX ;
    maxEquity = 0.0 ;
   }
   minEquity = NormalizeDouble ( fmin (minEquity, equity), 2 );
    maxEquity = NormalizeDouble ( fmax (maxEquity, equity), 2 );

maxEquity = DBL_MIN ;

 
Alexey Viktorov :

내가 왜 이렇게 멍청해??? minEquity를 0으로 초기화하지 않는 것이 더 낫다고 어떻게 추측하지 않을 수 있습니까? 그러면 모든 것이 훨씬 쉬워집니다 ...

if (rates_total > prev_calculated)
   {
    minEquity = DBL_MAX ;
    maxEquity = 0.0 ;
   }
   minEquity = NormalizeDouble ( fmin (minEquity, equity), 2 );
    maxEquity = NormalizeDouble ( fmax (maxEquity, equity), 2 );


아니면 이렇게...
 
Alexey Kozitsyn :
아니면 이렇게...
그러나 일반적으로 이것은 문제가 아닙니다. 어떻게든 우회할 수 있었지만 표시기가 시작될 때 표시기 버퍼 의 쓰레기가 올바르지 않습니다.