MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1868 1...186118621863186418651866186718681869187018711872187318741875...1953 새 코멘트 vladeimirami 2022.01.19 16:11 #18671 Andrey Sokolov # : 어떻게 하고 있고 정확히 무엇이 작동하지 않습니까? MQL5 프로그래밍을 공부하는 동안. 저는 초보자입니다. 독학. 나는 문제를 해결하려고 노력한다. 일반적으로 배열을 하나씩 입력하지 않으려면 키보드에서 배열을 입력하는 기능이 있어야 한다고 생각했습니다. 글쎄, C ++ 문제 책의 작업. 143. 1을 입력하는 프로그램을 작성하세요 5개의 정수로 구성된 차원 배열, 그 후에 숫자를 출력합니다. 0이 아닌 요소로. 각 항목을 입력하기 전에, 요소 번호가 있는 툴팁이 표시됩니다. 정수의 입력 배열입니다. 각 번호를 입력한 후 <Enter> 키를 누릅니다. a[1] -> 12 a[2] -> 0 a[3] -> 3 a[4] -> -1 a[5] -> 0 배열에 0이 아닌 요소가 3개 있습니다. 뉴비가 묻는다! 지표를 무료로 작성해 드립니다 오류, 버그, 질문 Alexey Viktorov 2022.01.19 16:17 #18672 vladeimirami # : MQL5 프로그래밍을 공부하는 동안. 저는 초보자입니다. 독학. 나는 문제를 해결하려고 노력한다. 일반적으로 배열을 하나씩 입력하지 않으려면 키보드에서 배열을 입력하는 기능이 있어야 한다고 생각했습니다. 글쎄, C ++ 문제 책의 작업. 143. 1을 입력하는 프로그램을 작성하세요 5개의 정수로 구성된 차원 배열, 그 후에 숫자를 출력합니다. 0이 아닌 요소로. 각 항목을 입력하기 전에, 요소 번호가 있는 툴팁이 표시됩니다. 정수의 입력 배열입니다. 각 숫자를 입력한 후 <Enter> 키를 누릅니다. a[1] -> 12 a[2] -> 0 a[3] -> 3 a[4] -> -1 a[5] -> 0 배열에 0이 아닌 요소가 3개 있습니다. int a[] = { 12 , 0 , 3 , - 1 , 0 }; 그러나 이것은 배열을 동적 배열로 바꾸고 ArrayResize() 함수로 크기를 변경할 수 없습니다. vladeimirami 2022.01.19 16:24 #18673 Alexey Viktorov # : 그러나 이것은 배열을 동적 배열로 바꾸고 ArrayResize() 함수로 크기를 변경할 수 없습니다. Alexey, 글쎄, 난 그렇게 멍청하지 않아. 죄송합니다. 이 방법으로도 배열을 채울 수 있습니다. 키보드로 채우고 싶습니다. 여기서 머리를 긁적입니다. Andrei Sokolov 2022.01.19 16:32 #18674 vladeimirami # : 글쎄, C ++ 문제 책의 작업. mql에서는 키보드에서 배열을 채울 수도 있지만 불필요합니다))) vladeimirami 2022.01.19 16:38 #18675 Andrey Sokolov # : mql에서는 키보드에서 배열을 채울 수도 있지만 불필요합니다))) 안드레이! 프로그램 작성. 창조. 생각과 환상의 비행. 회백질의 세포에 보관하지 마십시오. 나는 그것을 키보드에서 원한다. 이것은 제 변명이 아닙니다. 내 욕망은 내 환상의 산물일 뿐입니다. 나는 이것을 키보드에서 원한다. Andrei Sokolov 2022.01.19 16:43 #18676 vladeimirami # : 안드레이! 프로그램 작성. 창조. 생각과 환상의 비행. 회백질의 세포에 보관하지 마십시오. 나는 그것을 키보드에서 원한다. 이것은 제 변명이 아닙니다. 내 욕망은 내 환상의 산물일 뿐입니다. 나는 이것을 키보드에서 원한다. 더 쉽게 쓰겠습니다. 질문은 전문적인 주제/포럼에 적합합니다. vladeimirami 2022.01.19 16:47 #18677 Andrey Sokolov # : 더 쉽게 쓰겠습니다. 질문은 전문적인 주제/포럼에 적합합니다. Andrey, 아마도 이 질문이 나와 같은 포럼에서 제기된 것입니까? 포럼에 뭔가가 있으면 링크를 제공하십시오. 아니면 포럼에서 이 토론을 여는 것이 여전히 가치가 있습니까? 어쨌든, 정말 감사합니다! Maxim Kuznetsov 2022.01.19 16:53 #18678 vladeimirami # : 안드레이! 프로그램 작성. 창조. 생각과 환상의 비행. 회백질의 세포에 보관하지 마십시오. 나는 그것을 키보드에서 원한다. 이것은 제 변명이 아닙니다. 내 욕망은 내 환상의 산물일 뿐입니다. 나는 이것을 키보드에서 원한다. 파일에서 배열을 읽습니다. 텍스트 편집기에서 파일을 편집하세요 :-) Mihail Matkovskij 2022.01.19 17:55 #18679 Andrey Sokolov # : "해봐 - 방법은 말하지 않을게" 왜 스스로 생각하지 못했습니까? 그리고 그들은 사용자 vladeimirami 에게 모든 작업을 수행하는 방법을 알려줄 것 입니다. 아직 문서에 있습니다. https://www.mql5.com/ru/docs/event_handlers/onchartevent //Пример слушателя событий графика //+------------------------------------------------------------------+ //| OnChartEvent_Sample.mq5 | //| Copyright 2018, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2018, MetaQuotes Software Corp." #property link " https://www.mql5.com " #property version "1.00" #property description "Пример слушателя событий графика и генератора пользовательских событий" //--- идентификаторы служебных клавиш #define KEY_NUMPAD_5 12 #define KEY_LEFT 37 #define KEY_UP 38 #define KEY_RIGHT 39 #define KEY_DOWN 40 #define KEY_NUMLOCK_DOWN 98 #define KEY_NUMLOCK_LEFT 100 #define KEY_NUMLOCK_5 101 #define KEY_NUMLOCK_RIGHT 102 #define KEY_NUMLOCK_UP 104 //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { //--- выведем значение константы CHARTEVENT_CUSTOM Print ( "CHARTEVENT_CUSTOM=" , CHARTEVENT_CUSTOM ); //--- Print ( "Запущен эксперт с именем " , MQLInfoString ( MQL5_PROGRAM_NAME )); //--- установка флага получения событий создания объектов графика ChartSetInteger ( ChartID (), CHART_EVENT_OBJECT_CREATE , true ); //--- установка флага получения событий удаления объектов графика ChartSetInteger ( ChartID (), CHART_EVENT_OBJECT_DELETE , true ); //--- включение сообщений о прокрутке колесика мышки ChartSetInteger ( 0 , CHART_EVENT_MOUSE_WHEEL , 1 ); //--- принудительное обновление свойств графика гарантирует готовность к обработке событий ChartRedraw (); //--- return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { //--- счетчик тиков для генерации пользовательского события static int tick_counter= 0 ; //--- будем делить накопленные тики на это число int simple_number= 113 ; //--- tick_counter++; //--- отправляем пользовательское событие, если счетчик тиков кратен simple_number if (tick_counter%simple_number== 0 ) { //--- сформируем идентификатор пользовательского события в диапазоне от 0 до 65535 ushort custom_event_id= ushort (tick_counter% 65535 ); //--- отправим пользовательское событие с заполнением параметров EventChartCustom ( ChartID (),custom_event_id,tick_counter, SymbolInfoDouble ( Symbol (), SYMBOL_BID ), __FUNCTION__ ); //--- сделаем вывод в лог для изучения и анализа результатов примера Print ( __FUNCTION__ , ": Отправлено пользовательcкое событие ID=" ,custom_event_id); } //--- } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent ( const int id, const long &lparam, const double &dparam, const string &sparam) { //--- нажатие кнопки на клавиатуре if (id== CHARTEVENT_KEYDOWN ) { switch (( int )lparam) { case KEY_NUMLOCK_LEFT: Print ( "Нажата KEY_NUMLOCK_LEFT" ); break ; case KEY_LEFT: Print ( "Нажата KEY_LEFT" ); break ; case KEY_NUMLOCK_UP: Print ( "Нажата KEY_NUMLOCK_UP" ); break ; case KEY_UP: Print ( "Нажата KEY_UP" ); break ; case KEY_NUMLOCK_RIGHT: Print ( "Нажата KEY_NUMLOCK_RIGHT" ); break ; case KEY_RIGHT: Print ( "Нажата KEY_RIGHT" ); break ; case KEY_NUMLOCK_DOWN: Print ( "Нажата KEY_NUMLOCK_DOWN" ); break ; case KEY_DOWN: Print ( "Нажата KEY_DOWN" ); break ; case KEY_NUMPAD_5: Print ( "Нажата KEY_NUMPAD_5" ); break ; case KEY_NUMLOCK_5: Print ( "Нажата KEY_NUMLOCK_5" ); break ; default : Print ( "Нажата какая-то неперечисленная клавиша" ); } } //--- нажатие левой кнопкой мышки на графике if (id== CHARTEVENT_CLICK ) Print ( "Координаты щелчка мышки на графике: x = " ,lparam, " y = " ,dparam); //--- нажатие мышкой на графическом объекте if (id== CHARTEVENT_OBJECT_CLICK ) Print ( "Нажатие кнопки мышки на объекте с именем '" +sparam+ "'" ); //--- удален объект if (id== CHARTEVENT_OBJECT_DELETE ) Print ( "Удален объект с именем " ,sparam); //--- создан объект if (id== CHARTEVENT_OBJECT_CREATE ) Print ( "Создан объект с именем " ,sparam); //--- изменен объект if (id== CHARTEVENT_OBJECT_CHANGE ) Print ( "Изменен объект с именем " ,sparam); //--- перемещен объект или изменены координаты точек привязки if (id== CHARTEVENT_OBJECT_DRAG ) Print ( "Изменение точек привязки объекта с именем " ,sparam); //--- изменен текст в поле ввода графического объекта Edit if (id== CHARTEVENT_OBJECT_ENDEDIT ) Print ( "Изменен текст в объекте Edit " ,sparam, " id=" ,id); //--- события перемещения мышки if (id== CHARTEVENT_MOUSE_MOVE ) Comment ( "POINT: " ,( int )lparam, "," ,( int )dparam, "\n" ,MouseState(( uint )sparam)); if (id== CHARTEVENT_MOUSE_WHEEL ) { //--- разберем состояние кнопок и колесика мышки для этого события int flg_keys = ( int )(lparam>> 32 ); // флаг состояний клавиш Ctrl, Shift и кнопок мышки int x_cursor = ( int )( short )lparam; // X-координата, в которой произошло событие колесика мышки int y_cursor = ( int )( short )(lparam>> 16 ); // Y-координата, в которой произошло событие колесика мышки int delta = ( int )dparam; // суммарное значение прокрутки колесика, срабатывает при достижении +120 или -120 //--- обработаем флаг string str_keys= "" ; if ((flg_keys& 0x0001 )!= 0 ) str_keys+= "LMOUSE " ; if ((flg_keys& 0x0002 )!= 0 ) str_keys+= "RMOUSE " ; if ((flg_keys& 0x0004 )!= 0 ) str_keys+= "SHIFT " ; if ((flg_keys& 0x0008 )!= 0 ) str_keys+= "CTRL " ; if ((flg_keys& 0x0010 )!= 0 ) str_keys+= "MMOUSE " ; if ((flg_keys& 0x0020 )!= 0 ) str_keys+= "X1MOUSE " ; if ((flg_keys& 0x0040 )!= 0 ) str_keys+= "X2MOUSE " ; if (str_keys!= "" ) str_keys= ", keys='" + StringSubstr (str_keys, 0 , StringLen (str_keys)- 1 )+ "'" ; PrintFormat ( "%s: X=%d, Y=%d, delta=%d%s" , EnumToString ( CHARTEVENT_MOUSE_WHEEL ),x_cursor,y_cursor,delta,str_keys); } //--- изменение размеров графика или изменение свойств графика через диалог свойств if (id== CHARTEVENT_CHART_CHANGE ) Print ( "Изменение размеров или свойств графика" ); //--- пользовательское событие if (id> CHARTEVENT_CUSTOM ) PrintFormat ( "Пользовательское событие ID=%d, lparam=%d, dparam=%G, sparam=%s" ,id,lparam,dparam,sparam); } //+------------------------------------------------------------------+ //| MouseState | //+------------------------------------------------------------------+ string MouseState( uint state) { string res; res+= "\nML: " +(((state& 1 )== 1 )? "DN" : "UP" ); // mouse left res+= "\nMR: " +(((state& 2 )== 2 )? "DN" : "UP" ); // mouse right res+= "\nMM: " +(((state& 16 )== 16 )? "DN" : "UP" ); // mouse middle res+= "\nMX: " +(((state& 32 )== 32 )? "DN" : "UP" ); // mouse first X key res+= "\nMY: " +(((state& 64 )== 64 )? "DN" : "UP" ); // mouse second X key res+= "\nSHIFT: " +(((state& 4 )== 4 )? "DN" : "UP" ); // shift key res+= "\nCTRL: " +(((state& 8 )== 8 )? "DN" : "UP" ); // control key return (res); } 상수 목록을 필수 항목으로 확장합니다. #define KEY_NUMPAD_5 12 #define KEY_LEFT 37 #define KEY_UP 38 #define KEY_RIGHT 39 #define KEY_DOWN 40 #define KEY_NUMLOCK_DOWN 98 #define KEY_NUMLOCK_LEFT 100 #define KEY_NUMLOCK_5 101 #define KEY_NUMLOCK_RIGHT 102 #define KEY_NUMLOCK_UP 104 상수 값을 얻을 수 있는 위치:. Google "C++ 키 코드"(내가 말했듯이). 그리고 우리는 다음을 처리합니다: //--- нажатие кнопки на клавиатуре if (id== CHARTEVENT_KEYDOWN ) { switch (( int )lparam) { case KEY_NUMLOCK_LEFT: Print ( "Нажата KEY_NUMLOCK_LEFT" ); break ; case KEY_LEFT: Print ( "Нажата KEY_LEFT" ); break ; case KEY_NUMLOCK_UP: Print ( "Нажата KEY_NUMLOCK_UP" ); break ; case KEY_UP: Print ( "Нажата KEY_UP" ); break ; case KEY_NUMLOCK_RIGHT: Print ( "Нажата KEY_NUMLOCK_RIGHT" ); break ; case KEY_RIGHT: Print ( "Нажата KEY_RIGHT" ); break ; case KEY_NUMLOCK_DOWN: Print ( "Нажата KEY_NUMLOCK_DOWN" ); break ; case KEY_DOWN: Print ( "Нажата KEY_DOWN" ); break ; case KEY_NUMPAD_5: Print ( "Нажата KEY_NUMPAD_5" ); break ; case KEY_NUMLOCK_5: Print ( "Нажата KEY_NUMLOCK_5" ); break ; default : Print ( "Нажата какая-то неперечисленная клавиша" ); } } Print가 있는 줄 대신에 누른 키에 따라 배열에 값을 추가하는 함수를 삽입합니다. 뭐가 어렵나요? Документация по MQL5: Обработка событий / OnChartEvent www.mql5.com OnChartEvent - Обработка событий - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 Andrei Sokolov 2022.01.19 18:02 #18680 Mihail Matkovskij # : 왜 스스로 생각하지 못했습니까? 그리고 그들은 사용자 vladeimirami 에게 모든 작업을 수행하는 방법을 알려줄 것 입니다. 아직 문서에 있습니다. https://www.mql5.com/ru/docs/event_handlers/onchartevent 상수 목록을 필수 항목으로 확장합니다. 상수 값을 얻을 수 있는 위치:. Google "C++ 키 코드"(내가 말했듯이). 그리고 우리는 다음을 처리합니다: Print가 있는 줄 대신에 누른 키에 따라 배열에 값을 추가하는 함수를 삽입합니다. 뭐가 어렵나요? 당신은 열쇠를 두드리기 전에 당신이 대답한 것, 누가 누구에게, 무엇에 대해 대답했는지 읽어 보셨습니까? 1...186118621863186418651866186718681869187018711872187318741875...1953 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
어떻게 하고 있고 정확히 무엇이 작동하지 않습니까?
MQL5 프로그래밍을 공부하는 동안. 저는 초보자입니다. 독학. 나는 문제를 해결하려고 노력한다. 일반적으로 배열을 하나씩 입력하지 않으려면 키보드에서 배열을 입력하는 기능이 있어야 한다고 생각했습니다. 글쎄, C ++ 문제 책의 작업.
143. 1을 입력하는 프로그램을 작성하세요
5개의 정수로 구성된 차원 배열, 그 후에 숫자를 출력합니다.
0이 아닌 요소로. 각 항목을 입력하기 전에,
요소 번호가 있는 툴팁이 표시됩니다.
정수의 입력 배열입니다.
각 번호를 입력한 후 <Enter> 키를 누릅니다.
a[1] -> 12
a[2] -> 0
a[3] -> 3
a[4] -> -1
a[5] -> 0
배열에 0이 아닌 요소가 3개 있습니다.
MQL5 프로그래밍을 공부하는 동안. 저는 초보자입니다. 독학. 나는 문제를 해결하려고 노력한다. 일반적으로 배열을 하나씩 입력하지 않으려면 키보드에서 배열을 입력하는 기능이 있어야 한다고 생각했습니다. 글쎄, C ++ 문제 책의 작업.
143. 1을 입력하는 프로그램을 작성하세요
5개의 정수로 구성된 차원 배열, 그 후에 숫자를 출력합니다.
0이 아닌 요소로. 각 항목을 입력하기 전에,
요소 번호가 있는 툴팁이 표시됩니다.
정수의 입력 배열입니다.
각 숫자를 입력한 후 <Enter> 키를 누릅니다.
a[1] -> 12
a[2] -> 0
a[3] -> 3
a[4] -> -1
a[5] -> 0
배열에 0이 아닌 요소가 3개 있습니다.
그러나 이것은 배열을 동적 배열로 바꾸고 ArrayResize() 함수로 크기를 변경할 수 없습니다.
그러나 이것은 배열을 동적 배열로 바꾸고 ArrayResize() 함수로 크기를 변경할 수 없습니다.
글쎄, C ++ 문제 책의 작업.
mql에서는 키보드에서 배열을 채울 수도 있지만 불필요합니다)))
mql에서는 키보드에서 배열을 채울 수도 있지만 불필요합니다)))
안드레이! 프로그램 작성. 창조. 생각과 환상의 비행. 회백질의 세포에 보관하지 마십시오. 나는 그것을 키보드에서 원한다. 이것은 제 변명이 아닙니다. 내 욕망은 내 환상의 산물일 뿐입니다. 나는 이것을 키보드에서 원한다.
더 쉽게 쓰겠습니다. 질문은 전문적인 주제/포럼에 적합합니다.
더 쉽게 쓰겠습니다. 질문은 전문적인 주제/포럼에 적합합니다.
Andrey, 아마도 이 질문이 나와 같은 포럼에서 제기된 것입니까? 포럼에 뭔가가 있으면 링크를 제공하십시오. 아니면 포럼에서 이 토론을 여는 것이 여전히 가치가 있습니까?
어쨌든, 정말 감사합니다!
안드레이! 프로그램 작성. 창조. 생각과 환상의 비행. 회백질의 세포에 보관하지 마십시오. 나는 그것을 키보드에서 원한다. 이것은 제 변명이 아닙니다. 내 욕망은 내 환상의 산물일 뿐입니다. 나는 이것을 키보드에서 원한다.
파일에서 배열을 읽습니다. 텍스트 편집기에서 파일을 편집하세요 :-)
"해봐 - 방법은 말하지 않을게"
왜 스스로 생각하지 못했습니까? 그리고 그들은 사용자 vladeimirami 에게 모든 작업을 수행하는 방법을 알려줄 것 입니다. 아직 문서에 있습니다.
https://www.mql5.com/ru/docs/event_handlers/onchartevent
상수 목록을 필수 항목으로 확장합니다.
상수 값을 얻을 수 있는 위치:. Google "C++ 키 코드"(내가 말했듯이). 그리고 우리는 다음을 처리합니다:
Print가 있는 줄 대신에 누른 키에 따라 배열에 값을 추가하는 함수를 삽입합니다. 뭐가 어렵나요?
왜 스스로 생각하지 못했습니까? 그리고 그들은 사용자 vladeimirami 에게 모든 작업을 수행하는 방법을 알려줄 것 입니다. 아직 문서에 있습니다.
https://www.mql5.com/ru/docs/event_handlers/onchartevent
상수 목록을 필수 항목으로 확장합니다.
상수 값을 얻을 수 있는 위치:. Google "C++ 키 코드"(내가 말했듯이). 그리고 우리는 다음을 처리합니다:
Print가 있는 줄 대신에 누른 키에 따라 배열에 값을 추가하는 함수를 삽입합니다. 뭐가 어렵나요?
당신은 열쇠를 두드리기 전에 당신이 대답한 것, 누가 누구에게, 무엇에 대해 대답했는지 읽어 보셨습니까?