MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1138 1...113111321133113411351136113711381139114011411142114311441145...1953 새 코멘트 Maksym Mudrakov 2020.04.24 19:21 #11371 Igor Makanu : 오랫동안 SB를 사용하지 않아 반은 기억나지 않지만 매번 OBJ_EDIT 개체의 ChartRedraw()를 수행하여 프로그래밍 방식으로 선택 및 선택 해제하려고 하면 SB에서 개체 이름을 가져올 수 있습니다. Name 메서드여야 합니다. 하지만 만약에? 추신: 그리고 Sleep() 은 ChartRedraw() 에 가장 필요하지만 Sleep() 은 표시기에서 작동하지 않습니다. 개체의 OBJPROP_SELECTED 속성이 TRUE라는 것을 의미한다면 그게 아닙니다. 이 경우 개체는 차트에서 강조 표시되지만 입력 필드는 활성화되지 않습니다. Igor Makanu 2020.04.24 19:33 #11372 Maksym Mudrakov : 개체의 OBJPROP_SELECTED 속성이 TRUE라는 것을 의미한다면 그게 아닙니다. 이 경우 개체는 차트에서 강조 표시되지만 입력 필드는 활성화되지 않습니다. 패널에 뭐가 있는지 확인해보니 OBJ_EDIT 객체 선택이 안되네요 그런 다음 포럼을 검색하십시오. "탭" 탭 "입력 포커스" ascerdfg 2020.04.24 19:41 #11373 터미널을 닫지 않고 MQL5/logs/*.log 파일을 어떻게든 업데이트할 수 있습니까? 신선한 내용을 보려면. Igor Makanu 2020.04.24 21:41 #11374 ascerdfg : 터미널을 닫지 않고 MQL5/logs/*.log 파일을 업데이트하는 방법이 있습니까? 신선한 내용을 보려면. 상황에 맞는 메뉴 에서 터미널을 마우스 오른쪽 버튼으로 클릭 - 열기 , 이를 통해 로그 파일에 액세스할 수 있습니다. 편리하지 않다 ascerdfg 2020.04.25 04:40 #11375 Igor Makanu : 상황에 맞는 메뉴에서 터미널을 마우스 오른쪽 버튼으로 클릭 - 열기 , 이를 통해 로그 파일에 액세스할 수 있습니다. 편리하게 이루어지지 않은 어디를 클릭할까요? Artyom Trishkin 2020.04.25 04:42 #11376 ascerdfg : 어디를 클릭할까요? Rzhevsky는 닥쳐야 했다... Maksym Mudrakov 2020.04.25 10:34 #11377 Maksym Mudrakov : 차트에 OBJ_EDIT 유형의 개체가 두 개 있습니다. 목표는 Tab 키를 눌러 이 두 입력 필드 사이를 전환하는 것입니다. 주요 문제는 키보드 이벤트를 읽는 것이 아니라 프로그래밍 방식으로 입력 필드를 활성화하는 방법입니다. user32.dll을 사용하셔야 하는건 알지만 제가 잘 못해서 도움을 요청드립니다. 고맙습니다. 솔루션 발견: #property strict struct RECT { int Left; // x position of upper-left corner int Top; // y position of upper-left corner int Right; // x position of lower-right corner int Bottom; // y position of lower-right corner }; struct POINT { int posX; // x position int posY; // y position }; #import "user32.dll" void mouse_event( int dwFlags, int dx, int dy, int dwData, int dwExtraInfo); bool GetWindowRect( int hWnd,RECT &lpRect); int GetSystemMetrics( int nIndex); bool GetCursorPos(POINT &lpPoint); bool SetCursorPos( int x, int y); #import string edits[], pref; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { pref= "EA_EDIT_SELECT_" ; int size= 6 ; ArrayResize (edits,size); int width= 100 , heigh= 25 ; int x=width, y=heigh; for ( int i= 0 ; i<size; i++) { string num=( string )(i/ 2 + 1 ); string text= "Name " ; edits[i]=pref+( string )i; if (i% 2 == 0 ) { text= "First " +text+num; x=width; y+=heigh+ 5 ; } else { text= "Last " +text+num; x= 2 *width+ 5 ; } EditCreate(edits[i],x,y,width,heigh,text); } EventEditSelect(edits); return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { ObjectsDeleteAll ( 0 ,pref,- 1 ,- 1 ); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent ( const int id, const long &lparam, const double &dparam, const string &sparam) { if (id == CHARTEVENT_KEYDOWN ) EventEditSelect(edits); else if (id == CHARTEVENT_OBJECT_ENDEDIT ) { bool stateTab= TerminalInfoInteger ( TERMINAL_KEYSTATE_TAB )< 0 ; if (stateTab) EventEditSelect(edits); } } //--------------------------------------------------------------------+ // Create Edit | //--------------------------------------------------------------------+ void EditCreate( string name= "Edit" , // object name int x= 0 , // X coordinate int y= 0 , // Y coordinate int width= 50 , // width int height= 18 , // height string text= "Text" ) // text { ObjectCreate ( 0 ,name, OBJ_EDIT , 0 , 0 , 0 ) ; ObjectSetInteger ( 0 ,name, OBJPROP_XDISTANCE ,x); ObjectSetInteger ( 0 ,name, OBJPROP_YDISTANCE ,y); ObjectSetInteger ( 0 ,name, OBJPROP_XSIZE ,width); ObjectSetInteger ( 0 ,name, OBJPROP_YSIZE ,height); ObjectSetString ( 0 ,name, OBJPROP_TEXT ,text); ObjectSetString ( 0 ,name, OBJPROP_FONT , "Arial" ); ObjectSetInteger ( 0 ,name, OBJPROP_FONTSIZE , 12 ); ObjectSetInteger ( 0 ,name, OBJPROP_ALIGN , ALIGN_CENTER ); ObjectSetInteger ( 0 ,name, OBJPROP_READONLY , false ); ObjectSetInteger ( 0 ,name, OBJPROP_CORNER , CORNER_LEFT_UPPER ); ObjectSetInteger ( 0 ,name, OBJPROP_COLOR , clrBlack ); ObjectSetInteger ( 0 ,name, OBJPROP_BGCOLOR , clrWhite ); ObjectSetInteger ( 0 ,name, OBJPROP_BORDER_COLOR , clrGray ); ObjectSetInteger ( 0 ,name, OBJPROP_BACK , false ); ObjectSetInteger ( 0 ,name, OBJPROP_SELECTABLE , false ); ObjectSetInteger ( 0 ,name, OBJPROP_SELECTED , false ); } //--------------------------------------------------------------------+ // MOVE BETWEEN OBJ_EDIT BY TAB KEY | //--------------------------------------------------------------------+ void EventEditSelect( string &editNames[]) { bool back= TerminalInfoInteger ( TERMINAL_KEYSTATE_SHIFT )< 0 ; int size= ArraySize (editNames); if (size== 0 ) return ; static int index= 0 ; if (!back) { if (index==size- 1 ) index= 0 ; else index++; } else { if (index== 0 ) index=size- 1 ; else index--; } string name=editNames[index]; int x=( int ) ObjectGetInteger ( 0 ,name, OBJPROP_XDISTANCE ); int y=( int ) ObjectGetInteger ( 0 ,name, OBJPROP_YDISTANCE ); int width=( int ) ObjectGetInteger ( 0 ,name, OBJPROP_XSIZE ); int height=( int ) ObjectGetInteger ( 0 ,name, OBJPROP_YSIZE ); MouseClick( int (( 2 *x+width)/ 2 ), int (( 2 *y+height)/ 2 )); } void MouseClick( const int x, const int y) { Sleep ( 50 ); POINT currentPoint; GetCursorPos(currentPoint); POINT clickPoint=ConvertXY(x,y); mouse_event( 0x8007 ,clickPoint.posX,clickPoint.posY, 0 , 0 ); SetCursorPos(currentPoint.posX,currentPoint.posY); Sleep ( 50 ); } POINT ConvertXY( const int x, const int y) { POINT AbsolutePoint; RECT WndRect; int BorderX= 5 ,BorderY= 5 ; int screenX=GetSystemMetrics( 0 ); int screenY=GetSystemMetrics( 1 ); GetWindowRect(WindowHandle( _Symbol , _Period ),WndRect); AbsolutePoint.posX= int ((x+WndRect.Left+BorderX)* 65535 /screenX); AbsolutePoint.posY= int ((y+WndRect.Top +BorderY)* 65535 /screenY); return (AbsolutePoint); } Roman Sharanov 2020.04.25 15:54 #11378 MQL5, ObjectCreate는 아무 것도 그리지 않으며, 개체는 개체 목록에도 표시되지 않습니다. OnInit에서 생성이 발생합니다. 이것이 문제일까요? 이 경우 차트에서 로봇을 제거 하면 생성된 개체 가 표시됩니다. Alexey Viktorov 2020.04.25 16:04 #11379 Roman Sharanov : MQL5, ObjectCreate는 아무 것도 그리지 않으며, 개체는 개체 목록에도 표시되지 않습니다. OnInit에서 생성이 발생합니다. 이것이 문제일까요? 이 경우 차트에서 로봇을 제거 하면 생성된 개체 가 표시됩니다. 물체의 좌표에 대한 비용과 시간이 0으로 판명되었을 수 있습니다. 다음과 같이 확인하십시오. Ctrl+B를 누르고 나타나는 대화 상자에서 "전체" 버튼을 클릭하고 기존 개체 목록을 확인합니다. 있는 경우 속성을 열고 좌표를 확인합니다. ascerdfg 2020.04.25 16:05 #11380 Artyom Trishkin : Rzhevsky는 닥쳐야 했다... 마우스 오른쪽 버튼을 어디에서 눌러야 합니까? 1...113111321133113411351136113711381139114011411142114311441145...1953 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
오랫동안 SB를 사용하지 않아 반은 기억나지 않지만 매번 OBJ_EDIT 개체의 ChartRedraw()를 수행하여 프로그래밍 방식으로 선택 및 선택 해제하려고 하면 SB에서 개체 이름을 가져올 수 있습니다. Name 메서드여야 합니다.
하지만 만약에?
추신: 그리고 Sleep() 은 ChartRedraw() 에 가장 필요하지만 Sleep() 은 표시기에서 작동하지 않습니다.
개체의 OBJPROP_SELECTED 속성이 TRUE라는 것을 의미한다면 그게 아닙니다. 이 경우 개체는 차트에서 강조 표시되지만 입력 필드는 활성화되지 않습니다.
패널에 뭐가 있는지 확인해보니 OBJ_EDIT 객체 선택이 안되네요
그런 다음 포럼을 검색하십시오.
"탭"
탭
"입력 포커스"
터미널을 닫지 않고 MQL5/logs/*.log 파일을 업데이트하는 방법이 있습니까? 신선한 내용을 보려면.
상황에 맞는 메뉴 에서 터미널을 마우스 오른쪽 버튼으로 클릭 - 열기 , 이를 통해 로그 파일에 액세스할 수 있습니다.
편리하지 않다
상황에 맞는 메뉴에서 터미널을 마우스 오른쪽 버튼으로 클릭 - 열기 , 이를 통해 로그 파일에 액세스할 수 있습니다.
편리하게 이루어지지 않은
어디를 클릭할까요?
Rzhevsky는 닥쳐야 했다...
차트에 OBJ_EDIT 유형의 개체가 두 개 있습니다.
목표는 Tab 키를 눌러 이 두 입력 필드 사이를 전환하는 것입니다.
주요 문제는 키보드 이벤트를 읽는 것이 아니라 프로그래밍 방식으로 입력 필드를 활성화하는 방법입니다.
user32.dll을 사용하셔야 하는건 알지만 제가 잘 못해서 도움을 요청드립니다.
고맙습니다.
솔루션 발견:
이 경우 차트에서 로봇을 제거 하면 생성된 개체 가 표시됩니다.
MQL5, ObjectCreate는 아무 것도 그리지 않으며, 개체는 개체 목록에도 표시되지 않습니다. OnInit에서 생성이 발생합니다. 이것이 문제일까요?
이 경우 차트에서 로봇을 제거 하면 생성된 개체 가 표시됩니다.
물체의 좌표에 대한 비용과 시간이 0으로 판명되었을 수 있습니다. 다음과 같이 확인하십시오. Ctrl+B를 누르고 나타나는 대화 상자에서 "전체" 버튼을 클릭하고 기존 개체 목록을 확인합니다. 있는 경우 속성을 열고 좌표를 확인합니다.
Rzhevsky는 닥쳐야 했다...