원칙적으로 그런 경우는 없어야 합니다. 문제는 컴파일러 수준(C ++에서와 같이)에서 해결되어야 합니다. 그리고 여기에서 가능한 것처럼 보이며 결과적으로 여러 페이지에 대한 토론이
확실히 버그입니다 ...하지만 아마도 그럴 것입니다! )))
IMHO, 상수식은 컴파일 시 알아야 하고, 정적식은 설명 순서대로 애플리케이션을 초기화할 때
다음은 MQL의 이 체계입니다. 상수에 대한 제어가 있는 것처럼 보이지만 런타임에 직접 상수를 할당할 수 있으며 다음과 같이 함수 호출 을 초기화로 사용할 수 있습니다.
struct A
{
constdouble a;
A():a( AccountInfoDouble ( ACCOUNT_BALANCE ))
{
Print ( "a = " , a); // a = 9999.290000000001
}
};
//+------------------------------------------------------------------+voidOnStart ()
{
A a1;
}
//+------------------------------------------------------------------+
그리고 이 "상수"는 지역 가시성에 있을 수 있습니다 .... 상수 표현이 되는 곳은 어디이며 어떻게 도움이 됩니까 .... 설명서 없이는 이것을 이해할 수 없습니다. 설명이 없습니다. 메모리 모델 - 이것에 의미가 없습니다. 예상대로 최대값을 사용하십시오 - 모든 생성자에서 상수로 초기화하십시오. 그러면 나중에 실수로 이 필드를 수정하기로 결정한 경우 컴파일러에서 경고를 표시합니다.
같은 파일에 동시에 두 개의 프로그램이 실행되고 있습니다. 쓰는 것은 FILE_READ|FILE_WRITE|FILE_BIN|FILE_SHARE_READ 플래그 를 사용합니다. 읽는 것은 FILE_READ|FILE_BIN|FILE_SHARE_WRITE|FILE_SHARE_READ입니다. 첫 번째 프로그램은 FileFlush를 사용하여 주기적으로 파일을 저장하지만 두 번째 프로그램은 파일을 열 때만 파일의 길이를 봅니다. FileSeek를 앞뒤로 시도했지만 도움이되지 않습니다.
질문: 파일을 읽는 프로그램이 기록 중인 데이터를 선택하도록 하는 방법은 무엇입니까?
이것은 버그인 것 같습니다. 얼마 전에 영어 포럼에서 보고되었습니다. 여기에 보고할 시간이 없었습니다.
같은 파일에 동시에 두 개의 프로그램이 실행되고 있습니다. 쓰는 것은 FILE_READ|FILE_WRITE|FILE_BIN|FILE_SHARE_READ 플래그 를 사용합니다. 읽는 것은 FILE_READ|FILE_BIN|FILE_SHARE_WRITE|FILE_SHARE_READ입니다. 첫 번째 프로그램은 FileFlush를 사용하여 주기적으로 파일을 저장하지만 두 번째 프로그램은 파일을 열 때만 파일의 길이를 봅니다. FileSeek를 앞뒤로 시도했지만 도움이되지 않습니다.
//+------------------------------------------------------------------+//| Пример: добавленный метод для расширения файла ..\Include\String\String.mqh//|--//| Получает из указанной строки подстроки по заданному разделителю //| и возвращает количество полученных объектов-подстрок//| НЕ РАБОТАЕТ !!!!!!!!!!//+------------------------------------------------------------------+int CString::Split( conststring separator, // разделитель
CString &result[] ) // массив строковых объектов
{
string tmp_result[];
if ( StringLen (separator)== 0 ) return ( 0 );
ushort u_sep= StringGetCharacter (separator, 0 );
int count= StringSplit (m_string,u_sep,tmp_result);
// временно для проверки
result[ 0 ].Assign( "Buy" ); // НЕ РАБОТАЕТ !!!!!!Alert ( "ressult[0] = " ,result[ 0 ].Str()); // <--- уже не отрабатывает// конец временно/*
for(int i=0;i<count;i++)
{
result[i].Assign(tmp_result[i]); // НЕ РАБОТАЕТ !!!!!
};
*/return (count);
}
//+------------------------------------------------------------------+
글쎄, 당신은 또한 디자이너를 붙였습니다. 물론 스스로 결정하지만 구조는 sishnye 개체이고 모델은 외부 논리(기능)가 있는 수동 개체와 다릅니다.
전혀 필요하지 않습니다. 왜 시시해? C#은 어떻습니까? - 의미에서 다시 한 번 그에게. 구조의 수동성에 대한 모든 이야기는 모두 구식 아이디어, IMHO입니다. 적어도 모든 유형에는 생성자가 있어야 한다고 생각합니다. 초기화되지 않은 필드는 좋지 않으므로 피해야 합니다.
그래서 단계를 기록하고 스크리닝 한 후 표시기가 종종 지연으로 양초를 그리는 것을 발견했습니다.
저것들. 이미 몇 틱 전에(정확히 몇 분까지) 그는 버퍼를 계산하고 업데이트했으며 어드바이저는 버퍼에서 데이터를 읽습니다.
(올빼미와 칠면조 모두 로그에 기록합니다). 그러나 차트에서 우리는 오래된 그림을 봅니다. 예를 들어, 이전 저점을 돌파하면서 빨간 막대가 아래로 형성되는 순간에 화면이 만들어졌다. 그러나 차트에서는 이전의 빨간색과 덜 그려진 녹색만 볼 수 있습니다(사실 이미 두 개의 상자가 더 있습니다).
하지만 실제 사진은 무엇이며 나중에 완성되었습니다. 우리는 낮은 침투를보고 스크린 샷의 녹음을 시작했습니다. 로그에 따르면 모든 것이 명확합니다.
누가 무엇이 문제이고 일정 업데이트 속도를 높이는 방법을 알려줄까요? Expert Advisor에서 ChartRedraw 함수를 호출하지만 여전히 몇 분 지연됩니다.
2분은 어쩐지 너무 많아, 그 이유를 상상조차 할 수 없어. 계산은 그렇게 느려질 만큼 우주적이지 않습니다.
원칙적으로 그런 경우는 없어야 합니다. 문제는 컴파일러 수준(C ++에서와 같이)에서 해결되어야 합니다. 그리고 여기에서 가능한 것처럼 보이며 결과적으로 여러 페이지에 대한 토론이
확실히 버그입니다 ...하지만 아마도 그럴 것입니다! )))
IMHO, 상수식은 컴파일 시 알아야 하고, 정적식은 설명 순서대로 애플리케이션을 초기화할 때
다음은 MQL의 이 체계입니다. 상수에 대한 제어가 있는 것처럼 보이지만 런타임에 직접 상수를 할당할 수 있으며 다음과 같이 함수 호출 을 초기화로 사용할 수 있습니다.
그리고 이 "상수"는 지역 가시성에 있을 수 있습니다 .... 상수 표현이 되는 곳은 어디이며 어떻게 도움이 됩니까 .... 설명서 없이는 이것을 이해할 수 없습니다. 설명이 없습니다. 메모리 모델 - 이것에 의미가 없습니다. 예상대로 최대값을 사용하십시오 - 모든 생성자에서 상수로 초기화하십시오. 그러면 나중에 실수로 이 필드를 수정하기로 결정한 경우 컴파일러에서 경고를 표시합니다.
여기 MQL의 이 체계가 있습니다. 상수를 제어할 수 있는 것처럼 보이지만 런타임에 직접 상수를 할당할 수 있습니다.
C++의 기초에 대한 기초적인 무지로 얼마나 불명예를 받을 수 있습니까?
다음과 같은 예는 혼란스럽습니다.
2020.04.23 21:40:04.474 tst (EURUSD,H1) a = 1.07892
2020.04.23 21:40:04.546 tst (EURUSD,H1) a = 1.07893
2020.04.23 21:40:04.585 tst (EURUSD,H1) a = 1.07893
2020.04.23 21:40:05.254 tst (EURUSD,H1) a = 1.07893
2020.04.23 21:40:05.305 tst (EURUSD,H1) a = 1.07893
2020.04.23 21:40:05.306 tst (EURUSD,H1) a = 1.07892
같은 파일에 동시에 두 개의 프로그램이 실행되고 있습니다. 쓰는 것은 FILE_READ|FILE_WRITE|FILE_BIN|FILE_SHARE_READ 플래그 를 사용합니다. 읽는 것은 FILE_READ|FILE_BIN|FILE_SHARE_WRITE|FILE_SHARE_READ입니다. 첫 번째 프로그램은 FileFlush를 사용하여 주기적으로 파일을 저장하지만 두 번째 프로그램은 파일을 열 때만 파일의 길이를 봅니다. FileSeek를 앞뒤로 시도했지만 도움이되지 않습니다.
질문: 파일을 읽는 프로그램이 기록 중인 데이터를 선택하도록 하는 방법은 무엇입니까?
이것은 버그인 것 같습니다. 얼마 전에 영어 포럼에서 보고되었습니다. 여기에 보고할 시간이 없었습니다.
개발자들은 영어 포럼을 읽지 않습니까?
같은 파일에 동시에 두 개의 프로그램이 실행되고 있습니다. 쓰는 것은 FILE_READ|FILE_WRITE|FILE_BIN|FILE_SHARE_READ 플래그 를 사용합니다. 읽는 것은 FILE_READ|FILE_BIN|FILE_SHARE_WRITE|FILE_SHARE_READ입니다. 첫 번째 프로그램은 FileFlush를 사용하여 주기적으로 파일을 저장하지만 두 번째 프로그램은 파일을 열 때만 파일의 길이를 봅니다. FileSeek를 앞뒤로 시도했지만 도움이되지 않습니다.
질문: 파일을 읽는 프로그램이 기록 중인 데이터를 선택하도록 하는 방법은 무엇입니까?
이 두 프로그램이 동일한 터미널에 있습니까 아니면 두 개의 다른 프로그램에 있습니까?
참조로 전달된 개체 배열의 개체 메서드가 작동하지 않습니다.
예시:
이 두 프로그램이 동일한 터미널에 있습니까 아니면 두 개의 다른 프로그램에 있습니까?
하나의 터미널에서. 전문가는 데이터를 쓰고 지표를 읽습니다. 그들은 다른 차트에 매달렸지만 하나에 있을 수 있다는 것은 분명합니다(중요한 경우). 빌드 2380.
VS2019
x=12345
aa = 12345
흠, 모든 것이 MQL5에서처럼 작동합니다.
좋아, 내 말을 취소하고 Sharp에서는 컴파일되지 않습니다.
글쎄, 당신은 또한 디자이너를 붙였습니다. 물론 스스로 결정하지만 구조는 sishnye 개체이고 모델은 외부 논리(기능)가 있는 수동 개체와 다릅니다.
전혀 필요하지 않습니다. 왜 시시해? C#은 어떻습니까? - 의미에서 다시 한 번 그에게. 구조의 수동성에 대한 모든 이야기는 모두 구식 아이디어, IMHO입니다. 적어도 모든 유형에는 생성자가 있어야 한다고 생각합니다. 초기화되지 않은 필드는 좋지 않으므로 피해야 합니다.
fxsaber
귀하의 경우 구조의 배열을 생성하기 위해 팩토리 메소드를 만들어야 합니다. 다음과 같이 다소:
그리고 배열의 요소를 채우는 이전에 제안된 방법 중 하나가 이미 있습니다.
다음 문제에 부딪쳤다. 표시기는 촛불을 끕니다
차트에 올려놨습니다. EA도 작동하여 이 표시기의 버퍼를 읽습니다.
그래서 단계를 기록하고 스크리닝 한 후 표시기가 종종 지연으로 양초를 그리는 것을 발견했습니다.
저것들. 이미 몇 틱 전에(정확히 몇 분까지) 그는 버퍼를 계산하고 업데이트했으며 어드바이저는 버퍼에서 데이터를 읽습니다.
(올빼미와 칠면조 모두 로그에 기록합니다). 그러나 차트에서 우리는 오래된 그림을 봅니다. 예를 들어, 이전 저점을 돌파하면서 빨간 막대가 아래로 형성되는 순간에 화면이 만들어졌다. 그러나 차트에서는 이전의 빨간색과 덜 그려진 녹색만 볼 수 있습니다(사실 이미 두 개의 상자가 더 있습니다).
하지만 실제 사진은 무엇이며 나중에 완성되었습니다. 우리는 낮은 침투를보고 스크린 샷의 녹음을 시작했습니다. 로그에 따르면 모든 것이 명확합니다.
누가 무엇이 문제이고 일정 업데이트 속도를 높이는 방법을 알려줄까요? Expert Advisor에서 ChartRedraw 함수를 호출하지만 여전히 몇 분 지연됩니다.
2분은 어쩐지 너무 많아, 그 이유를 상상조차 할 수 없어. 계산은 그렇게 느려질 만큼 우주적이지 않습니다.