찻주전자의 질문 - 페이지 162

 
Karlson :
DBL _MAX 가 있을 것입니다.
:-)
 

핸들을 삭제했는데도 비활성화된 nandle이 반환되지 않는 이유는 무엇인가요?

   int        indicator_handle= iCustom (
   NULL ,
   PERIOD_CURRENT ,
   "Examples\\ZigzagColor"
   );
   Print (indicator_handle);
   bool   a= IndicatorRelease (
   indicator_handle //,
   );
   Print (a);
   Print (indicator_handle);

첫 번째 인쇄는 10, 두 번째는 true, 세 번째는 다시 10입니다. 잠시 슬립을 설정했는데 여전히 10입니다.

-1( INVALID_HANDLE )이어야 한다고 생각합니다. 내가 잘못 생각합니까?

Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы - Документация по MQL5
 
Silent :

핸들을 삭제했는데도 비활성화된 nandle이 반환되지 않는 이유는 무엇인가요?

첫 번째 인쇄는 10, 두 번째는 true, 세 번째는 다시 10입니다. 잠시 슬립을 설정했는데 여전히 10입니다.

-1( INVALID_HANDLE )이어야 한다고 생각합니다. 내가 잘못 생각합니까?

삭제된 표시기는 물리적으로 즉시 삭제되는 것이 아니라 일시 중지(아마도 몇 분) 후 동일 또는 다른 프로그램(캐싱 옵션)에서 다시 열 경우에 삭제됩니다.

대부분의 경우 이것이 편리합니다. 문제는 많은 표시기 세트의 버퍼를 루프에서 읽는 경우에만 발생할 수 있습니다(너무 커서 모든 표시기를 한 번에 메모리에 저장할 수 없음).

// 이 경우에만 프로그램의 표시기를 완전히 해제하는 것이 좋습니다.

// IndicatorRelease() 함수의 다른 모든 사용은 "인종적으로 올바르지 않음"입니다. 작업이 끝나면 표시기가 이미 해제되기 때문입니다.

따라서 역설: kagbe 함수는 쓸모가 없습니다. 캐싱이 모든 코셔 사용 사례를 죽이기 때문입니다.

이 경우 Renat는 어떻게든 "즉시 릴리스" 옵션을 만들겠다고 약속했지만 여전히 매우 바쁜 것 같습니다. ;)

--

이것은 답변의 첫 번째 부분과 비슷합니다(이 부분이 없으면 두 번째 부분을 이해할 수 없습니다).

이제 INVALID_HANDLE 에 대해 알아보겠습니다. 내가 이해하는 것처럼 동적 개체를 해제하는 함수와 삭제 연산자는 자체적으로 INVALID_HANDLE 값을 포인터에 할당하지 않으며 핸들이 가리키는 개체 삭제만 처리합니다. 실패 시 INVALID_HANDLE 값을 가진 포인터에 메모리 할당 기능(new 연산자 포함)만 강제로 할당됩니다. 따라서 포인터의 유효성을 확인하는 올바른 방법은 CheckPointer() 함수입니다. 이 함수는 내가 이해하는 것처럼 문자 그대로 시스템 핸들 테이블을 살펴보고 개체를 찾고 개체가 발견되면 핸들 유형을 반환합니다. , 또는 실패하면 0입니다.

이제 포인터(핸들)로 작업하는 논리가 조금 더 명확해지기를 바랍니다. 귀하의 예에서 나온 결과처럼. 모든 것이 정확합니다. 표시기는 그룹 액세스 개체이고 첫 번째 휘파람에서 물리적으로 삭제되지 않습니다(따라서 CheckPointer() 조차도 0이 아닌 값을 반환함). 버그가 포인터에서 INVALID_HANDLE 값을 얻기를 바라는 것은 말할 것도 없습니다. IndicatorRelease() 함수에 전달한 후 변수 값으로 .

 

MetaTrader 5의 주문, 위치 및 거래 기사는 " 각 거래는 하나의 특정 주문을 기반으로 하지만 하나의 주문은 많은 거래를 생성할 수 있습니다 . 예를 들어 10랏을 구매하는 주문은 부분적으로 여러 연속 거래를 통해 실행할 수 있습니다. 실행 ". 예를 들어 직위를 개설하려는 경우 이해합니다. 10랏의 경우 여러 거래가 내역에 나타날 수 있습니다. 내 전략에 따르면 같은 방향의 1 및 2 위치, 어드바이저(MT4의)는 1.0 로트, 3rd 및 2.0 로트를 엽니다. MT5에서는 예를 들어 역사상 첫 번째 위치를 열 때 발생할 수 있습니다. 2개 이상의 거래. 예를 들어, 고문은 기록을 통해 실행하는 다음 것(전략에 따라 두 번째 것)을 열기를 원할 것입니다. 3위이며 잘못된 로트로 열릴 것입니다. 어쩐지 불편하다.

누군가가 이 문제를 해결하거나 링크를 던지는 방법을 알고 있을 수 있습니다.

 
MetaDriver :

감사합니다. 그게 바로 당신이 필요로 하는 것입니다.

// 인형을 위한 nelp by nelp - 기사에서 필요한 것입니다.

 

예를 들어 M5(현재, 화면) 및 H1과 같은 두 가지 다른 시간 프레임을 사용 하여 표시기를 만들 려고 합니다. 서로 다른 시간대 간에 가격을 동기화하는 방법은 무엇입니까? 예를 들어, M5에서 표시기의 과거 값을 계산할 때 동일한 시간의 H1에서 자동으로 가격을 펌핑하고 싶습니다(즉, ArraySetAsSeries 이후 두 시간 프레임의 0 막대는 OnTick에서와 같이 현재 과거 시간에 해당합니다. , 화면의 가장 최근 막대로 이동하지 않음). 이것이 불가능하고 막대의 시간을 수동으로 확인해야 하는 경우 표시기에 대해 onTick과 같은 일종의 동기화 기능을 추가하는 것도 나쁘지 않을 것입니다.

이제 테스터에서 지표를 테스트해 보았습니다. 멋진 일입니다. 그리고 과거 계산된 값이 화면에 저장되지 않는 이유는 무엇입니까?

 
gpwr :

예를 들어 M5(현재, 화면) 및 H1과 같은 두 가지 다른 시간 프레임을 사용 하는 표시기를 만들 려고 합니다. 서로 다른 시간대 간에 가격을 동기화하는 방법은 무엇입니까? 예를 들어, M5에서 표시기의 과거 값을 계산할 때 동일한 시간의 H1에서 자동으로 가격을 펌핑하고 싶습니다(즉, ArraySetAsSeries 이후 두 시간 프레임의 0 막대는 OnTick에서와 같이 현재 과거 시간에 해당합니다. , 화면의 가장 최근 막대로 이동하지 않음). 이것이 불가능하고 막대의 시간을 수동으로 확인해야 하는 경우 표시기에 대해 onTick과 같은 일종의 동기화 기능을 추가하는 것도 나쁘지 않을 것입니다.

이제 테스터에서 지표를 테스트해 보았습니다. 멋진 일입니다. 그리고 과거 계산된 값이 화면에 저장되지 않는 이유는 무엇입니까?

CopyXXXX() 함수의 오버로드 중 하나를 사용하십시오.

디버깅 시 데이터가 복사되는 방향을 확인하십시오(1개 이상 복사된 경우).

Обращение по начальной дате и количеству требуемых элементов

int    CopyRates (
   string            symbol_name,       // имя символа
   ENUM_TIMEFRAMES   timeframe,         // период
   datetime          start_time,         // с какой даты
   int               count,             // сколько копируем
   MqlRates          rates_array[]       // массив, куда будут скопированы данные
   );
 
 
Urain :

CopyXXXX() 함수의 오버로드 중 하나를 사용하십시오.

디버깅 시 데이터가 복사되는 방향을 확인하십시오(1개 이상 복사된 경우).

이해했다. 고맙습니다.
 

안녕하세요!

현재 분 차트에 전날의 최대값과 최소값을 그리는 지표의 코드를 알려주실 수 있습니까?

고마워!

 

오랜만에 =).

의 말을하자. 시점이 있습니다. 예: D'03.07.2005 13:48:12'.

이 기간이 포함된 바(특정 기간)의 시간을 어떻게 알 수 있나요?

다음과 같은 기능이 있으면 좋을 것입니다.

datetime УзнатьВремяБараПоВремениПользователя (datetime времяПользователя, ENUM_TIMEFRAMES периодБаров) 

... 그리고 그 순간에 거래가 없으면 음수 값을 반환합니다.

자, 이런 기능이 있나요?