오류, 버그, 질문 - 페이지 2932

 

설명 오류:

실수

이 필드는 time_type이라고 합니다.

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура торговой транзакции
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура торговой транзакции
  • www.mql5.com
Структура торговой транзакции - Структуры данных - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
x572intraday :

표시기 설정 창의 메뉴 목록에서 시간 프레임과 해당 숫자를 모두 선택할 수 있는 기능을 사용자에게 제공하려고 합니다.

그리고 나는 그가 선택한 기간이 PArray에 직접 떨어지기를 원합니다. 그러나 위의 예를 보면 사용자가 입력한 값이 아니라 프로그램에 미리 정의된 값을 배열에 할당하고 있음을 알 수 있습니다. 또한 컴파일러는 다음과 같은 경고를 발행합니다.

마지막 줄을 다음으로 바꾸려고 할 때:

컴파일러는 일반적으로 다음과 같은 오류를 발생시킵니다.

또한 NO_PERIOD=0은 PERIOD_CURRENT 를 의미하며 필요하지 않습니다. false 또는 EMPTY_VALUE 같은 것이 필요하지만 전혀 맞지 않습니다.

어떻게 고치는 지?

거의 고쳤습니다.

 
테스터의 기호 설정이 유지되지 않고 목요일과 금요일에 거래 세션 이 중단됩니다. 이로 인해 시장 마감 오류가 지속적으로 발생하고 위치가 열리지 않고 최적화가 불가능하며 로봇이 올바르게 작동하지 않습니다. 다른 브로커는 다 괜찮은데 이 특정 브로커가 필요한데 어떻게 해야 하나요? 최근에는 그렇지 않았습니다. 이전에는 이 설정이 그대로 유지되어 허락 없이 변경되지 않았는데, 그게 무엇인가요? 어떻게 해야할지 누가 압니까? 새 계정을 등록하고 임시 파일에서 터미널을 정리하고 다른 터미널에서 시도했지만 도움이 되지 않습니다. 비디오 문제 https://radikal.ru/video/1HA3UfUNVZt
Документация по MQL5: Получение рыночной информации / SymbolInfoSessionQuote
Документация по MQL5: Получение рыночной информации / SymbolInfoSessionQuote
  • www.mql5.com
SymbolInfoSessionQuote - Получение рыночной информации - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
"범위를 벗어난 배열" 오류를 포착하고 수정하기 위해 어떤 투쟁 방법이 있는지 알려주십시오. 첫째, 오류가 앞서고 인쇄에 도달하지 않기 때문에 Print로 메모리 한계를 넘어선 배열의 요소 를 인쇄할 수 없습니다. 둘째,이 오류는 체계적으로 나오지 않지만 원하는대로 : 일단 나오고 표시기가 작동하지 않았습니다 (그러나 표시기 목록의 차트에 멈춤), 그리고 다음 번에는 더 이상 존재하지 않습니다. , 표시기를 다시 컴파일하지 않고 편집은 말할 것도 없습니다.
Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Переменные - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
x572intraday :
"범위를 벗어난 배열" 오류를 포착하고 수정하기 위해 어떤 투쟁 방법이 있는지 알려주십시오.

ArrayResize()는 배열 요소를 쓰기 전에 배열에 있어야 하는 요소 수를 세고 드라이브하거나 자체적으로 뚱뚱해지는 동적 배열 을 사용합니다. 예를 들어 배열의 한계를 넘어서면 크기가 100 요소이지만 첫 번째 요소가 0 번이기 때문에 일부는 혼란 스럽습니다. 숫자를 연속으로 쓰면 0-99가 맞습니다. 나는 전문 프로그래머가 아닙니다. (하지만 할 수 있다면) 가장 먼저 떠오른 것은 그것이 작동한다는 것입니다)))

Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Объект динамического массива - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
freelancerAntonyan :

ArrayResize()는 배열 요소를 쓰기 전에 배열에 있어야 하는 요소 수를 세고 드라이브하거나 자체적으로 뚱뚱해지는 동적 배열 을 사용합니다.

실제로, 나는 그것을 가지고 있으며 매우 역동적입니다. 참조: " 이 함수는 동적 배열 에만 적용할 수 있습니다. SetIndexBuffer() 함수에 의해 표시기 버퍼로 할당된 동적 배열의 크기는 변경할 수 없다는 점을 염두에 두어야 합니다. 표시기 버퍼의 경우 모든 크기 조정 작업이 수행됩니다. 단말의 실행 서브시스템에 의해. "하지만 인디케이터 버퍼가 아니므로 손으로 생각하고 머리로 행동해야 합니다...

 
x572intraday :

실제로, 나는 그것을 가지고 있으며 매우 역동적입니다. 참조: " 이 함수는 동적 배열 에만 적용할 수 있습니다. SetIndexBuffer() 함수에 의해 표시기 버퍼로 할당된 동적 배열의 크기는 변경할 수 없다는 점을 염두에 두어야 합니다. 표시기 버퍼의 경우 모든 크기 조정 작업이 수행됩니다. 단말의 실행 서브시스템에 의해. "하지만 인디케이터 버퍼가 아니므로 손으로 생각하고 머리로 행동해야 합니다...

이러한 오류를 잡는 문제는 주소 지정을 가로채는 사용자 지정 배열 클래스와 같은 "계층"을 사용해야만 해결 됩니다.

MQL's OOP notes: rubber arrays, safe numbers, exceptions handling and other tricks: part 1
MQL's OOP notes: rubber arrays, safe numbers, exceptions handling and other tricks: part 1
  • 2016.11.08
  • www.mql5.com
Today we're starting a patchy subject, which will combine many different things. This is why I decided to split it into parts. Out final goal is exception handling, but before we can address it, we
 

알고리즘 거래가 비활성화된 상태에서 어드바이저를 시작한 다음 알고리즘 거래를 활성화하는 경우:

오류 코드 에 따르면 TERMINAL_TRADE_ALLOWED 속성이 true임에도 불구하고 거래 금지가 유지됩니다.

 #include <Greshnik\\ErrorDescription.mqh>
int OnInit ()
  {
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick ()
  {
   if (! TerminalInfoInteger ( TERMINAL_TRADE_ALLOWED ))
     {
       return ;
     }
   MqlTradeRequest tr;
   MqlTradeResult r;
   ResetLastError ();
   if (! OrderSend (tr,r))
     {
       int err= GetLastError ();
       Print (err, "  " ,cLng::CodeDescription(err));
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {

  }
 2020.12 . 30 15 : 25 : 38.629 Experts automated trading is enabled
2020.12 . 30 15 : 25 : 39.159 Test1 (EURUSD,M1)       4752   Торговля для эксперта запрещена
2020.12 . 30 15 : 25 : 40.297 Test1 (EURUSD,M1)       4752   Торговля для эксперта запрещена
2020.12 . 30 15 : 25 : 40.397 Test1 (EURUSD,M1)       4752   Торговля для эксперта запрещена
2020.12 . 30 15 : 25 : 40.499 Test1 (EURUSD,M1)       4752   Торговля для эксперта запрещена
2020.12 . 30 15 : 25 : 40.725 Test1 (EURUSD,M1)       4752   Торговля для эксперта запрещена
2020.12 . 30 15 : 25 : 42.781 Test1 (EURUSD,M1)       4752   Торговля для эксперта запрещена
2020.12 . 30 15 : 25 : 43.129 Test1 (EURUSD,M1)       4752   Торговля для эксперта запрещена
2020.12 . 30 15 : 25 : 43.758 Experts automated trading is disabled

결과는 다음과 같아야 합니다.

 2020.12 . 30 15 : 29 : 58.406 Experts automated trading is enabled
2020.12 . 30 15 : 30 : 02.247 Test1 (EURUSD,M1)       4756   Не удалось отправить торговый запрос
2020.12 . 30 15 : 30 : 02.368 Test1 (EURUSD,M1)       4756   Не удалось отправить торговый запрос
2020.12 . 30 15 : 30 : 02.486 Test1 (EURUSD,M1)       4756   Не удалось отправить торговый запрос
2020.12 . 30 15 : 30 : 04.320 Experts automated trading is disabled
 
CopyTime ( _Symbol ,tf, 0 , 1 ,Arr);
분명히 항상 ArraySize (Arr)=1이어야 합니다. 복사에 성공한 경우입니다. 그러나 어떤 경우에 막대를 복사하지 못할 수 있습니까? 결국 "array out of range" 오류가 팝업되면 터미널은 Arr[0]을 가리킵니다 .
 
x572intraday :
분명히 항상 ArraySize(Arr)=1이어야 합니다. 복사에 성공한 경우입니다. 그러나 어떤 경우에 막대를 복사하지 못할 수 있습니까? 결국 "array out of range" 오류가 팝업되면 터미널은 Arr[0]을 가리킵니다 .

도움말에서 인용한 오류를 잡았습니다.

4401

요청한 기록을 찾을 수 없습니다

잡지에 인쇄됨 - 수신:

 2020.12 . 31 14 : 45 : 20.474 test (EURUSD,H2)         ArraySize (Arr)= 0 ; copied=- 1 ; TF= PERIOD_H2
2020.12 . 31 14 : 45 : 20.474 test (EURUSD,H2)        Error Code = 4401

이제 그녀와 무엇을해야합니까? 어디로 가야합니까? 제가 손이 비뚤어진 건지.. 0에서 1까지 한 마디만 복사합니다. 어떻게 (역사가) 존재하지 않을 수 있습니까? 또한 오류가 항상 나오는 것은 아닙니다. 아니면 강제로 히스토리를 먼저 확인하고 불러와야 하나요?

사유: