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

 

안녕하세요!

배치 파일로 여러 MT4를 실행하고 싶습니다.

이 작업을 수행하는 방법과 내 코드가 작동하지 않는 이유를 알려주세요.

SET MY_PATH=C:\ "Program Files (x86)"
%MY_PATH%\ 001 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 002 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 003 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 004 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 005 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 006 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 007 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 008 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 009 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 010 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 011 \terminal.exe
TIMEOUT /T 160
%MY_PATH%\ 012 \terminal.exe
TIMEOUT /T 160

기껏해야 여러 MT4가 실행된 다음 멈춥니다.

물론 RAM이 부족한 것은 아닙니다.

또한 다른 컴퓨터에서 시도했습니다.

 
Igor Zakharov :

아니오, 작동하지 않습니다.

그런데 서버 시간은 토요일에 멈추지 않습니다. 여기에서는 그 반대가 사실입니다. 터미널에서 새 견적이 도착하면 서버 시간이 업데이트됩니다. 예를 들어, Market Watch에는 하나의 기호만 열려 있습니다(테스터뿐만 아니라 현실에서도). 5초 동안 틱이 없습니다. 이 시간 동안에는 서버 타이머가 움직이지 않습니다. 이것이 토요일에 적용되는 방식입니다. 서버에서 시간이 똑딱거리고 있지만 터미널은 그것에 대해 알지 못하기 때문입니다. 진드기가 없습니다. 테스터는 이 기간을 건너뛸 것입니다.

이미 확인했습니다. 테스터에서 TimeLocal은 TimeTradeServer 뿐만 아니라 주말에도 작동합니다. 그리고 TimeCurrent 는 당연히 존재하지 않습니다. 틱은 없지만 서버 시간은 그만한 가치가 있습니다.

 int OnInit ()
{
   Print ( __FUNCTION__ , " TimeCurrent     " , TimeCurrent ());
   Print ( __FUNCTION__ , " TimeLocal       " , TimeLocal ());
   Print ( __FUNCTION__ , " TimeTradeServer " , TimeTradeServer ());

     EventSetTimer ( 3 * 3600 );
 return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
void OnTimer ()
{
   Print ( "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" );
   Print ( __FUNCTION__ , " TimeCurrent     " , TimeCurrent ());
   Print ( __FUNCTION__ , " TimeLocal       " , TimeLocal ());
   Print ( __FUNCTION__ , " TimeTradeServer " , TimeTradeServer ());
}
 
Igor Zakharov :

https://www.mql5.com/ru/forum/328008/page2#comment_14166682

언제나처럼 자전거.

여기서 문제는 그러한 기록이 통과되지 않는 이유입니다.
결국 매개 변수의 변수에는 초기 값이 있습니다.

 void MxResize( int row= 1 , int col= 1 )
{
   int A[row][col];    
      
}

그리고 치수의 크기가 숫자로 표시되는 경우

 void MxSize( int row= 1 , int col= 1 )
{
   int A[ 1 ][ 1 ];    
      
}

컴파일러가 건너 뛰는 것, 캐치가 무엇입니까?

개발자의 의견은 어떻습니까?

 
Andrey Khatimlianskii :

무슨 목적을 위해? 주말에 자동 최적화를 실행하시겠습니까? 그런 다음 몇 분 거리에서 OnTik 의 타이머를 설정하는 것이 적합합니다. 작동하면 틱이 중지되고 최적화할 수 있습니다.

다른 목적이라면 명시하십시오.

아니요, 다른 목적이 아닙니다.

나는 TimeLocal이 주말에 작동한다고 생각하지 않았고 이렇게 했습니다. TimeCurrent에 몇 시간을 추가하고 요일을 확인했습니다. 토요일이면 최적화를 시작합니다.

물론 이것으로 시장이 금요일이나 휴일에 다른 방식으로 닫히기 때문에 토요일의 시작을 정확하게 결정하는 것은 불가능합니다.

또한 시장이 닫혔는지 여부를 판단할 수 있는 도구를 어디에서도 찾지 못했습니다.

 
Petros Shatakhtsyan :

아니요, 다른 목적이 아닙니다.

나는 TimeLocal이 주말에 작동한다고 생각하지 않았고 이렇게 했습니다. TimeCurrent에 몇 시간을 추가하고 요일을 확인했습니다. 토요일이면 최적화를 시작합니다.

물론 이것으로 시장이 금요일이나 휴일에 다른 방식으로 닫히기 때문에 토요일의 시작을 정확하게 결정하는 것은 불가능합니다.

또한 시장이 닫혔는지 여부를 판단할 수 있는 도구를 어디에서도 찾지 못했습니다.

시험을 마친?

SymbolInfoSessionTrade

또는

SymbolInfoInteger( SYMBOL_TRADE_MODE )

내가 기억하는 그들 중 일부는 좋을 것입니다

 
Aleksey Mavrin :

시험을 마친?

SymbolInfoSessionTrade

또는

SymbolInfoInteger( SYMBOL_TRADE_MODE )

내가 기억하는 그들 중 일부는 좋을 것입니다

아니요. 매뉴얼에는 시장이 열려 있는지 여부를 결정하는 방법이 구체적으로 나와 있지 않습니다.

사실은 예를 들어 월요일에 시장이 "열리면" 한 브로커에 대한 호가가 02:05에 도착하기 시작하지만 몇 분 동안 거래가 수락되지 않으면 "시장 닫힘"이 표시된다는 것입니다.

이것이 도움이 될지 안될지 모르겠습니다.

SYMBOL_START_TIME

상품 거래 시작일(보통 선물에 사용됨)

 
Petros Shatakhtsyan :

아니요. 매뉴얼에는 시장이 열려 있는지 여부를 결정하는 방법이 구체적으로 나와 있지 않습니다.

사실은 예를 들어 월요일에 시장이 "열리면" 한 브로커에 대한 호가가 02:05에 도착하기 시작하지만 몇 분 동안 거래가 수락되지 않으면 "시장 닫힘"이 표시된다는 것입니다.

이것이 도움이 될지 안될지 모르겠습니다.

SYMBOL_START_TIME

상품 거래 시작일(보통 선물에 사용됨)

아니요, 이것은 아닙니다. SymbolInfoSessionTrade 는 거래 시 표시하고 SymbolInfoSessionQuote 는 호가가 올 때 표시합니다. 휴일에는 확인만 하고 확인은 하지 않았습니다.

ap: 이것은 도움이 될 것입니다

bool IsTradeAllowed (
const 문자열 기호         // 기호
   날짜 시간    테스트된_시간    // 시각
);

Документация по MQL5: Получение рыночной информации / SymbolInfoSessionQuote
Документация по MQL5: Получение рыночной информации / SymbolInfoSessionQuote
  • www.mql5.com
Получение рыночной информации / SymbolInfoSessionQuote - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Roman :

언제나처럼 자전거.

여기서 질문은 그러한 기록이 통과되지 않는 이유입니다.
결국 매개 변수의 변수에는 초기 값이 있습니다.

그리고 치수의 크기가 숫자로 표시되는 경우

컴파일러가 건너 뛰는 것은 무엇입니까?

개발자의 의견은 어떻습니까?

Roman, 두 번째로 당신 은 문서 를 읽고 싶어하지 않는 기초적인 태도를 갖게 됩니다.

배열 인덱스 정수만 수 있습니다 . 4차원 배열만 허용됩니다. 배열 요소의 번호는 0부터 시작합니다. 1차원 배열의 마지막 요소는 배열 크기보다 1 작은 숫자를 갖습니다. 즉, 50개 정수 배열의 마지막 요소에 액세스하는 것은 a[49] . 다차원 배열에도 동일하게 적용됩니다. 한 차원은 0에서 차원-1까지 인덱싱됩니다. 예제에서 2차원 배열의 마지막 요소는 m[6][49]처럼 보일 것입니다.

정적 배열은 시계열로 표현할 수 없습니다. 즉, 배열의 끝에서 시작까지 배열 요소에 대한 액세스를 설정하는 ArraySetAsSeries() 함수는 해당 배열에 적용되지 않습니다. timeseries 에서처럼 배열에 대한 액세스를 제공하려면 동적 배열 객체 를 사용하십시오.

어레이를 넘어 액세스할 때 실행 중인 하위 시스템은 심각한 오류를 생성하고 프로그램 실행이 중지됩니다.

그리고 mql4 문서에서 내 기억이 완전히 바뀌지 않았다면 변수를 배열 크기로 사용하는 것이 허용되지 않는다는 점에 대해 명확하게 명시되어 있습니다.

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

언제나처럼 자전거.

여기서 문제는 그러한 기록이 통과되지 않는 이유입니다.
결국 매개 변수의 변수에는 초기 값이 있습니다.

그리고 치수의 크기가 숫자로 표시되는 경우

컴파일러가 건너 뛰는 것, 캐치가 무엇입니까?

개발자의 의견은 어떻습니까?

저는 개발자는 아니지만 댓글을 달겠습니다.

정적 배열 의 경우 컴파일러는 이미 컴파일 시 메모리에 특정 바이트 수를 할당해야 합니다.

컴파일 시 행과 열을 알 수 없는 경우 컴파일러는 얼마나 많은 메모리를 할당해야 합니까?

초기값은 호출 시 매개변수가 생략된 경우에만 사용됩니다. 실제 매개변수는 런타임에만 알 수 있습니다.

그러니 농담하지 말고 언어를 배우십시오.

 
Aleksey Mavrin :

아니요, 이것은 아닙니다. SymbolInfoSessionTrade 는 거래 시 표시하고 SymbolInfoSessionQuote 는 호가가 올 때 표시합니다. 휴일에는 확인만 하고 확인은 하지 않았습니다.

ap: 이것은 도움이 될 것입니다

bool IsTradeAllowed (
const 문자열 기호         // 기호
   날짜 시간    test_time    // 시각
);

저는 이것이 아니라고 생각합니다. 여기에 특별한 주제가 있습니다: https://www.mql5.com/ru/forum/40295

특히 MQL4를 위한 것이기 때문에 끝까지 보지 않았습니다.

나는 시장이 닫혀 있으면 서버가 기호 따옴표를 보내서는 안된다고 생각합니다 .

이것은 시장의 "개방" 후에 틱이 올 때 추세와 반전을 분석하고 시간이 걸리기 때문에 내 로봇에 실제로 영향을 미치지 않습니다. 이 시간 동안 시장이 열립니다.

그러나 현재 수동으로 일부 트랜잭션을 수행하려는 경우 방해가 됩니다. 그리고 실행이 시장이면 시장이 열릴 때까지 요청을 멈추고 현재 가격에서 자연스럽게 실행됩니다.

분명히, 심볼의 이름을 받고 true/false를 반환하는 직접적인 함수가 부족합니다(시장은 열려 있음/닫힘).

Как правильно выяснить, что рынок закрыт? (mql4)
Как правильно выяснить, что рынок закрыт? (mql4)
  • 2015.01.31
  • www.mql5.com
Перевел советника в режим работы OnTimer() теперь когда рынок закрыт он этого не понимает и пытается торговать, в общем обращается к серверу и естественно получает ошибки и забивает логи журнала.