mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 239

 
Anatoli Kazharski #:

심볼에 데이터가 있는지 어떻게 확인하여 데이터가 없는 경우 [마켓 워치] 창에 남기지 않으려면 어떻게 해야 하나요?

심볼 인포틱.

 
fxsaber #:

SymbolInfoTick.

이 옵션을 시도해 보았습니다. 안타깝게도 작동하지 않습니다. 심볼이 [종합시세] 창에 처음 추가되면 아직 데이터가 없고 SymbolInfoTick이 null 값을 반환합니다.

CopyXXX 함수도 테스트해 보았지만 시간 제한이 없고 서버에서 데이터를 기다리는 과정이 약 45초 동안 지속되어 너무 길어요.

캐릭터를 사용할 수 없는지 빠르게 확인할 수 있는 방법이 필요합니다. 다음과 같은 경우를 예로 들어보겠습니다:


//---

이러한 기호는 서버에 데이터가 없으므로 [마켓 개요] 창에 추가되지 않거나 있는 경우 목록에서 제거되지 않도록 식별할 수 있는 방법이 필요합니다.

추신:[ 종합시세] 창에서 심볼을 목록에서 삭제할 때 잠금을 해제할 수 있는 방법이 있을까요?

 
Anatoli Kazharski #:

그 옵션을 시도해 보았습니다. 안타깝게도 작동하지 않습니다. 심볼이 [종합시세] 창에 처음 추가되는 경우 아직 데이터가 없으며 SymbolInfoTick이 null 값을 반환합니다.

손으로 작동하는 심볼을 쉽게 얻을 수 있습니다.

  1. 몇 번의 클릭으로 모든 심볼을 종합시세에 추가할 수 있습니다.
  2. 몇 초 안에 틱이 수신됩니다.
  3. 한 번의 마우스 클릭으로 시간별로 정렬합니다.
  4. Del 키를 사용하여 획득한 목록의 꼬리 중 하나를 삭제합니다.
이 모든 작업은 최대 30 분이 소요됩니다.
 
Anatoli Kazharski #:

그 옵션을 시도해 보았습니다. 안타깝게도 작동하지 않습니다. 심볼이 [종합시세] 창에 처음 추가되는 경우 아직 데이터가 없으며 SymbolInfoTick이 null 값을 반환합니다.

CopyXXX 함수도 테스트했지만 시간 제한이 없고 서버에서 데이터를 기다리는 과정이 약 45초 동안 지속되어 너무 오래 걸립니다.

문자를 사용할 수 없는지 빠르게 확인할 수 있는 방법이 필요합니다. 이와 같은 경우를 언급하고 있습니다:


//---

이러한 기호는 서버에 데이터가 없으므로 [마켓 워치] 창에 추가되지 않도록 하거나 있는 경우 목록에서 제거할 수 있도록 식별할 방법이 필요합니다.

추신:[ 종합시세] 창의 목록에서 심볼을 제거할 때 잠금을 해제할 수 있는 방법이 있을까요?

나는 약 6 년 동안이 문제로 싸워 왔으며 개발자들에게 여기에서 일을 정리해달라고 요청합니다.

안타깝게도이 문제는 해결되지 않았으며 현재 누군가가 금융 상품에 처음 액세스 할 때 터미널이 중단되는 상황이 있습니다.

 
Anatoli Kazharski #:

심볼에 데이터가 있는지 어떻게 확인하여 데이터가 없는 경우 [마켓워치] 창에 남기지 않으려면 어떻게 해야 하나요?

저는 이러한 확인을 반복해서 사용합니다:

하지만 그 후에는 전문가 조언자가 차트에 있는 동안에는 [종합시세] 창에서 심볼을 하나씩 또는 한 번에 모두 수동으로 제거할 수 없습니다:


마지막 시세 시간을 확인해 보세요.

SymbolInfoInteger(name, SYMBOL_TIME);

0이면 데이터가 없는 것입니다.

방금 열린 차트로 확인했습니다.

2024.01.05 10:38:43.783 !00 (GBPUSD,H1) USDCAD 2024.01.05 09:38:51
2024.01.05 10:38:43.783 !00 (GBPUSD,H1) NZDUSD 2024.01.05 09:38:51
2024.01.05 10:38:43.783 !00 (GBPUSD,H1) USDCAD 2024.01.05 09:38:51
2024.01.05 10:38:43.783 !00 (GBPUSD,H1) EURGBP 2024.01.05 09:38:49
2024.01.05 10:38:43.783 !00 (GBPUSD,H1) GBPUSD 2024.01.05 09:38:49
2024.01.05 10:38:43.783 !00 (GBPUSD,H1) POZ3 1970.01.01 00:00:00
2024.01.05 10:38:43.783 !00 (GBPUSD,H1) EDH4 1970.01.01 00:00:00
2024.01.05 10:38:43.783 !00 (GBPUSD,H1) BRZ3 1970.01.01 00:00:00
 
서버 간 전환을 통해 추가 데이터를 얻을 수 있습니다. 코드를 통해 구현할 수 있는지 모르겠습니다.
 
Nauris Zukas #:
서버 간 전환을 통해 추가 데이터를 얻을 수 있습니다. 코드를 통해 구현할 수 있는지 모르겠습니다.

"서버 간"이 "브로커 간"을 의미한다면 프로필을 가지고 놀지 않는 한 거의 없습니다.

하지만 한 브로커의 여러 서버(Open은 여러 대, Finam은 두 대)를 전환해야 하는 경우 iptables/nftables와 내 bash 스크립트를 통해 전환할 수 있습니다. 하지만 여기서는 Linux를 사용하는 것이 더 쉽습니다.

 
JRandomTrader #:

"서버 간"이 "브로커 간"을 의미하는 경우.


.

 
Nauris Zukas #:


예, 원칙적으로는 가능합니다.

그러나 MQL 프로그램에서 서버의 이름과 IP를 찾을 수 있는 방법이 없으므로 서버를 전환하고 연결이 어떤 IP로 연결되는지 확인하여 수동으로 찾아야 합니다.

그런 다음 방화벽 구성을 변경하여 일부 서버에 대한 연결을 금지하여 (여기서는 시간 초과를 방지하기 위해 패킷을 삭제하지 않고 재 잭킹해야 함) MT가 다른 서버로 전환하도록 강제 할 수 있습니다.

다시 말하지만 Linux에서이 작업을 수행하는 것은 어렵지 않지만 Windows에서 수행하는 방법은 상상할 수 없습니다.

 
Alexey Viktorov #:

마지막 견적 시간을 확인해 보세요.

0이면 데이터가 없는 것입니다.

방금 열린 차트와 비교해서 확인했습니다.

이것은 비슷한 경우에도 적용됩니다:

이 옵션을 시도해 보았습니다. 안타깝게도 맞지 않습니다. 심볼이 [종합시세] 창에 처음 추가되면 아직 데이터가 없고 SymbolInfoTick이 null 값을 반환합니다.

틱이 드물게 발생하는 경우 이러한 모든 심볼은 제외됩니다.

fxsaber #:

손으로 작동하는 심볼을 쉽게 얻을 수 있습니다.

  1. 몇 번의 클릭으로 모든 심볼을 종합시세에 추가할 수 있습니다.
  2. 몇 초 안에 틱이 수신됩니다.
  3. 한 번의 마우스 클릭으로 시간별로 정렬합니다.
  4. Del 키를 사용하여 획득한 목록의 꼬리 중 하나를 삭제합니다.
이 모든 것이 최대 30 분이 소요됩니다.

아니요. 완전 자동이 필요합니다.

블라디미르 파스투샤크 #:

나는 이미 6 년 동안 그것과 싸우고 있으며 개발자들에게 여기에 주문을 요청합니다.

안타깝게도이 문제는 해결되지 않았으며 현재 누군가가 처음으로 금융 상품에 액세스 할 때 터미널이 끊어지는 상황이 있습니다.

다음 함수를 호출 할 때만 발견했습니다:

  • Bars()
  • iBars()
  • 시리즈인포인티저(심볼, PERIOD_M1, SERIES_BARS_COUNT)

//---

터미널 개발자

1. 거래 서버에 데이터 없이 심볼을 추가할 수 있는 가능성을 배제합니다.

2. 마켓워치] 창에서 심볼 삭제 차단을 비활성화하거나 버그인 경우 수정할 수 있도록 합니다. 이제 터미널을 재시작해야만 할 수 있습니다.

3. CopyXXX와 같은 기능의 경우, 타임아웃(서버에서 데이터를 기다리는 최대 시간)을 설정하는 옵션 매개변수를 추가합니다.

지금은 재현할 수 없습니다. 지금까지는 지연 없이 작동합니다. 그러나 어떤 경우에는 발생할 수 있는 것 같습니다.

4. 다음과 같은 경우 Bars(), iBars(), SeriesInfoInteger(symbol, PERIOD_M1, SERIES_BARS_COUNT) 함수를 사용할 때 무한 대기하는 버그를 수정했습니다:

  • 서버에 연결되지 않은 경우
  • 심볼에 데이터가 없는 경우

차트에서 프로그램을 삭제하려고 하면 터미널이 몇 분 동안 중단될 수 있습니다.

5. 서버에 연결되지 않은 경우 함수를 사용할 때 무한 대기하는 버그를 수정했습니다:

  • SeriesInfoInteger(symbol, PERIOD_M1, SERIES_FIRSTDATE)
  • SeriesInfoInteger(symbol, PERIOD_M1, SERIES_LASTBAR_DATE)
  • SeriesInfoInteger(symbol, PERIOD_M1, SERIES_SERVER_FIRSTDATE)

이 경우 추가 옵션 매개변수를 추가하여 타임아웃(서버에서 데이터를 기다릴 수 있는 최대 시간)을 설정할 수도 있습니다.

//---

추신 지금까지 CopyXXX와 같은 함수를 사용하여 데이터를 확인하는 변형에 정착했습니다. 하지만 위에서 설명한 문제가 다시 나타날지 지켜보겠습니다.