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

 
Alexander Nikolaev :
최근에 MT4 터미널에서 직접 생성된 새로 생성된 데모 계정을 Metaquotes Demo 서버에 입력할 수 없는 이유를 누가 압니까? 일주일 전에 생성되었습니다. 처음 2일 동안은 작동하지만 잠시 후 계정이 사라지고 비밀번호가 올바르지 않은 것처럼(복사했지만 잘못 입력할 수 없음) 어드바이저를 테스트하려면 계정을 다시 열어야 합니다. 매주 새 계정을 만드는 것과 같습니까?
너무 오래 전에 계정에 활동이 없으면 닫힙니다. 새 것을 만들고 그것에 대해 걱정하지 마십시오.
 
Denis Sartakov :

방금 최근에 그러한 기능을 작성했습니다. 스스로 알아 내려고 노력하십시오.

작동하지 않으면 설명하겠습니다.

고맙습니다

 

한 가지 더 질문:

CHART_IS_MAXIMIZEDCHART_IS_MINIMIZED 에 대한 설명은 이러한 속성이 읽기 전용이라고 말하지 않지만 ChartSetInteger(ChartID(),CHART_IS_MAXIMIZED,true); 작동하지 않습니다. 무엇이 문제일 수 있습니까?

 

왜 컴파일되지 않습니까?

 template < typename T>
void f(T &t)
{
   t.f();
}

void OnStart ()
{
   class Q
   {
   public :
       void f() {}
   }q;
   
   f(q);
}

이전 버전의 컴파일러는 일반적으로 이러한 구성을 먹었고 유효한 초기 코드와 오류를 재컴파일했습니다. 실수로 또는 의도적으로 끊어졌습니까?

 
pavlick_ :

왜 컴파일되지 않습니까?

이전 버전의 컴파일러는 일반적으로 이러한 구성을 먹었고 유효한 초기 코드와 오류를 재컴파일했습니다. 실수로 또는 의도적으로 끊어졌습니까?

그러나 언어 사양에 따라 함수 내부에 클래스를 만들 수 있습니까?

 
Konstantin :

그러나 언어 사양에 따라 함수 내부에 클래스를 만들 수 있습니까?

어떤 언어 사양? Mcl은 실제로 문서화되지 않았지만 참조 책에서 C ++에서는 일반적인 관행입니다.

현지 수업

클래스 선언은 네임스페이스 범위(이 경우 일반 클래스를 정의함), 다른 클래스 정의 내부(이 경우 중첩 클래스 를 정의함), 함수 본문 내부(이 경우 로컬 클래스 를 정의 함)에 나타날 수 있습니다. . 이러한 클래스의 이름은 함수 범위 내에서만 존재하며 외부에서는 액세스할 수 없습니다.

http://en.cppreference.com/w/cpp/language/class

 

그리고 여느 때와 같이 침묵했다. 일반적으로 문제를 해결하는 것은 어렵지 않습니다. 함수 내부에 우아한 배치 대신에 무시무시한 이름으로 internal__Chart_bar_shift_Comp로 외부로 가져갈 것입니다. 그러나 문제는 다릅니다. 그들은 그것을 가져 와서 비슷한 디자인을 잘라 냈습니다. 저것들. 일반적으로 내 낙서가 내일 편집될 것이라는 보장은 없습니다. 예를 들어 키를 사용하여 방언 -std=mql18을 선택하는 것이 가능합니다. 그러나 아니요, 이전 버전과의 호환성에 대해서는 신경 쓰지 마십시오. 이것이 일부 gcc에서 가능하다고 상상하기 어렵습니다.

아마도 간단한 스크립트 mql4는 거래 플랫폼에 충분했을 것입니다. 더 나은 방법은 스크립트/전문가와 함께 플러그인(동적 라이브러리에서)을 가져오는 것입니다. 하지만 아니요. 여기에서 흔히 말하는 "인프라"처럼 크고 중요한 곳에 자체 인프라가 필요합니다.

 
pavlick_ :

어떤 언어 사양? Mcl은 실제로 문서화되지 않았지만 참조 책에서 C ++에서는 일반적인 관행입니다.

지역 수업

클래스 선언은 네임스페이스 범위(이 경우 일반 클래스를 정의함), 다른 클래스 정의 내부(이 경우 중첩 클래스 를 정의함), 함수 본문 내부(이 경우 로컬 클래스 를 정의 함)에 나타날 수 있습니다. . 이러한 클래스의 이름은 함수 범위 내에서만 존재하며 외부에서는 액세스할 수 없습니다.

http://en.cppreference.com/w/cpp/language/class

어딘가에서 이것이 mql5 사양에서 제공되지 않는다는 토론을 만났습니다. 포럼을 살펴보십시오. 또한 제공되지 않는 양고기에 대한 토론도 있었습니다.

 
pavlick_ :

그리고 여느 때와 같이 침묵했다. 일반적으로 문제를 해결하는 것은 어렵지 않습니다. 함수 내부에 우아한 배치 대신에 무시무시한 이름으로 internal__Chart_bar_shift_Comp로 외부로 가져갈 것입니다. 그러나 문제는 다릅니다. 그들은 그것을 가져 와서 비슷한 디자인을 잘라 냈습니다. 저것들. 일반적으로 내 낙서가 내일 편집될 것이라는 보장은 없습니다. 예를 들어 키를 사용하여 방언 -std=mql18을 선택하는 것이 가능합니다. 그러나 아니요, 이전 버전과의 호환성에 대해서는 신경 쓰지 마십시오. 이것이 일부 gcc에서 가능하다고 상상하기 어렵습니다.

아마도 간단한 스크립트 mql4는 거래 플랫폼에 충분했을 것입니다. 더 나은 방법은 스크립트/전문가와 함께 플러그인(동적 라이브러리에서)을 가져오는 것입니다. 하지만 아니요. 여기에서 흔히 말하는 "인프라"처럼 크고 중요한 곳에 자체 인프라가 필요합니다.

솔직히 말해서 왜 이렇게 하는지 이해가 되지 않습니다. 모든 보조 엔터티를 별도의 프로그램 소스 목록(예: util.mqh)에 넣는 것이 더 쉽습니다.

 
Konstantin :

솔직히 말해서 왜 이렇게 하는지 이해가 되지 않습니다. 모든 보조 엔터티를 별도의 프로그램 소스 목록(예: util.mqh)에 넣는 것이 더 쉽습니다.

이것은 보편적이지 않고 한 기능에서 한 번 사용되는 이진 검색의 술어입니다. 왜 어딘가에 가져와야합니까? 예를 들어, 구조체의 배열이 있고(비교 연산자가 없고, <를 사용하여 서투르게 비교할 수 없거나, 비교 조건이 매우 까다롭습니다) 이진 검색을 통해 요소를 찾고 싶습니다. 더하기 라이브러리에서 알고리즘 함수는 펑터를 사용합니다(람다를 전달하는 것이 편리함). 내부 에서 배열의 요소를 비교합니다. 제 생각에는 매우 우아한 솔루션입니다.

 int main()
{
     typedef pair< int , double > myPair; // typedef to shorten the type name
    vector <myPair> vec( 5 );

    myPair low_val; // reference value (set this up as you want)
    auto it = lower_bound(vec.begin(), vec.end(), low_val, 
        [](myPair lhs, myPair rhs) -> bool { return lhs.second < rhs.second; });
}

그러나 µl의 한계를 고려하여 술어 클래스의 인스턴스를 만들었습니다.