MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1139

 
ascerdfg :
마우스 오른쪽 버튼을 어디에서 눌러야 합니까?

Ctrl T는 하단의 메뉴, Trade, Assets, ....., 마지막 저널을 불러옵니다. 로그를 클릭하고 레코드 중 하나에서 마우스 오른쪽 버튼을 클릭하면 보기가 표시됩니다.

 
Alexey Viktorov :

물체의 좌표에 대한 비용과 시간이 0으로 판명되었을 수 있습니다. 다음과 같이 확인하십시오. Ctrl+B를 누르고 나타나는 대화 상자에서 "전체" 버튼을 클릭하고 기존 개체 목록을 확인합니다. 있는 경우 속성을 열고 좌표를 확인합니다.

디버그에서 실행했는데 모든 개체를 만들 때 모든 것이 정상입니다.

 
ascerdfg :
마우스 오른쪽 버튼을 어디에서 눌러야 합니까?

특히 Rzhevsky : 올바른 위치를 찌르는 마우스

 
Maxim Kuznetsov :

특히 Rzhevsky : 올바른 위치를 찌르는 마우스

chessno 다음 입력하여 잡지가 호출된 곳을 찾고 단어 보기를 좋아하면 클릭했습니다. 그리고 로그가 있습니다))))) 그런데, 컨트롤이나 뭔가를 통해 로그에 대한 호출이 있습니까?

 

안녕하세요.

새로 배치된 객체를 포함하여 객체의 속성을 항상 나머지보다 높게 설정할 수 있습니까? 객체가 서로 겹칠 때 원하는 객체가 맨 위에 겹치지 않도록 하시겠습니까?

처음에는 OBJPROP_ZORDER 속성이 항상 원하는 개체를 가장 높은 값으로 설정하여 도움이 될 수 있다고 생각했습니다. 그러나 실제로 밝혀진 바와 같이 이것은 클릭을 잡기 위한 우선 순위일 뿐입니다. 시각적으로 물체는 무엇보다 떠오르지 않습니다.

나는 또한 객체가 마지막에 그려지면 나머지보다 시각적으로 확실히 높다는 것을 실제로 발견했습니다. 따라서 내가 모르는 속성을 사용하거나 차트에서 개체 수가 변경될 때마다 맨 위에 겹치지 않아야 하는 개체를 다시 그립니다. 그러나 다시 그릴 때 문제가 발생했습니다. 삭제하고 다시 그린 개체가 깜박입니다. 개체를 깜박임 없이 멋지게 다시 그리거나 위에 겹치지 않게 하는 방법이 있습니까?


 
Oleg Remizov :

안녕하세요.

새로 배치된 객체를 포함하여 객체의 속성을 항상 나머지보다 높게 설정할 수 있습니까? 객체가 서로 겹칠 때 원하는 객체가 맨 위에 겹치지 않도록 하시겠습니까?

처음에는 OBJPROP_ZORDER 속성이 항상 원하는 개체를 가장 높은 값으로 설정하여 도움이 될 수 있다고 생각했습니다. 그러나 실제로 밝혀진 바와 같이 이것은 클릭을 잡기 위한 우선 순위일 뿐입니다. 시각적으로 물체는 무엇보다 떠오르지 않습니다.

나는 또한 객체가 마지막에 그려지면 나머지보다 시각적으로 확실히 높다는 것을 실제로 발견했습니다. 따라서 내가 모르는 속성을 사용하거나 차트에서 개체 수가 변경될 때마다 맨 위에 겹치지 않아야 하는 개체를 다시 그립니다. 그러나 다시 그릴 때 문제가 발생했습니다. 삭제하고 다시 그린 개체가 깜박입니다. 개체를 깜박임 없이 멋지게 다시 그리거나 위에 겹치지 않게 하는 방법이 있습니까?


OBJPROP_TIMEFRAMES 속성:

OBJ_NO_PERIODS - 모든 기간에 보이지 않음,

OBJ_ALL_PERIODS - 모든 기간에 표시

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
  • www.mql5.com
Комбинация флагов видимости объекта определяет таймфреймы графика, на которых объект отображаем. Для установки/получения значения свойства OBJPROP_TIMEFRAMES можно использовать функции ObjectSetInteger()/ObjectGetInteger...
 
Oleg Remizov :

안녕하세요.

새로 배치된 객체를 포함하여 객체의 속성을 항상 나머지보다 높게 설정할 수 있습니까? 객체가 서로 겹칠 때 원하는 객체가 맨 위에 겹치지 않도록 하시겠습니까?

처음에는 OBJPROP_ZORDER 속성이 항상 원하는 개체를 가장 높은 값으로 설정하여 도움이 될 수 있다고 생각했습니다. 그러나 실제로 밝혀진 바와 같이 이것은 클릭을 잡기 위한 우선 순위일 뿐입니다. 시각적으로 물체는 무엇보다 떠오르지 않습니다.

나는 또한 객체가 마지막에 그려지면 나머지보다 시각적으로 확실히 높다는 것을 실제로 발견했습니다. 따라서 내가 모르는 속성을 사용하거나 차트에서 개체 수가 변경될 때마다 맨 위에 겹치지 않아야 하는 개체를 다시 그립니다. 그러나 다시 그릴 때 문제가 발생했습니다. 삭제하고 다시 그린 개체가 깜박입니다. 개체를 깜박임 없이 멋지게 다시 그리거나 위에 겹치지 않게 하는 방법이 있습니까?


객체는 색인에 따라 표시됩니다.

 string    ObjectName ( 
   int     object_index   // номер в списке объектов
   );

시각적으로 전경에서 가장 높은 인덱스를 가진 객체가 될 것입니다.

나는 다음과 같은 방법으로 이 상황에서 벗어납니다.

 string pref= "own" ; //префикс в именах своих объектов
bool CheckOtherObj( string &arrObjOther[]){
   CheckOtherObjDelete(&arrObjOther);
   for ( int i= ObjectsTotal ( 0 ,- 1 ,- 1 )- 1 ; i>= 0 ; i--){
       string name= ObjectName ( 0 ,i,- 1 ,- 1 );
       if ( StringFind (name,pref)>= 0 ) continue ;
       bool add= true ;
       for ( int k= ArraySize (arrObjOther)- 1 ; k>= 0 ; k--){
         if (arrObjOther[k]==name){
            add= false ;
             break ;
         }
      }
       if (add){
         AddToArr(name,arrObjOther);
         return ( true );
      }
   }
   return ( false );
}
void CheckOtherObjDelete( string &arrObjOther[]){
   string arrdel[];
   ArrayFree (arrdel);
   for ( int k= 0 ; k< ArraySize (arrObjOther); k++){
       bool add= true ;
       for ( int i= 0 ; i< ObjectsTotal ( 0 ,- 1 ,- 1 ); i++){
         string n= ObjectName ( 0 ,i,- 1 ,- 1 );
         if ( StringFind (n,pref)>= 0 ) continue ;
         if (n==arrObjOther[k]){
            add= false ;
             break ;  
         }
      }
       if (add) AddToArr(arrObjOther[k],arrdel);
   }
   if ( ArraySize (arrdel)> 0 ){
       string temp[];
       ArrayCopy (temp,arrObjOther);
       ArrayFree (arrObjOther);
       for ( int i= 0 ; i< ArraySize (temp); i++){
         bool add= true ;
         for ( int k= 0 ; k< ArraySize (arrdel); k++){
             if (arrdel[k]==temp[i]){
               add= false ;
               break ;
            }
         }
         if (add)AddToArr(temp[i],arrObjOther);
      }
   }
}
void AddToArr( string value, string &arr[]){
   int s= ArraySize (arr);
   ArrayResize (arr,s+ 1 );
   arr[s]=value;
}


이 경우 내 코드에는 프로그램(기타)에서 생성되지 않은 객체 이름 배열이 있습니다. 새로운 다른 개체가 나타나자 마자 프로그램에서 만든 모든 개체(내 것)를 삭제하고 다시 만듭니다. 이 경우 해당 개체는 항상 개체 목록에서 가장 높은 인덱스를 가지므로 시각적으로 전경에 표시됩니다. 그러나 차트에서 제거된 다른 개체의 배열도 항상 지워야 배열이 제어할 수 없을 정도로 커지지 않습니다.

개체를 제어해야 하는 경우 더 쉽습니다. 개체의 인덱스를 제어하기만 하면 됩니다.

 
Maksym Mudrakov :
객체는 색인에 따라 표시됩니다.

시각적으로 전경에서 가장 높은 인덱스를 가진 객체가 될 것입니다.

나는 다음과 같은 방법으로 이 상황에서 벗어납니다.


이 경우 내 코드에는 프로그램(기타)에서 생성되지 않은 객체 이름 배열이 있습니다. 새로운 다른 개체가 나타나자 마자 프로그램에서 만든 모든 개체(내 것)를 삭제하고 다시 만듭니다. 이 경우 해당 개체는 항상 개체 목록에서 가장 높은 인덱스를 가지므로 시각적으로 전경에 표시됩니다. 그러나 차트에서 제거된 다른 개체의 배열도 항상 지워야 배열이 제어할 수 없을 정도로 커지지 않습니다.

개체를 제어해야 하는 경우 더 쉽습니다. 개체의 인덱스를 제어하기만 하면 됩니다.

나는 무엇을해야하는지 위에 보여 주었다. 개발자가 추천하는 방법이 있으면 왜 그렇게 귀찮게합니까?

 
안녕하세요.

ATP 지표를 가격 차트로 옮기고 싶습니다. 하지만 정확히 방법을 알 수 없습니다. 따라서 같은 기간의 중간선에서 변동성의 최대 움직임을 보여줍니다. 누구든지 코드를 가지고 있다면 공유해주시면 감사하겠습니다.
 
안녕하세요! 검색에 실패한 한 달 후에 머리에 끔찍한 혼란이 생겼기 때문에 어디서부터 시작해야 할지 모르겠습니다. 이 스레드에 게시하기로 결정했습니다. 잘못된 곳에서 이 문제를 언급했다면 사과드립니다. 누군가 이 주제를 제기하는 것이 더 나은 스레드를 말해 줄 수 있습니까? 글쎄, 내 질문의 본질은 다음과 같습니다. 전문가 또는 지표에 의해 계측기 차트에 수신된 정보를 추가로 표시하기 위해 타사 사이트에서 MT4의 데이터 수신을 구성하는 가장 쉽고 쉬운 방법은 무엇입니까? 스크립트? 현재 "MT4 데이터 디렉토리"\MQL4\Files에서 Book1.csv 파일을 여는 자체 스크립트를 사용합니다. 스크립트를 실행 하기 전에 Chrome 브라우저를 시작하고 리소스 페이지로 이동하여 이 페이지에서 도구를 선택한 다음 이 도구에 대해 표시할 데이터 유형(페이지 주소는 변경되지 않음)을 선택해야 합니다. 제한된 가격 수준에서 값 매개변수가 있는 테이블 형식의 이 도구에 대한 데이터, Chrome 브라우저용 Table Capture 확장을 사용하여 리소스 페이지에 있는 테이블에서 클립보드로 데이터를 복사한 다음 Excel을 엽니다. 클립보드의 데이터를 Excel 시트에 붙여넣습니다. 그런 다음 Excel에서 숫자 데이터를 변환하고(숫자의 쉼표를 점으로 대체) csv 파일을 터미널의 데이터 디렉터리에 저장합니다. 이 일련의 작업을 수행한 후 스크립트를 실행합니다. 분명히 WebRequest 기능은 이 작업에 적합하지 않습니다. 처음에 지정된 페이지 주소에 데이터가 없습니다(도구 및 데이터 유형을 선택한 후에 나타남). 나는 당신에게 올바른 방향을 알려줄 모든 사람에게 감사할 것입니다(분명히 이러한 방향이 여러 개 있을 수 있음).