포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 1051

 
입찰가가 오래되었다는 것은 분명하지만 이 구성을 통해 현재 바에서 다른 입찰 개시 가격 으로 여러 포지션을 열 수 있기를 바랍니다. 테스터에서는 잘 작동하지만 데모에서는 하나의 포즈를 열고 즉시 닫습니다. 피하는 방법은 명확하지 않습니다.
 
rapid_minus :
답이 어디에 있는지 이해가 되지 않습니다. 이것이 의미하는 바입니다. "이 함수에는 0.1초마다 전문가의 중지 플래그 상태에 대한 기본 제공 검사가 있습니다."? 그렇다면 이 플래그를 어떻게 제거할 수 있습니까?

아니요, 끝까지 읽었다면 질문에 대한 답을 보았을 것입니다 ...

메모

표시기는 인터페이스 스레드에서 실행되고 속도를 늦추지 않아야 하므로 Sleep() 함수는 사용자 지정 표시기에서 호출할 수 없습니다. 이 기능에는 0.1초마다 전문가 정지 플래그의 상태를 검사하는 기능이 내장되어 있습니다. 전략 테스터 의 Sleep() 함수는 지연을 일으키지 않습니다.


 
LRA :

시작하려면 이것을 표시기의 끝에 밀어 넣으십시오. 화면에 레이블이 표시되면 레이블에 필요한 정보를 표시하는 방법을 파악하십시오. 여기에서 그들은 조언하지만 모두가 그것을 자신에게 넣습니다.

죄송합니다, 계속할 수 없습니다(
정수 = 25;

if(H==H1&&H1==H2)
{if(J == true) {ObjectCreate(PatternText[shift],
OBJ_TEXT, 0, 시간[shift1], 높음[shift1] + 범위*5);
ObjectSetText(PatternText[shift], "패턴", 10, "Arial", 빨강);
downArrow[shift1] = 높음[shift1] + 범위*0.5;}if(setalert == 0 && Alert == true) {pattern = "pattern";setalert = 1;}}




if(ObjectFind(0,"Text")<0) // 정보를 표시할 레이블이 있는지 확인
{
ObjectCreate("텍스트", OBJ_LABEL , 0, 0, 0); // 생성
ObjectSet("텍스트", OBJPROP_CORNER, 1); // 오른쪽 상단 모서리
ObjectSet("텍스트", OBJPROP_XDISTANCE, 10); //엑스
ObjectSet("텍스트", OBJPROP_YDISTANCE, 10); //와이
}
ObjectSetText("텍스트", string(숫자), 14,"Arial",Black); // 라벨에 출력

}
반환(0);
}
 
AlexeyVik : 당신이 저를 놀라게 했습니다... mathlog10

문제를 해결하는 것이 훨씬 쉽습니다.

물론 그와 함께하는 것이 더 쉽습니다 .... 아마도 그는 결석했을 것입니다. 아니면 분실... 내가 가장 좋아하는 TurboPascal이 확실히 사라졌습니다. 로그를 사용하여 지수를 했습니다.
 
고맙습니다!
 
LRA :
물론 그와 함께하는 것이 더 쉽습니다 .... 아마도 그는 결석했을 것입니다. 아니면 분실... 내가 가장 좋아하는 TurboPascal이 확실히 사라졌습니다. 로그를 사용하여 지수를 했습니다.

업데이트된 mql4로 전환한 후 한동안 설명서에 오류가 있었습니다. MathLog10 을 클릭하면 MathLog 도움말이 열립니다.

서비스데스크에 이것에 대해 글을 썼는데 반은 고치고 반은 그대로 놔뒀어요...

 
동일한 가격과 시간 척도로 메인 창의 막대를 완전히 반복하는 표시기가 있습니다. 질문: 차트를 스크롤할 때 기본 창에서와 같은 방식으로 표시기 창에 눈금을 표시하는 CHARTSET CHARTGET이 있습니까?
 
AlexeyVik :

log(10)은 실제로 1이 아니지만 mql에 십진 로그가 없다는 사실에 놀랐습니다...

그리고 그것은 무엇입니까? https://docs.mql4.com/en/math/mathlog10 텍스트에 오류가 있지만.

문제를 해결하는 것이 훨씬 쉽습니다.

마지막 메시지부터 바로 답변드리겠습니다.

로그가 무엇인지 이해하고 그 코드에 왜 있는지 이해하지 못했지만 그 친구와 통신을 한 후 이것이 소수점 이하 자릿수를 결정하기위한 것임을 깨달았습니다. 맞습니까?

이 작업을 수행하는 다른 방법은 없나요? 코드 ( int )에 있는 이유는 무엇입니까? 내가 제공한 라인보다 당신의 방법이 더 나은 이유는 무엇입니까?))

정말 감사합니다)

 
Igemon :

마지막 메시지부터 바로 답변드리겠습니다.

로그가 무엇인지 이해하고 그 코드에 왜 있는지 이해하지 못했지만 그 친구와 통신을 한 후 이것이 소수점 이하 자릿수를 결정하기위한 것임을 깨달았습니다. 맞습니까?

이 작업을 수행하는 다른 방법은 없나요? 코드 ( int )에 있는 이유는 무엇입니까? 당신의 방법이 내가 제공한 라인보다 나은 이유는 무엇입니까?))

정말 감사합니다)

예, 소수 자릿수 를 결정합니다. 이는 로트가 일부 공식에 의해 결정되고 결과에 허용되는 것보다 더 많은 소수 자릿수가 있을 수 있는 경우 로트 값을 정규화하는 데 필요합니다. 어떤 경우에는 어리석게 듀스를 넣을 수 있지만 오류가 발생할 수 있으므로 프로그래밍 방식으로 결정하는 것이 좋습니다.

다른 방법으로 가능합니다. 문제를 해결하기 위한 두 가지 옵션이 이미 있습니다. 숫자를 문자열로 변환하고, 문자열의 길이를 결정하고, "점" 문자의 인덱스와 문자열의 길이와 인덱스의 차이를 찾는 옵션이 있습니다. 점의 값은 숫자의 소수 부분 값이 됩니다. 그리고 mql5 포럼에는 더 정통하고 더 간단한 몇 가지 옵션이 있습니다.

여기 내 옵션 중 하나가 있습니다.

 int fun( double ch)
{
 int i = 0 ;
 double res = 0 , ostatok = fmod (ch, 1 );
 while (ostatok != 0 && i < 16 ) // число взято от фонаря для прерывания зацикленности
  {
   res = ostatok * 10 ;
   ostatok = NormalizeDouble ( fmod (res, 1 ), 8 ); // Вроде 8 максимально
   i++;
  }
 return (i);
} /*******************************************************************/

이 함수는 절대적으로 임의의 숫자의 소수 자릿수를 결정합니다.

알고리즘은 엄청나게 간단합니다. 우리는 1로 나눈 나머지가 0보다 몇 번이나 더 클지 계산합니다.

나는 내 방식이 더 낫다고 말하지 않았다. 각 프로그래머는 문제에 대한 해결책을 보고 글을 씁니다.

double 유형의 숫자는 분수 부분에 유효 숫자가 없더라도 형식이 예를 들어 2.0이며 완전히 정확하지 않으며 일반 정수를 얻기 위해 암시적으로 int 유형으로 캐스트됩니다. .

 

메모

표시기는 인터페이스 스레드에서 실행되고 속도를 늦추지 않아야 하므로 Sleep() 함수는 사용자 지정 표시기에서 호출할 수 없습니다. 이 기능에는 0.1초마다 전문가 정지 플래그 상태를 검사하는 기능이 내장되어 있습니다. 전략 테스터 의 Sleep() 함수는 지연을 일으키지 않습니다.

모두가 얼마나 똑똑한지 - 무섭습니다. 그들은 읽는 법을 모릅니다. 결국 저는 테스터에서 슬립이 무시되었다고 썼습니다(이해할 수 있음). 그러나 포지션은 표시된 만큼 열려 있습니다. 그러나 데모에서는 슬립이 작동하지 않으며 한 위치만 열리고 해당 위치는 즉시 닫힙니다. 이것은 내가 해결할 수 없는 문제입니다.