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

 
Andrey Sokolov :

인사말. 말해 주세요.

값이 아니라 일부 변수의 이름을 가져올 수 있습니까? 예를 들어, 변수의 이름을 인쇄하십시오.

#define PRINTVAR(x) Print(" " ##x); Print(x)
void OnStart()
  {
      long anyvar=(long)TimeLocal();
      PRINTVAR(anyvar);
  
  }

결과:

2020.08.24 14:46:05.394    test (USDCHF,H1)     anyvar
2020.08.24 14:46:05.394    test (USDCHF,H1)    1598280365

아마도 미공개 기능의 기능일 것입니다 :-) "C"와 유사하지만 사용성 측면에서 아직 완성되지 않았습니다.

 
Andrey Sokolov :

변수 자체의 이름을 가져와야 합니다.

이름도 모르고 특징도 없이는 할 수 없는 일이다. 예를 들어, 모든 변수의 이름을 5로 가져오고 해당 이름, 발견, 표시를 표시할 수 있습니다. 또는 모든 문자열 변수의 이름. 그러나 어쨌든 이것은 변수의 열거입니다.

 
감사합니다 Maxim Kuznetsov
 
Andrey Sokolov :
감사합니다 Maxim Kuznetsov


예, 질문은 또한 이름으로 변수를 선택하는 것입니다.

예를 들어, 변수 a1, a2, a3, a4, a5 등이 있습니다. 이 변수를 반복하고 "a"와 5가 있는 변수를 선택하고 사용해야 합니다.

그럼 거의 아무것도. 변수 이름은 전처리기(#매크로)에서만 액세스할 수 있습니다.

예를 들어 변수 대신 이름에서 개체의 해시 배열을 사용하는 것과 같이 내부 논리를 변경해야 합니다. 그러면 키와 값을 즉시 사용할 수 있습니다. 또는 장기 보관인 경우 zayuzat SQLite. 또는 혼합 :-)

그러나 이것은 알고리즘에 대한 지식 없이는 조언이 낭비되는 것입니다.

 
Andrey Sokolov :

예, 질문은 또한 이름으로 변수를 선택하는 것입니다.

예를 들어 변수 a1, a2, a3, a4, a5 등이 있습니다. 이 변수를 반복하고 "a"와 5가 있는 변수를 선택하고 사용해야 합니다.

배열에 이름을 쓰고 배열을 반복합니다.

 

모두에게 좋은 하루! 내 질문은 MT4 테스터, mql4 언어에 관한 것입니다.
배열을 초기화할 때 내가 잘못한 것이 무엇인지 알려주세요. 750개의 요소가 있는 1차원 배열을 만들었습니다. 그리고 750개의 모든 요소는 50.0 값으로 초기화되었습니다.

즉, 첫 번째 및 후속 틱에서 인덱스 0 에 있는 배열의 첫 번째 요소는 값 50.0을 가져야 하고 인덱스 749에 있는 배열의 마지막 요소는 값 50.0을 가져야 합니다.

실제로 배열의 마지막 요소의 값은 0입니다. 그리고 첫 번째 요소는 예상대로 50.0입니다.

문제. 초기화 후 배열의 모든 값(마지막 값 포함)을 어떻게 50.0 값으로 만들 수 있습니까?

여기 내 코드가 있습니다

더블 S_L[750]={50.0};

무효 OnTick()
{
if (Day()==4&&Month()==1&&Year()==2010&&Hour()==0&&Minute()==0)

Print("========================749======== ",S_L[749]," = 0= ",S_L [ 0]);

}

아래는 로그의 Print() 값입니다.

2020.08.24 17:43:55.427 GBPUSD,M1: 0:00:00.047(총 시간 0:00:02.422)에 처리된 52255개의 틱 이벤트(1440개 막대, 53256개 막대 상태)

2020.08.24 17:43:55.407 2010.01.04 00:00:53 TESTER(B.ORD.) GBPUSD,M1: =========================749===== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:52 테스터(B.ORD.) GBPUSD,M1: =============================== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:50 테스터(B.ORD.) GBPUSD,M1: =========================749===== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:47 테스터(B.ORD.) GBPUSD,M1: =============================== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:45 테스터(B.ORD.) GBPUSD,M1: =============================== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:43 테스터(B.ORD.) GBPUSD,M1: ========================749===== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:41 테스터(B.ORD.) GBPUSD,M1: ========================749===== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:40 테스터(B.ORD.) GBPUSD,M1: =============================== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:37 테스터(B.ORD.) GBPUSD,M1: ============================== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:35 테스터(B.ORD.) GBPUSD,M1: =========================749===== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:32 TESTER(B.ORD.) GBPUSD,M1: =============================== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:30 테스터(B.ORD.) GBPUSD,M1: =========================749===== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:28 테스터(B.ORD.) GBPUSD,M1: =========================749===== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:26 테스터(B.ORD.) GBPUSD,M1: =========================749===== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:25 테스터(B.ORD.) GBPUSD,M1: =============================== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:22 테스터(B.ORD.) GBPUSD,M1: ============================== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:20 테스터(B.ORD.) GBPUSD,M1: =============================== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:17 테스터(B.ORD.) GBPUSD,M1: =========================749===== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:15 테스터(B.ORD.) GBPUSD,M1: =========================749===== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:13 테스터(B.ORD.) GBPUSD,M1: ========================749===== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:11 테스터(B.ORD.) GBPUSD,M1: =============================== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:10 테스터(B.ORD.) GBPUSD,M1: ========================749===== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:07 테스터(B.ORD.) GBPUSD,M1: ========================749===== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:05 테스터(B.ORD.) GBPUSD,M1: =============================== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:02 테스터(B.ORD.) GBPUSD,M1: ========================749===== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:00 테스터(B.ORD.) GBPUSD,M1: =========================749===== = 0 = 0= 50

2020.08.24 17:43:55.385 2010.01.01 00:00:00 TESTER(B.ORD.) 테스트 시작


도와 주셔서 감사합니다


Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Переменные должны быть объявлены перед их использованием. Для идентификации переменных используются уникальные имена. Описания переменных используются для их определения и объявления типов. Описание не является оператором. Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов массива...
 
ANDREY :

여기, 내 것이요

어디에?)))

 
Alexey Viktorov :

어디에?)))

내 편집 된 게시물의 위. 당신의 응답을 주셔서 감사합니다.

 

ANDREY :

문제. 초기화 후 배열의 모든 값(마지막 값 포함)을 어떻게 50.0 값으로 만들 수 있습니까?

 int OnInit ()
{
   ArrayInitialize (S_L, 50.0 );
}
 
Igor Makanu :

팁 고마워. 그 과정에서 제가 분명히 말씀드리고 싶은 것은..... Kovalev의 교과서에는 특별한 기능 없이 배열을 선언과 동시에(저처럼) 초기화 할 수 있다고 쓰여 있습니다. Kovalev의 교과서가 다소 구식이라는 것을 알고 있습니다. 문제. 올바르게, 나는 이제 mql4에서 함수를 사용하여 독점적으로 배열을 초기화해야 한다는 것을 이해합니다.

 ArrayInitialize (S_L, 50.0 )

고맙습니다.

Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Функция ArrayResize() позволяет задать для массива размер с некоторым запасом для его будущего увеличения без физического перераспределения памяти. Это сделано для улучшения быстродействия, так как операции по распределению памяти...