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

 
Alexandr Nikolaev :
터미널에 로드된 이력 중 마감된 주문과 삭제된 주문 검색에서 티켓으로 OrderSelect가 나온다고? 이것은 설명서에 언급되어 있지 않습니다.

여기에서 실제로 터미널에서 찾을 수 있는 데이터만 EA에서 사용할 수 있습니다.

이것은 차트의 히스토리에도 적용됩니다. 제한하면 어드바이저도 터미널에서 볼 수 없는 차트의 막대에 액세스할 수 없습니다.


알렉세이 마브린 :

OrdersHistoryTotal의 설명에 기록되어 있습니다.

티켓으로 주문을 선택할 때:

풀 매개변수는 무시됩니다.

https://docs.mql4.com/ru/trading/orderselect
 
누군가가 이름을 모른 채 폴더의 최신 파일 핸들을 얻는 방법을 말해 줄 수 있습니까? 즉, 스크립트를 실행할 때 가장 최근에 생성된 파일에 액세스해야 하므로 루프에 무엇을 넣어야 하는지 알 수 없습니다. MQL4
 
hoka777 :
누군가가 이름을 모른 채 폴더의 최신 파일 핸들을 얻는 방법을 말해 줄 수 있습니까? 즉, 스크립트를 실행할 때 가장 최근에 생성된 파일에 액세스해야 하므로 루프에 무엇을 넣어야 하는지 알 수 없습니다. MQL4

FileFindFirst , FileFindNext, FileGetInteger

 

이 항목은 무엇을 의미합니까?

 int tf= 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 ;
 
Seric29 :

이 항목은 무엇을 의미합니까?

이것과 동일:

 int tf= 1 | 2 | 4 | 8 | 16 | 32 | 64 ;

누군가 어딘가에서 깃발을 사용하고 있습니다. 이 항목은 7개의 플래그가 tf 변수에 저장되어 있으며 모두 콕킹되어 있다고 말합니다.

 

주문 추적.

안녕하세요, Lord 포럼 사용자입니다.

복사기 주문을 추적해야 하는 필요성에 직면했고 문제의 복잡성에 놀랐습니다.

일.

시스템에서 가능한 지연과 부하를 최소화하면서 시장 및 보류 중인 주문의 개시, 마감 및 수정을 추적합니다.

가능한 해결책.

하나.   매 틱마다 전체 주문 목록을 모니터링하는 것은 아직까지는 그다지 매력적이지 않습니다.

2. MQL 5에는 좋은 OnTrade () 및 OnTradeTransaction () 기능이 있지만 MQL 4에서 유사한 기능을 찾지 못했습니다.

3. 차트의 마지막 주문 라인과 TP 로 조작을 추적하는 것이 매력적으로 보입니다.   SL 사용 그러나 OnChartEvent , 이러한 개체는 표시되지 않으며 함수에서 처리되지 않습니다. "보여주는" 방법이 있습니까?

4. 이제 일반 로그에서 정보를 얻을 가능성에 대해 생각하고 있습니다. 또한 모니터링해야하지만 더 적습니다.

아직 만족스러운 해결책을 찾지 못했습니다. 누군가 이미 파헤친 것일까요?

 
Artyom Trishkin :

이것과 동일:

누군가 어딘가에서 깃발을 사용하고 있습니다. 이 항목은 7개의 플래그가 tf 변수에 저장되어 있으며 모두 콕킹되어 있다고 말합니다.

 int tf= 1 | 2 | 4 | 8 | 16 | 32 | 64 ;

그리고 왜 세로 막대기로 사용법을 적었을까요? 이 플래그의 각 부분에 액세스할 수 있습니까? 다음은 그러한 코드입니다.

     if ( _Period == 1440 ){diff= 86399 ; tf= 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 ;} // выбор старшего ТФ, с него скрипт рисует на младших ТФ
     if ( _Period == 240 ) {diff= 14340 ; tf= 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 ;}
     if ( _Period == 60 )  {diff= 3540 ;  tf= 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 ;}
     if ( _Period == 30 )  {diff= 1740 ;  tf= 0x0001 | 0x0002 | 0x0004 | 0x0008 ;}
     if ( _Period == 15 )  {diff= 840 ;   tf= 0x0001 | 0x0002 | 0x0004 ;}
     if ( _Period == 5 )   {diff= 240 ;   tf= 0x0001 | 0x0002 ;}  

    cl_timeM1=op_timeM1 + diff ;                     // координата даты и времени бара М1 по цене CLOSE старшего ТФ
    cl_NumBarM1= iBarShift ( NULL , PERIOD_M1 ,cl_timeM1); // индекс бара М1
    cl_priceM1= iClose ( NULL , PERIOD_M1 ,cl_NumBarM1);   // координата цены CLOSE бара М1
      
//--- трендовые линии -----------------------------------------------+ 
   for (i= 0 ;i< 1000000 ;i++){name1= "Point_" +i; if ( ObjectFind (name1)< 0 ) break ;}     // позволяет рисовать множество объектов с одинаковым именем, добавляя к имени порядковый номер
  
   ObjectCreate ( 0 ,name1, OBJ_TREND , 0 ,op_timeM1,op_priceM1,cl_timeM1,cl_priceM1); // создать объект трендовая линия с координатами цены и времени  
   ObjectSet(name1, OBJPROP_COLOR , clrWhite );                                     // задать цвет объекта
   ObjectSet(name1, OBJPROP_STYLE , STYLE_DASH );                                   // задать стиль объекта (пунктир, линия...)
   ObjectSet(name1, OBJPROP_RAY , false );
   Строчка ниже будет отрисовываться нужное количество раз или что?
   ObjectSet(name1, OBJPROP_TIMEFRAMES ,tf);    
 
Seric29 :

그리고 왜 세로 막대기로 사용법을 적었을까요?

"수직 막대기"라고 부르는 한 이 코드를 읽을 수 없습니다.

도움말 읽기 https://www.mql5.com/ru/docs/basis/operations/bit

 
Igor Makanu :

"수직 막대기"라고 부르는 한 이 코드를 읽을 수 없습니다.

도움말 읽기 https://www.mql5.com/ru/docs/basis/operations/bit

나는 (몇 번인지 모르겠다) 나는 이 사용의 예가 없고 이것이 왜 필요한지 명확하지 않기 때문에 잘 이해하지 못했습니다. 예가 있다

 int a= 305 ;
int b=a;      
int shift= 37 ; 
shift++; 
a=a>>shift;    // 38 в двоичном представлении будет выглядеть как '100110', младшие 5 бит '00110' представляют число 6 
b=b>>6;

어떻게 든이 라인이 가능합니까?

 if ( _Period == 1440 ){diff= 86399 ; tf= 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 ;}

카운터를 통해 더 짧게 쓰시겠습니까?

 
Seric29 :

나는 (몇 번인지 모르겠다) 나는 이 사용의 예가 없고 이것이 왜 필요한지 명확하지 않기 때문에 잘 이해하지 못했습니다. 예가 있다

당신은 그 예를 읽지 않았습니다.

비트 OR 연산

x 및 y의 이진 표현에 대한 비트 OR 연산입니다. 표현식의 값은 x 또는 y가 0을 포함하지 않는 모든 비트에서 1을 포함하고 다른 모든 비트에서 0을 포함합니다.

b = x | 와이;

예시:

 char a= 'a' ,b= 'b' ;
//--- операция ИЛИ
   char c=a|b;
   Print ( "a = " ,a, "  b = " ,b);
   Print ( "a | b = " ,c);
// Результат будет такой:
// a = 97   b = 98
// a | b = 99