MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1870 1...186318641865186618671868186918701871187218731874187518761877...1953 새 코멘트 Maksim Emeliashin 2022.01.20 09:42 #18691 나는 지금 몇 시간 동안 데이터베이스에서 데이터를 읽으려고 시도했지만 할 수 없습니다. 다음은 테스트용 EA 코드입니다. 간단히. 하나의 테이블로 데이터베이스를 생성합니다(데이터베이스가 존재하는 경우 테이블을 삭제하고 다시 생성). 하나의 단일 행이 테이블에 추가됩니다. 그런 다음 데이터베이스를 닫았다가 다시 엽니다. 이 항목은 간단하게 선택되지만 명령은 쿼리 결과가 비어 있다는 오류를 반환합니다. IDE를 통해 확인 - 모든 것이 동일한 요청에 의해 선택됩니다. 이것이 버그인지 기능인지 알 수 없습니까? int OnInit () { //--- int db_handle = DatabaseOpen ( "test3" , DATABASE_OPEN_COMMON | DATABASE_OPEN_CREATE | DATABASE_OPEN_READWRITE ); if (db_handle != INVALID_HANDLE ) { // Структура таблицы if ( DatabaseTableExists (db_handle, "ea_dsc" )) if (! DatabaseExecute (db_handle, "DROP TABLE IF EXISTS ea_dsc" )) Print ( "Failed to drop table with code " , GetLastError ()); string t_create = "CREATE TABLE ea_dsc (dsc_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " " ea_symb TEXT NOT NULL, dt_from TEXT NOT NULL, dt_to TEXT, magic_buy INTEGER NOT NULL, " " magic_sell INTEGER NOT NULL, version TEXT NOT NULL, ea_method TEXT NOT NULL)" ; if (! DatabaseExecute (db_handle, t_create)) Print ( "Failed to create table with code " , GetLastError ()); string t_add = "INSERT INTO ea_dsc (ea_symb, dt_from, dt_to, magic_buy, magic_sell, version, ea_method)" "VALUES ('EURUSD', 'dt_from', NULL, '123', '456', 'version', 'ea_method')" ; if (! DatabaseExecute (db_handle, t_add)) Print ( "Failed to add table data with code " , GetLastError ()); DatabaseClose (db_handle); } db_handle = DatabaseOpen ( "test3" , DATABASE_OPEN_COMMON | DATABASE_OPEN_READWRITE ); if (db_handle != INVALID_HANDLE ) { // Запрос string s_quer = "SELECT dsc_id, ea_symb, dt_from, dt_to, magic_buy," "magic_sell, version, ea_method FROM ea_dsc WHERE ea_symb = ?1" ; int c_request = DatabasePrepare (db_handle, s_quer); if (c_request != INVALID_HANDLE ) { if (DatabaseBind(c_request, 0 , "EURUSD" )) if ( DatabaseRead (c_request)) { Print ( "Found!" ); } else PrintFormat ( "Error=%d" , GetLastError ()); DatabaseFinalize (c_request); } DatabaseClose (db_handle); } //--- return ( INIT_SUCCEEDED ); } 작업 결과: PrintFormat ( "Error=%d" , GetLastError ()); 또한 전체 코드를 첨부합니다. 파일: testDB_NW.mq5 8 kb x572intraday 2022.01.20 16:08 #18692 음, 입력 매개변수가 루프에서 정렬될 수 없는 이유는 무엇입니까? 왜 우리를 이렇게 벌하시는 겁니까? Alexey Viktorov 2022.01.20 16:31 #18693 x572intraday # : 음, 입력 매개변수가 루프에서 정렬될 수 없는 이유는 무엇입니까? 왜 우리를 이렇게 벌하시는 겁니까? 그리고 왜 필요한가? 비밀을 공유... Vladimir Makhnin 2022.01.20 17:05 #18694 시장에서 고문을 설치하는 방법은 무엇입니까? 여러 터미널이 있습니다. 마켓에서 다운로드를 클릭하면 기본적으로 잘못된 터미널이 열립니다. 삭제했습니다. 이제 "다운로드" 버튼을 클릭한 후 아무 일도 일어나지 않습니다. Mihail Matkovskij 2022.01.20 20:00 #18695 Vladimir Makhnin # : 시장에서 고문을 설치하는 방법은 무엇입니까? 여러 터미널이 있습니다. 마켓에서 다운로드를 클릭하면 기본적으로 잘못된 터미널이 열립니다. 삭제했습니다. 이제 "다운로드" 버튼을 클릭한 후 아무 일도 일어나지 않습니다. 어떤 브라우저로 다운로드하고 있습니까? x572intraday 2022.01.20 23:09 #18696 Alexey Viktorov # : 그리고 왜 필요한가? 비밀을 공유... 예, 다음 지점에 있었습니다. 멀리 갈 필요가 없습니다. enum LIST { L01= 111 , // ITEM 1 L02= 222 , // ITEM 2 L03= 333 , // ITEM 3 L04= 444 , // ITEM 4 L05= 555 , // ITEM 5 L06= 666 , // ITEM 6 L07= 777 , // ITEM 7 L08= 888 , // ITEM 8 }; input LIST LISTING_01=L01; input LIST LISTING_02=L02; input LIST LISTING_03=L03; input LIST LISTING_04=L04; input LIST LISTING_05=L05; input LIST LISTING_06=L06; input LIST LISTING_07=L07; input LIST LISTING_08=L08; LArray[ 0 ]=LISTING_01; LArray[ 1 ]=LISTING_02; LArray[ 2 ]=LISTING_03; LArray[ 3 ]=LISTING_04; LArray[ 4 ]=LISTING_05; LArray[ 5 ]=LISTING_06; LArray[ 6 ]=LISTING_07; LArray[ 7 ]=LISTING_08; 루프 대신 손으로 모든 것을 LArray 배열로 밀어 넣는 것은 개에게 기쁨입니다. 그리고 이것은 단지 예일 뿐입니다. 실제로 많은 전송이 있을 수 있습니다. 나는 일반적으로 enum 및 ENUM_TIMEFRAMES를 열거할 가능성이 없다는 점에 대해 침묵합니다. 피곤한. Mihail Matkovskij 2022.01.20 23:22 #18697 x572intraday # : 나는 일반적으로 enum 및 ENUM_TIMEFRAMES를 열거할 가능성이 없다는 점에 대해 침묵합니다. 옛날 옛적에 나는 관심을 위해 비슷한 열거를 시도했습니다. 거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼 Service Desk를 통해 개발자들과 소통하세요! Mihail Matkovskij , 2019.10.05 22:07 상수만큼 오른쪽/왼쪽으로 이동하거나 반복해야 하는 경우 매우 유용합니다. 내가 얻은 것은 다음과 같습니다. #property script_show_inputs //--- input parameters input uint shift = 1 ; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool incE_TF( ENUM_TIMEFRAMES &__tf, int _n = 1 ) { int i = __tf, n = _n; if (_n > 0 ) { while (i < PERIOD_W1 ) { i++; if ( StringFind ( EnumToString (( ENUM_TIMEFRAMES )i), "PERIOD_" , 0 ) == 0 ){ n--; if (n == 0 ) { __tf = ( ENUM_TIMEFRAMES )i; return true ; } } } } else if (_n < 0 ) { while (i > PERIOD_CURRENT ) { i--; if ( StringFind ( EnumToString (( ENUM_TIMEFRAMES )i), "PERIOD_" , 0 ) == 0 ){ n++; if (n == 0 ) { __tf = ( ENUM_TIMEFRAMES )i; return true ; } } } } return false ; } //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart () { ENUM_TIMEFRAMES i; i = PERIOD_CURRENT ; Print ( "Go" ); Print ( EnumToString (i), " = " , i); while (i < PERIOD_W1 ) { if (!incE_TF(i, shift)) break ; Print ( EnumToString (i), " = " , i); } i = PERIOD_W1 ; Print ( "Back" ); Print ( EnumToString (i), " = " , i); while (i > PERIOD_CURRENT ) { if (!incE_TF(i, -shift)) break ; Print ( EnumToString (i), " = " , i); } } 1만큼 오프셋: 2019.10 . 05 23 : 04 : 12.198 EnumTimeframeIteration (EURUSD,M12) Go 2019.10 . 05 23 : 04 : 12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_CURRENT = 0 2019.10 . 05 23 : 04 : 12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M1 = 1 2019.10 . 05 23 : 04 : 12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M2 = 2 2019.10 . 05 23 : 04 : 12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M3 = 3 2019.10 . 05 23 : 04 : 12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M4 = 4 2019.10 . 05 23 : 04 : 12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M5 = 5 2019.10 . 05 23 : 04 : 12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M6 = 6 2019.10 . 05 23 : 04 : 12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M10 = 10 2019.10 . 05 23 : 04 : 12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M12 = 12 2019.10 . 05 23 : 04 : 12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M15 = 15 2019.10 . 05 23 : 04 : 12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M20 = 20 2019.10 . 05 23 : 04 : 12.198 EnumTimeframeIteration (EURUSD,M12) PERIOD_M30 = 30 2019.10 . 05 23 : 04 : 12.204 EnumTimeframeIteration (EURUSD,M12) PERIOD_H1 = 16385 2019.10 . 05 23 : 04 : 12.204 EnumTimeframeIteration (EURUSD,M12) PERIOD_H2 = 16386 2019.10 . 05 23 : 04 : 12.204 EnumTimeframeIteration (EURUSD,M12) PERIOD_H3 = 16387 2019.10 . 05 23 : 04 : 12.204 EnumTimeframeIteration (EURUSD,M12) PERIOD_H4 = 16388 2019.10 . 05 23 : 04 : 12.204 EnumTimeframeIteration (EURUSD,M12) PERIOD_H6 = 16390 2019.10 . 05 23 : 04 : 12.204 EnumTimeframeIteration (EURUSD,M12) PERIOD_H8 = 16392 2019.10 . 05 23 : 04 : 12.204 EnumTimeframeIteration (EURUSD,M12) PERIOD_H12 = 16396 2019.10 . 05 23 : 04 : 12.204 EnumTimeframeIteration (EURUSD,M12) PERIOD_D1 = 16408 2019.10 . 05 23 : 04 : 12.210 EnumTimeframeIteration (EURUSD,M12) PERIOD_W1 = 32769 2019.10 . 05 23 : 04 : 12.210 EnumTimeframeIteration (EURUSD,M12) Back 2019.10 . 05 23 : 04 : 12.210 EnumTimeframeIteration (EURUSD,M12) PERIOD_W1 = 32769 2019.10 . 05 23 : 04 : 12.217 EnumTimeframeIteration (EURUSD,M12) PERIOD_D1 = 16408 2019.10 . 05 23 : 04 : 12.217 EnumTimeframeIteration (EURUSD,M12) PERIOD_H12 = 16396 2019.10 . 05 23 : 04 : 12.217 EnumTimeframeIteration (EURUSD,M12) PERIOD_H8 = 16392 2019.10 . 05 23 : 04 : 12.217 EnumTimeframeIteration (EURUSD,M12) PERIOD_H6 = 16390 2019.10 . 05 23 : 04 : 12.217 EnumTimeframeIteration (EURUSD,M12) PERIOD_H4 = 16388 2019.10 . 05 23 : 04 : 12.217 EnumTimeframeIteration (EURUSD,M12) PERIOD_H3 = 16387 2019.10 . 05 23 : 04 : 12.217 EnumTimeframeIteration (EURUSD,M12) PERIOD_H2 = 16386 2019.10 . 05 23 : 04 : 12.217 EnumTimeframeIteration (EURUSD,M12) PERIOD_H1 = 16385 2019.10 . 05 23 : 04 : 12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M30 = 30 2019.10 . 05 23 : 04 : 12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M20 = 20 2019.10 . 05 23 : 04 : 12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M15 = 15 2019.10 . 05 23 : 04 : 12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M12 = 12 2019.10 . 05 23 : 04 : 12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M10 = 10 2019.10 . 05 23 : 04 : 12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M6 = 6 2019.10 . 05 23 : 04 : 12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M5 = 5 2019.10 . 05 23 : 04 : 12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M4 = 4 2019.10 . 05 23 : 04 : 12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M3 = 3 2019.10 . 05 23 : 04 : 12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M2 = 2 2019.10 . 05 23 : 04 : 12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_M1 = 1 2019.10 . 05 23 : 04 : 12.223 EnumTimeframeIteration (EURUSD,M12) PERIOD_CURRENT = 0 2만큼 오프셋: 2019.10 . 05 23 : 06 : 11.462 EnumTimeframeIteration (EURUSD,M12) Go 2019.10 . 05 23 : 06 : 11.462 EnumTimeframeIteration (EURUSD,M12) PERIOD_CURRENT = 0 2019.10 . 05 23 : 06 : 11.462 EnumTimeframeIteration (EURUSD,M12) PERIOD_M2 = 2 2019.10 . 05 23 : 06 : 11.462 EnumTimeframeIteration (EURUSD,M12) PERIOD_M4 = 4 2019.10 . 05 23 : 06 : 11.462 EnumTimeframeIteration (EURUSD,M12) PERIOD_M6 = 6 2019.10 . 05 23 : 06 : 11.463 EnumTimeframeIteration (EURUSD,M12) PERIOD_M12 = 12 2019.10 . 05 23 : 06 : 11.463 EnumTimeframeIteration (EURUSD,M12) PERIOD_M20 = 20 2019.10 . 05 23 : 06 : 11.469 EnumTimeframeIteration (EURUSD,M12) PERIOD_H1 = 16385 2019.10 . 05 23 : 06 : 11.469 EnumTimeframeIteration (EURUSD,M12) PERIOD_H3 = 16387 2019.10 . 05 23 : 06 : 11.469 EnumTimeframeIteration (EURUSD,M12) PERIOD_H6 = 16390 2019.10 . 05 23 : 06 : 11.469 EnumTimeframeIteration (EURUSD,M12) PERIOD_H12 = 16396 2019.10 . 05 23 : 06 : 11.475 EnumTimeframeIteration (EURUSD,M12) PERIOD_W1 = 32769 2019.10 . 05 23 : 06 : 11.475 EnumTimeframeIteration (EURUSD,M12) Back 2019.10 . 05 23 : 06 : 11.475 EnumTimeframeIteration (EURUSD,M12) PERIOD_W1 = 32769 2019.10 . 05 23 : 06 : 11.482 EnumTimeframeIteration (EURUSD,M12) PERIOD_H12 = 16396 2019.10 . 05 23 : 06 : 11.482 EnumTimeframeIteration (EURUSD,M12) PERIOD_H6 = 16390 2019.10 . 05 23 : 06 : 11.482 EnumTimeframeIteration (EURUSD,M12) PERIOD_H3 = 16387 2019.10 . 05 23 : 06 : 11.482 EnumTimeframeIteration (EURUSD,M12) PERIOD_H1 = 16385 2019.10 . 05 23 : 06 : 11.488 EnumTimeframeIteration (EURUSD,M12) PERIOD_M20 = 20 2019.10 . 05 23 : 06 : 11.488 EnumTimeframeIteration (EURUSD,M12) PERIOD_M12 = 12 2019.10 . 05 23 : 06 : 11.488 EnumTimeframeIteration (EURUSD,M12) PERIOD_M6 = 6 2019.10 . 05 23 : 06 : 11.488 EnumTimeframeIteration (EURUSD,M12) PERIOD_M4 = 4 2019.10 . 05 23 : 06 : 11.488 EnumTimeframeIteration (EURUSD,M12) PERIOD_M2 = 2 2019.10 . 05 23 : 06 : 11.488 EnumTimeframeIteration (EURUSD,M12) PERIOD_CURRENT = 0 사실, 이 방법은 여전히 스위치가 있는 방법에 비해 속도가 떨어집니다. 따라서 원하는 경우 모든 것이 가능합니다! mql5 언어의 특징, 미묘함 Metatrader 5로 시작하는 방법 MetaTrader 5 거래 전략 Maksim Emeliashin 2022.01.21 01:02 #18698 x572intraday # : 음, 입력 매개변수가 루프에서 정렬될 수 없는 이유는 무엇입니까? 왜 우리를 이렇게 벌하시는 겁니까? 질문에 동참합니다. 예, 열거형도 마찬가지입니다. EnumToString 함수가 있다면 StringToEnum은 안 되는 이유가 무엇입니까? 엄청나게 어려운 작업이 있습니까? 데이터베이스에 열거형 값을 숫자로 저장하는 것은 옵션이 아닙니다. 중간에 열거형에 새로운 값을 추가하면 데이터베이스의 데이터가 호박으로 바뀌고 형식에서 읽을 수 없기 때문입니다. 눈으로 볼 수 없는 숫자입니다. Maksim Emeliashin 2022.01.21 02:54 #18699 데이터베이스 쿼리 매개변수에 NULL 값을 명시적으로 전달할 수 있습니까? 이 구성은 컴파일 오류 를 일으킵니다. res = DatabaseBind(request, column, NULL ); Vitaly Muzichenko 2022.01.21 03:09 #18700 Maksim Emeliashin 컴파일 오류 를 일으킵니다. DatabaseBind(request, column, "" ); 1...186318641865186618671868186918701871187218731874187518761877...1953 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
나는 지금 몇 시간 동안 데이터베이스에서 데이터를 읽으려고 시도했지만 할 수 없습니다.
다음은 테스트용 EA 코드입니다.
간단히. 하나의 테이블로 데이터베이스를 생성합니다(데이터베이스가 존재하는 경우 테이블을 삭제하고 다시 생성). 하나의 단일 행이 테이블에 추가됩니다.
그런 다음 데이터베이스를 닫았다가 다시 엽니다. 이 항목은 간단하게 선택되지만 명령은 쿼리 결과가 비어 있다는 오류를 반환합니다.
IDE를 통해 확인 - 모든 것이 동일한 요청에 의해 선택됩니다. 이것이 버그인지 기능인지 알 수 없습니까?
작업 결과:
또한 전체 코드를 첨부합니다.
음, 입력 매개변수가 루프에서 정렬될 수 없는 이유는 무엇입니까? 왜 우리를 이렇게 벌하시는 겁니까?
그리고 왜 필요한가? 비밀을 공유...
마켓에서 다운로드를 클릭하면 기본적으로 잘못된 터미널이 열립니다. 삭제했습니다. 이제 "다운로드" 버튼을 클릭한 후 아무 일도 일어나지 않습니다.
시장에서 고문을 설치하는 방법은 무엇입니까? 여러 터미널이 있습니다.
마켓에서 다운로드를 클릭하면 기본적으로 잘못된 터미널이 열립니다. 삭제했습니다. 이제 "다운로드" 버튼을 클릭한 후 아무 일도 일어나지 않습니다.
어떤 브라우저로 다운로드하고 있습니까?
그리고 왜 필요한가? 비밀을 공유...
예, 다음 지점에 있었습니다. 멀리 갈 필요가 없습니다.
루프 대신 손으로 모든 것을 LArray 배열로 밀어 넣는 것은 개에게 기쁨입니다. 그리고 이것은 단지 예일 뿐입니다. 실제로 많은 전송이 있을 수 있습니다.
나는 일반적으로 enum 및 ENUM_TIMEFRAMES를 열거할 가능성이 없다는 점에 대해 침묵합니다. 피곤한.나는 일반적으로 enum 및 ENUM_TIMEFRAMES를 열거할 가능성이 없다는 점에 대해 침묵합니다.
옛날 옛적에 나는 관심을 위해 비슷한 열거를 시도했습니다.
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
Service Desk를 통해 개발자들과 소통하세요!
Mihail Matkovskij , 2019.10.05 22:07
상수만큼 오른쪽/왼쪽으로 이동하거나 반복해야 하는 경우 매우 유용합니다. 내가 얻은 것은 다음과 같습니다.
1만큼 오프셋:
2만큼 오프셋:
사실, 이 방법은 여전히 스위치가 있는 방법에 비해 속도가 떨어집니다.
음, 입력 매개변수가 루프에서 정렬될 수 없는 이유는 무엇입니까? 왜 우리를 이렇게 벌하시는 겁니까?
질문에 동참합니다.
예, 열거형도 마찬가지입니다. EnumToString 함수가 있다면 StringToEnum은 안 되는 이유가 무엇입니까? 엄청나게 어려운 작업이 있습니까?
데이터베이스에 열거형 값을 숫자로 저장하는 것은 옵션이 아닙니다. 중간에 열거형에 새로운 값을 추가하면 데이터베이스의 데이터가 호박으로 바뀌고 형식에서 읽을 수 없기 때문입니다. 눈으로 볼 수 없는 숫자입니다.
데이터베이스 쿼리 매개변수에 NULL 값을 명시적으로 전달할 수 있습니까?
이 구성은 컴파일 오류 를 일으킵니다.
res = DatabaseBind(request, column, NULL );
DatabaseBind(request, column, "" );