메뉴같은게 있어서 만들고 싶었습니다. bool 변수를 선택할 때와 마찬가지로 false 또는 true입니다. 사용자가 잘 정의된 매개변수 값만 클릭할 수 있도록 합니다. 그가 "잘못된"것으로 불필요한 것을 운전하지 않도록, tk. 이 경우 어드바이저가 올바르게 작동하지 않습니다.
사용자는 나 자신입니다. 왜냐하면 구체적인 변수에 대한 매개변수가 있어야 하는 것을 잊어버릴 수 있습니다.
그런 다음 그렇게하십시오. Bool 유형의 외부 변수. == false이면 변수에 일부 값이 할당되고true이면 다른 값이 할당됩니다. 매개변수의 "세트"가 두 개 이상인 경우부울 변수 대신 int 유형 변수를 사용하고 1은 첫 번째 세트, 2는 두 번째 등으로 사용합니다.
이것은 각 외부 변수와 한 번에 모두 수행할 수 있습니다(어드바이저의 첫 번째 모드, 두 번째 ...)
메뉴같은게 있어서 만들고 싶었습니다. bool 변수를 선택할 때와 마찬가지로 false 또는 true입니다. 사용자가 잘 정의된 매개변수 값만 클릭할 수 있도록 합니다. 그가 "잘못된"것으로 불필요한 것을 운전하지 않도록, tk. 이 경우 어드바이저가 올바르게 작동하지 않습니다.
사용자는 나 자신입니다. 왜냐하면 구체적인 변수에 대한 매개변수가 있어야 하는 것을 잊어버릴 수 있습니다.
MQL4에는 그러한 가능성이 없습니다(그러나 MQL5에는 있습니다). 초기화에서 이 매개변수를 확인할 수 있으며 특정 값과 일치하지 않으면 오류를 알립니다. 그런 다음 시작 초기에 확인을 수행하십시오. 내 Expert Advisor에서 이 작업을 수행했습니다. 예를 들면 다음과 같습니다.
불필요한 모든 것을 제거했습니다. 읽을 필요가 없습니다. 디렉토리를 가져와서 초기에 알려진 값으로 파일을 생성하면 됩니다.
질문:
1. 우리가 파일에 쓰는 값이 어디에 표시되는지 알 수 없습니까?
2. 오류가 어디 있는지 이해할 수 없습니까?
미리 감사드립니다.
//===============================================================================================================================================================// Импортируемые функции.//===============================================================================================================================================================#import "ntdll.dll"int RtlGetLastWin32Error();
int RtlSetLastWin32Error ( int dwErrCode);
#import#include <WinKernel32.mqh> // Заголовочный файл библиотеки "kernel32.dll" функций API Windows XP.//===============================================================================================================================================================// Объявленные константы.//===============================================================================================================================================================#define FILE_FULL_CREATE 0// Создать или переписать файл.//===============================================================================================================================================================// Функция открывает или создаёт файл.// Функция открывает/создает файл для ввода и/или вывода. Если при открытии для записи файла нет, то он будет создан. Для создания директории// используется функция "CreateDirectory()". Функция возвращает: handle - файловый описатель, если функция выполнилась без ошибки;// -1 - возникла системная ошибка;// -2 - ошибка при перемещении файлового указателя в конец файла;// -3 - указан недопустимый способ открытия файла.//===============================================================================================================================================================int start(){
int FileOpenFull ( string PathName= "D:\files\DATA.csv" , // Имя файла с абсолютным путём.int ModeCWR= 0 ) // Способ открытия файла: 0 - FILE_FULL_CREATE Открытие файла для записи. Если файл существует, то содержимое файла будет// уничтожено. Если файл с таким именем не существует, то будет создан новый.
{
int Error; // Номер последней ошибки.int Handle; // Файловый описатель.//===============================================================================================================================================================
RtlSetLastWin32Error( 0 ); // Обнуляем ошибку.if (ModeCWR != FILE_FULL_READ) // Если функция вызвана не для чтения, проверяем на наличие файла.
{ // Проверяем на наличие файла. Читаем файл.
Handle = CreateFileA (PathName, GENERIC_READ, FILE_SHARE_READ , NULL , OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
if (RtlGetLastWin32Error() == 2 && Handle == - 1 ) ModeCWR = FILE_FULL_CREATE; // Файла нет. Создаём файл.else
{
if (!CloseHandle (Handle))
{
Error = RtlGetLastWin32Error();
Print ( "Ошибка в функции \"FileOpenFull()\". Файл с путём \"" , PathName, "\" не закрыт при проверки на наличие. Последняя ошибка: \"" , Error, "\". " , StringError (Error));
return (- 1 );
}
}
RtlSetLastWin32Error( 0 ); // Обнуляем ошибку.
}
//===============================================================================================================================================================// Переключатель по способам открытия файла.//===============================================================================================================================================================switch (ModeCWR)
{ // Создаём файл.case FILE_FULL_CREATE:
{
Handle = CreateFileA (PathName, GENERIC_WRITE, FILE_SHARE_WRITE , NULL , CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );
if (Handle == - 1 )
{
Error = RtlGetLastWin32Error();
Print ( "Ошибка в функции \"FileOpenFull()\". Файл с путём \"" , PathName, "\" не открыт. Последняя ошибка: \"" , Error, "\". " , StringError (Error));
}
return (Handle);
}
//===============================================================================================================================================================// Функция закрытия файла.// Функция закрывает ранее открытый файл. Если файл закрыт успешно, функция возвращает TRUE, иначе возвращает FALSE.//===============================================================================================================================================================bool FileCloseFull ( int Handle) // Файловый описатель, возвращаемый функцией "FileOpenFull()".
{
int Error; // Номер последней ошибки.//----
RtlSetLastWin32Error ( 0 );
if (!CloseHandle (Handle))
{
Error = RtlGetLastWin32Error();
Print ( "Ошибка в функции \"FileCloseFull()\". Последняя ошибка: \"" , Error, "\". " , StringError (Error));
return (false);
}
elsereturn (true);
}
//===============================================================================================================================================================// Функция возвращает код системной ошибки.//===============================================================================================================================================================int SystemError()
{
return (RtlGetLastWin32Error());
}
//===============================================================================================================================================================// Функция возвращает строковое описание кода системной ошибки.//===============================================================================================================================================================string StringError ( int ErrorCode) // Код системной ошибки.
{
int i;
string String = "" ;
//----int Buffer[ 128 ];
//----ArrayInitialize (Buffer, 0 );
FormatMessageA ( 0x1000 , 0 , ErrorCode, 0 , Buffer, ArraySize (Buffer), 0 );
//----for (i = 0 ; i < ArraySize (Buffer); i++)
{
String = String + CharToStr (Buffer[i] & 0xFF )
+ CharToStr (Buffer[i] >> 8 & 0xFF )
+ CharToStr (Buffer[i] >> 16 & 0xFF )
+ CharToStr (Buffer[i] >> 24 & 0xFF );
}
return ( StringTrimRight (String));
}
//===============================================================================================================================================================// Конец//===============================================================================================================================================================
}
죄송합니다. 찾을 수 없습니다... 알려주세요.
1차원 배열의 모든 요소를 1개의 인덱스로 이동하는 방법은 무엇입니까?
어떤 종류의 작업이 있습니까 아니면 주기로 실행해야 합니까?
죄송합니다. 찾을 수 없습니다... 알려주세요.
1차원 배열의 모든 요소를 1개의 인덱스로 이동하는 방법은 무엇입니까?
어떤 종류의 작업이 있습니까 아니면 주기로 실행해야 합니까?
설마...
메뉴같은게 있어서 만들고 싶었습니다. bool 변수를 선택할 때와 마찬가지로 false 또는 true입니다.
사용자는 나 자신입니다. 왜냐하면 구체적인 변수에 대한 매개변수가 있어야 하는 것을 잊어버릴 수 있습니다.사용자가 잘 정의된 매개변수 값만 클릭할 수 있도록 합니다. 그가 "잘못된"것으로 불필요한 것을 운전하지 않도록, tk. 이 경우 어드바이저가 올바르게 작동하지 않습니다.
그런 다음 그렇게하십시오. Bool 유형의 외부 변수. == false이면 변수에 일부 값이 할당되고 true이면 다른 값이 할당됩니다. 매개변수의 "세트"가 두 개 이상인 경우 부울 변수 대신 int 유형 변수를 사용하고 1은 첫 번째 세트, 2는 두 번째 등으로 사용합니다.
이것은 각 외부 변수와 한 번에 모두 수행할 수 있습니다(어드바이저의 첫 번째 모드, 두 번째 ...)
https://docs.mql4.com/en/array/ArrayCopy
죄송합니다. 찾을 수 없습니다... 알려주세요.
1차원 배열의 모든 요소를 1개의 인덱스로 이동하는 방법은 무엇입니까?
어떤 종류의 작업이 있습니까 아니면 주기로 실행해야 합니까?
https://www.mql5.com/ru/forum/131859/page8#434278
설마...
메뉴같은게 있어서 만들고 싶었습니다. bool 변수를 선택할 때와 마찬가지로 false 또는 true입니다.
사용자는 나 자신입니다. 왜냐하면 구체적인 변수에 대한 매개변수가 있어야 하는 것을 잊어버릴 수 있습니다.사용자가 잘 정의된 매개변수 값만 클릭할 수 있도록 합니다. 그가 "잘못된"것으로 불필요한 것을 운전하지 않도록, tk. 이 경우 어드바이저가 올바르게 작동하지 않습니다.
MQL4에는 그러한 가능성이 없습니다(그러나 MQL5에는 있습니다). 초기화에서 이 매개변수를 확인할 수 있으며 특정 값과 일치하지 않으면 오류를 알립니다. 그런 다음 시작 초기에 확인을 수행하십시오. 내 Expert Advisor에서 이 작업을 수행했습니다. 예를 들면 다음과 같습니다.
안녕하세요. 사용자가 지정한 디렉토리(샌드박스 외부에서 작업)에 파일을 쓰는 함수를 작성하려고 합니다.
" ZI_File_Functions_Full_Lib " 라이브러리 https://www.mql5.com/en/code/8577 을 사용하여 코드를 작성했습니다.
기능 " PathFunctions.dll . " https://www.mql5.com/ru/code/10873 은 Vista에서 작동하기 때문에 작동하지 않습니다. 저는 Windows 7을 가지고 있습니다.
불필요한 모든 것을 제거했습니다. 읽을 필요가 없습니다. 디렉토리를 가져와서 초기에 알려진 값으로 파일을 생성하면 됩니다.
질문:
1. 우리가 파일에 쓰는 값이 어디에 표시되는지 알 수 없습니까?
2. 오류가 어디 있는지 이해할 수 없습니까?
미리 감사드립니다.
안녕하세요. 사용자가 지정한 디렉토리(샌드박스 외부에서 작업)에 파일을 쓰는 함수를 작성하려고 합니다.
" ZI_File_Functions_Full_Lib " 라이브러리 https://www.mql5.com/ru/code/8577 을 사용하여 코드를 작성했습니다.
기능 " PathFunctions.dll . " https://www.mql5.com/en/code/10873 은 Vista에서 작동하기 때문에 작동하지 않습니다. 저는 Windows 7을 가지고 있습니다.
불필요한 모든 것을 제거했습니다. 읽을 필요가 없습니다. 디렉토리를 가져와서 초기에 알려진 값으로 파일을 생성하면 됩니다.
질문:
1. 우리가 파일에 쓰는 값이 어디에 표시되는지 알 수 없습니까?
2. 오류가 어디에 있는지 이해할 수 없습니까?
미리 감사드립니다.
아르툼!!! Windows 7에서 작동하지 않는다고 어디에 쓰여 있습니까? 왜 그렇게 무심코 읽습니까? 나는 당신이 아무것도 얻지 못한다는 사실에 놀라지 않습니다.
나는 당신의 코드를 보고 당신이 프로그래밍하는 방법을 전혀 모른다는 것을 깨달았습니다. 먼저 도움말 에서 예를 들어 보겠습니다 . 운영. 작동 방식을 확인하십시오. 그런 다음 더 복잡한 것으로 이동하십시오.
파일이 먼저 생성되거나 열립니다. 그런 다음 쓰거나 읽습니다. 그런 다음 닫힙니다. 방금 함수 선언을 start에 복사했습니다. 그들은 범용 함수에서 코드 조각을 추출했습니다. 이제 그냥 멈춥니다. 어떤 것에도 적용되지 않습니다. 왜 이런거야? 작동하지 않습니다.
안녕하세요! 전략 테스터를 닫는 방법을 알려주십시오. 무엇을 클릭해야합니까?