현재 의 모든 EA 계산이 완료되기 전에 새로운 틱이 올 확률은 얼마입니까? 이 경우에만 데이터가 오래되고 관련이없는 것 같습니다.
귀하의 코드가 얼마나 많은지 확인하십시오 - 저도 최근에 MT4 계산 속도가 제 고문에게 충분한지 의심했습니다. 지금까지는 제 머리로 충분하다는 것이 밝혀졌습니다. 제 코드는 약 18ms 동안 계산됩니다. 1초에 55번 나열되고 분당 10에서 70까지 틱이 오고 분당 50틱 이상이면 촛불이 켜집니다.
따라서 코드가 어떻게 작동하는지 확인하십시오.
int tik,barM1
int init(){
barM1 = Bars ;
tik = 0;
return ( 0 );
}
//_______________________________________________________
// это добавить в start()
//_______________________________________________________
int start= GetTickCount ();
// некие серьёзные вычисления...
tik++;
Print ( "Время вычисления " , GetTickCount ()-start, " миллисекунд." );
int counted = Bars ;
if (counted != barM1) {
print( "за один бар было принято " ,tik, "тиков" )
tik= 0 ;
barM1=counted;
}
EA 본문에서 계산할 때 iMACD 표시기 (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)의 소수점 이하 자릿수를 변경하는 방법은 무엇입니까? 결과는 4(즉, 0.0001)로 나오지만, 분석의 정확성을 위해서는 5(예를 들어, 0.00012)가 필요하다. 그리고 결국 MT4 단말기는 인디케이터 창의 차트에 정확히 5자리 값을 표시합니다.
EA 본문에서 계산할 때 iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0) 표시기의 소수점 이하 자릿수를 변경하는 방법은 무엇입니까? 결과는 4(즉, 0.0001)로 나오지만, 분석의 정확성을 위해서는 5(예를 들어, 0.00012)가 필요하다. 그리고 결국 MT4 단말기는 인디케이터 창의 차트에 정확히 5자리 값을 표시합니다.
아무것도 변경할 필요가 없습니다. 표준 표시기에서 정확도가 최대값(최대 8자리)으로 설정되어 있고 Print() 함수가 표시된다는 사실 때문에 데이터 출력의 정확도에 대해 잘못된 결론을 내렸습니다. 기본적으로 4자리까지 계산(예: Expert Advisors 내부)에서 최대 정밀도가 사용됩니다. 이를 확인하려면 DoubleToStr() 을 통해 double 을 출력해야 합니다. 예를 들면 다음과 같습니다.
아무것도 변경할 필요가 없습니다. 표준 표시기에서 정확도가 최대값(최대 8자리)으로 설정되어 있고 Print() 함수가 표시된다는 사실 때문에 데이터 출력의 정확도에 대해 잘못된 결론을 내렸습니다. 기본적으로 4자리까지 계산(예: Expert Advisors 내부)에서 최대 정밀도가 사용됩니다. 이를 확인하려면 DoubleToStr() 을 통해 double 을 출력해야 합니다. 예를 들면 다음과 같습니다.
그리고 우리는 다음과 같은 결과를 얻습니다.
맞아, 맞아, 맞아! ! ! Anatoly는 큰 존경심입니다. 그렇지 않으면 나는 이미 집착했습니다.
현재 의 모든 EA 계산이 완료되기 전에 새로운 틱이 올 확률은 얼마입니까? 이 경우에만 데이터가 오래되고 관련이없는 것 같습니다.
귀하의 코드가 얼마나 많은지 확인하십시오 - 저도 최근에 MT4 계산 속도가 제 고문에게 충분한지 의심했습니다. 지금까지는 제 머리로 충분하다는 것이 밝혀졌습니다. 제 코드는 약 18ms 동안 계산됩니다. 1초에 55번 나열되고 분당 10에서 70까지 틱이 오고 분당 50틱 이상이면 촛불이 켜집니다.
따라서 코드가 어떻게 작동하는지 확인하십시오.
확인을 위해 틱을 계산하는 표시기가 있습니다.
글쎄, 당신이 시작 가격 에 가지고 있다면 미안하지만 내가 간과 한 것입니다.
가격 = iOpen(NULL,PERIOD_M5,0); 닫힌 막대에서만 변경할 수 있습니다. 위의 코드는 if (counted != barM1) {
EA 본문에서 계산할 때 iMACD 표시기 (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)의 소수점 이하 자릿수를 변경하는 방법은 무엇입니까? 결과는 4(즉, 0.0001)로 나오지만, 분석의 정확성을 위해서는 5(예를 들어, 0.00012)가 필요하다. 그리고 결국 MT4 단말기는 인디케이터 창의 차트에 정확히 5자리 값을 표시합니다.
NormalizeDouble() 연산자가 문제를 해결합니다.
즉, NormalizeDouble (iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0),5)의 결과가 원하는 0.00012 ?
추신 추가 및 테스트 - 아무것도. 그냥 출력이 0.00010이고 4자리 숫자가 같을 뿐...
아니, 옳지 않아, 로저 .
IndicatorDigits() 보리스 참조. 하지만 지표 자체에 삽입해야 하기 때문입니다. 그것은 고문이 아니라 그를 구체적으로 언급할 것입니다.
추신 더보기: 이 기능은 코드가 있는 표시기에만 적합합니다. 그런 다음 iCustom()으로 호출할 수 있습니다.
그리고 iMACD()와 같이 "표준적으로" 호출되는 경우 올바른 솔루션을 모르겠습니다.
즉, NormalizeDouble(iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0),5) 의 결과는 원하는 0.00000 ?
네, 그러죠. 고문의 본문에 계산의 핵심 문구가 있었습니까? 그리고 분명히 표준 표시기에서는 이것이 불가능합니다(((
EA 본문에서 계산할 때 iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0) 표시기의 소수점 이하 자릿수를 변경하는 방법은 무엇입니까? 결과는 4(즉, 0.0001)로 나오지만, 분석의 정확성을 위해서는 5(예를 들어, 0.00012)가 필요하다. 그리고 결국 MT4 단말기는 인디케이터 창의 차트에 정확히 5자리 값을 표시합니다.
아무것도 변경할 필요가 없습니다. 표준 표시기에서 정확도가 최대값(최대 8자리)으로 설정되어 있고 Print() 함수가 표시된다는 사실 때문에 데이터 출력의 정확도에 대해 잘못된 결론을 내렸습니다. 기본적으로 4자리까지 계산(예: Expert Advisors 내부)에서 최대 정밀도가 사용됩니다. 이를 확인하려면 DoubleToStr() 을 통해 double 을 출력해야 합니다. 예를 들면 다음과 같습니다.
그리고 우리는 다음과 같은 결과를 얻습니다.
아무것도 변경할 필요가 없습니다. 표준 표시기에서 정확도가 최대값(최대 8자리)으로 설정되어 있고 Print() 함수가 표시된다는 사실 때문에 데이터 출력의 정확도에 대해 잘못된 결론을 내렸습니다. 기본적으로 4자리까지 계산(예: Expert Advisors 내부)에서 최대 정밀도가 사용됩니다. 이를 확인하려면 DoubleToStr() 을 통해 double 을 출력해야 합니다. 예를 들면 다음과 같습니다.
그리고 우리는 다음과 같은 결과를 얻습니다.
맞아, 맞아, 맞아! ! ! Anatoly는 큰 존경심입니다. 그렇지 않으면 나는 이미 집착했습니다.
인생의 진실은 이것이다 - "머리는 하나도 좋지만 둘은 더 좋다"(cit.)
변경할 필요가 없으며 표준 표시기에서 정확도가 최대값(최대 8자리)으로 설정됩니다.
그렇군요 저도 같은 의심이 들더라구요 :)