초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 456

 
E_Ghazaryan :
예, 정확히 =D))) 이미 첨부되어 있습니다.)))

이러한 모든 매개변수는 표시기 이름 뒤에 쉼표로 구분된 iCustom()에 나열되어야 하며, 그 뒤에 두 개의 매개변수가 더 있어야 합니다. 버퍼 번호와 데이터를 가져오는 막대 번호입니다. 저것들.:

iCustom(Symbol(), Period() , "_MTF_ADX3", 0, 500, 6, 8, 14, 6, 6, 2, true, false, buffer_number, bar_number).

나열된 모든 값은 EA의 외부 변수로 설정될 수 있으며 하드 코딩된 값 대신 iCustom()에 이러한 변수의 이름을 입력할 수 있습니다.

 

이유를 말하지 마세요:

이중 d = 0.07;

d = NormalizeDouble (d,2);

두 경우 모두 d== 0.07000000000000001

소수점 이하 2자리는 어떻게 남기나요?

 
pusheax :

이유를 말하지 마세요.

이중 d = 0.07;

d = NormalizeDouble(d,2);

두 경우 모두 d== 0.07000000000000001

소수점 이하 2자리는 어떻게 남기나요?


Print()를 사용하여 저널에 인쇄할 때 정규화된 숫자는 예상보다 더 많은 소수 자릿수 를 포함할 수 있습니다. 예를 들어,

   double a= 76.671 ;             // нормализованное число с 3 знаками после запятой
   Print ( "Print(76.671)=" ,a);   // выведем его как есть
   Print ( "DoubleToString(a,8)=" , DoubleToString (a, 8 )); // выведем с заданной точностью

터미널에서 제공:

   DoubleToString (a, 8 )= 76.67100000

   Print ( 76.671 )= 76.67100000000001


즉, 인쇄의 경우 추가 값의 출력은 문제가 되지 않습니다.

Документация по MQL5: Преобразование данных / NormalizeDouble
Документация по MQL5: Преобразование данных / NormalizeDouble
  • www.mql5.com
Преобразование данных / NormalizeDouble - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Karputov Vladimir :


Print()를 사용하여 저널에 인쇄할 때 정규화된 숫자는 예상보다 더 많은 소수 자릿수 를 포함할 수 있습니다. 예를 들어,

터미널에서 다음을 제공합니다.


즉, 인쇄의 경우 추가 값의 출력은 문제가 되지 않습니다.

감사합니다. 0.07이 많은 포지션을 열려고 하면 오류가 발생합니다(이 경우라고 생각했습니다). 분명히 문제는 다른 것이므로 더 이해하겠습니다.
 
pusheax :
감사합니다. 0.07이 많은 포지션을 열려고 하면 오류가 발생합니다(이 경우라고 생각했습니다). 분명히 문제는 다른 것이므로 더 이해하겠습니다.
먼저 오류 번호로 설명을 봐야 합니다. 이렇게 하면 검색 경로가 단축됩니다.
 

좋은 저녁이에요

동적 배열 선언

이중 all_order[][10];

OnInit 재정의

ArrayResize(all_order, 20);

함수에 데이터를 입력합니다

무효 OR_spisok(더블 a0, 더블 a1, 더블 a2, 더블 a3, 더블 a4, 더블 a5)

{

정수 a10 = 정수(a0);

all_order[a10][0]=a0;

all_order[a10][1]=a1;

all_order[a10][2]=a2;

all_order[a10][3]=a3;

all_order[a10][4]=a4;

all_order[a10][5]=a5;

}

세 줄은 잘 작동하고 4개의 웨지

2015.10.09 20:13:47.908 3102 EURUSD,H1: '3102.mq4'의 범위를 벗어난 배열(393.10)

393, 10은 다음과 같습니다.

all_order[a10][0]=a0;

실수가 어디 있습니까?

#property strict 줄을 제거했습니다.

스크립트가 작동합니다. 이 줄 없이 계속할 수 있습니까?

 
pr0gre5 :

좋은 저녁이에요

동적 배열 선언


#property strict 줄을 제거했습니다.

스크립트가 작동합니다. 이 줄 없이 계속할 수 있습니까?

 
Artyom Trishkin :

이러한 모든 매개변수는 표시기 이름 뒤에 쉼표로 구분된 iCustom()에 나열되어야 하며, 그 뒤에 두 개의 매개변수가 더 있어야 합니다. 버퍼 번호와 데이터를 가져오는 막대 번호입니다. 저것들.:

iCustom(Symbol(), Period(), "_MTF_ADX3", 0, 500, 6, 8, 14, 6, 6, 2, true, false, buffer_number, bar_number).

나열된 모든 값은 EA의 외부 변수로 설정될 수 있으며 하드 코딩된 값 대신 iCustom()에 이러한 변수의 이름을 입력할 수 있습니다.

답변 해주셔서 감사합니다. 그러나 사실은 처음에 이 작업을 수행했지만 잘못된 값을 얻었을 때 EA가 표준 표시기 매개변수를 사용하도록 iCustom에서 매개변수를 제거하기로 결정했다는 것입니다. 그러나 두 경우 모두 EA는 잘못된 값을 얻습니다. 즉, 예를 들어 Alert는 파란색 선 30.32362의 값을 제공하고 지표 차트를 보면 같은 위치에 22.3320의 값이 있습니다. 그리고 다른 라인도 마찬가지입니다.
 
E_Ghazaryan :
답변 해주셔서 감사합니다. 하지만 사실은 처음에는 이 작업을 수행했지만 잘못된 값을 얻었을 때 EA가 표준 표시기 매개변수를 사용하도록 iCustom에서 매개변수를 제거하기로 결정했습니다. 그러나 두 경우 모두 EA는 잘못된 값을 얻습니다. 즉, 예를 들어 Alert는 파란색 선 30.32362의 값을 제공하고 지표 차트를 보면 같은 위치에 22.3320의 값이 있습니다. 그리고 다른 라인도 마찬가지입니다.
지표에서 데이터를 가져오는 코드를 표시합니다.
 
Artyom Trishkin :
지표에서 데이터를 가져오는 코드를 표시합니다.

코드는 훌륭했습니다. 그런데 어드바이저가 룰대로 안 되는 게 뭐가 문제인지 알아보기 위해 이 부분을 따로 잘라서 테스트를 시작했다.

이중 Ind_Blue=iCustom(NULL, 0, "_MTF_ADX3",1,0);

이중 Ind_Red=iCustom(NULL, 0, "_MTF_ADX3",2,0);

경고 (" Ind_Blue= " ,Ind_Blue , " Ind_Red= " ,Ind_Red);

어드바이저 파일도 첨부합니다. 나는 당신의 시간을 낭비하고 싶지 않지만 문제를 찾을 수 없습니다.

그리고 같은 문제가 있는 또 다른 유사한 지표(Adx mtf). mq4 파일이 있습니다. 하지만 코드에는 문제가 없어 보입니다.

파일:
_MTF_ADX3.ex4  5 kb
Adx_mtf.ex4  21 kb
Adx_mtf.mq4  6 kb
사유: