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

 
Rosh :

SymbolName 이 다음과 같이 말하므로 MarketWatch에 없는 기호에 대한 것일 수 있습니다.

예상치 못한 결과를 얻은 기호의 이름을 인쇄하고 MarketWatch의 목록과 비교하십시오.
모든 기호는 MarketWatch에 있습니다. 특히 #AA 유형의 도구에 대해 0을 반환하며 스크립트에서 특별히 false로 설정되었습니다.
 string symbol= SymbolName (i,false);
MarketWatch 창에 기호가 없으면 다른 것을 발견한 것입니다.
 if ( SymbolInfoTick (symbol,last_tick))
오류 4302를 반환합니다. 도움말은 이 기능이 성공적으로 작동하려면 MarketWatch 창에 기호가 있어야 한다고 표시하지 않습니다.
 
sergey1294 :
...도움말에서 이 기능이 성공적으로 작동하려면 MarketWatch 창에 상품이 있어야 한다고 표시되어 있지 않습니다.

도움말은 정상적인 예와 "병목 현상"을 지정하는 것으로 완료되어야 합니다.

추신

또한 언어를 변경한 후 데이터베이스의 일부 전문가가 작업을 중지하거나 컴파일하는 동안 오류가 발생하는 상황이 종종 발생합니다.

 

오늘 공지...MT5(access.metatrader5.com:443)

EUR/JPY 일일:

예를 들어 GBPJPY, Daily: 여기에서는 모든 것이 좋습니다.

다음은 DC MT4 일간 EURJPY의 화면입니다.

육안으로 보이는 차이....

그것을 고치는 방법?

 
Rosh :

SymbolName 이 다음과 같이 말하므로 MarketWatch에 없는 기호에 대한 것일 수 있습니다.

예상치 못한 결과를 얻은 기호의 이름을 인쇄하고 MarketWatch의 목록과 비교하십시오.

MarketWatch에 없는 기호의 경우 SymbolInfoTick() 함수는 ERR_MARKET_SELECT_ERROR " MarketWatch에서 선택되지 않은 기호"(코드 4302) 오류를 반환합니다. MarketWatch에서 EURUSD와 GBPUSD만 선택했습니다. 기본 실행은 선택되지 않은 기호의 경우 SymbolInfoTick() 이 ERR_MARKET_SELECT_ERROR 오류를 반환함 을 보여줍니다 .

IS       0        1 (EURUSD,M15)   01 : 53 : 21         ************************************************
MF       0        1 (EURUSD,M15)   01 : 53 : 21         Инструмент - EURUSD
RR       0        1 (EURUSD,M15)   01 : 53 : 21         Валюта депозита = USD
RG       0        1 (EURUSD,M15)   01 : 53 : 21         Базовая валюта = EUR
QM       0        1 (EURUSD,M15)   01 : 53 : 21         Валюта маржи = EUR
CH       0        1 (EURUSD,M15)   01 : 53 : 21         Маржа для покупки = 1271.23
QG       0        1 (EURUSD,M15)   01 : 53 : 21         Маржа для продажи = 1271.05
CQ       0        1 (EURUSD,M15)   01 : 53 : 21         ************************************************
JQ       0        1 (EURUSD,M15)   01 : 53 : 21         Инструмент - GBPUSD
HQ       0        1 (EURUSD,M15)   01 : 53 : 21         Валюта депозита = USD
EH       0        1 (EURUSD,M15)   01 : 53 : 21         Базовая валюта = GBP
RN       0        1 (EURUSD,M15)   01 : 53 : 21         Валюта маржи = GBP
MI       0        1 (EURUSD,M15)   01 : 53 : 21         Маржа для покупки = 1553.53
DP       0        1 (EURUSD,M15)   01 : 53 : 21         Маржа для продажи = 1553.25
MG       0        1 (EURUSD,M15)   01 : 53 : 21         ************************************************
LR       0        1 (EURUSD,M15)   01 : 53 : 21         Инструмент - USDCHF
NG       0        1 (EURUSD,M15)   01 : 53 : 21         Валюта депозита = USD
NJ       0        1 (EURUSD,M15)   01 : 53 : 21         Базовая валюта = USD
EQ       0        1 (EURUSD,M15)   01 : 53 : 21         Валюта маржи = USD
RI       0        1 (EURUSD,M15)   01 : 53 : 21          SymbolInfoTick () failed, error = 4302
GL       0        1 (EURUSD,M15)   01 : 53 : 21         ************************************************
PE       0        1 (EURUSD,M15)   01 : 53 : 21         Инструмент - USDJPY
DL       0        1 (EURUSD,M15)   01 : 53 : 21         Валюта депозита = USD
DF       0        1 (EURUSD,M15)   01 : 53 : 21         Базовая валюта = USD
OL       0        1 (EURUSD,M15)   01 : 53 : 21         Валюта маржи = USD
HL       0        1 (EURUSD,M15)   01 : 53 : 21          SymbolInfoTick () failed, error = 4302
QH       0        1 (EURUSD,M15)   01 : 53 : 21         ************************************************

...

그건 그렇고, 로그의 마지막 데이터 블록 sergey1294 는 다른 것과 다릅니다. 첫째, SymbolInfoTick()이 이번에는 동일한 오류 코드를 반환하고, 둘째, 이 데이터 블록의 상품, 기본 통화 및 증거금 통화에 이상한 이름이 있다고 생각하지 않습니까?

버그인가요? 이 이상함을 전혀 눈치채셨나요?

CE       0        OrderCalcMargin (EURUSD,M1)     20 : 44 : 27         ************************************************
IG       0        OrderCalcMargin (EURUSD,M1)     20 : 44 : 27         Инструмент - 
LS       0        OrderCalcMargin (EURUSD,M1)     20 : 44 : 27         Валюта депозита = USD
DD       0        OrderCalcMargin (EURUSD,M1)     20 : 44 : 27         Базовая валюта = 
CL       0        OrderCalcMargin (EURUSD,M1)     20 : 44 : 27         Валюта маржи = 
RG       0        OrderCalcMargin (EURUSD,M1)     20 : 44 : 27          SymbolInfoTick () failed, error = 4302
 
마지막 데이터 블록은 iteration cycle에 약간의 결함이 있는 것 뿐이고, 마지막 데이터 요청에서는 존재하지 않는 악기에 접근하여 입금 통화 를 제외한 모든 필드가 비어 있습니다.
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5
 
sergey1294 :
마지막 데이터 블록은 iteration cycle에 약간의 결함이 있는 것 뿐이고, 마지막 데이터 요청에서는 존재하지 않는 악기에 접근하여 입금 통화 를 제외한 모든 필드가 비어 있습니다.

어떤가요? 내 말은, 로그가 주어진 코드 버전에서 온 것이 아니라는 것입니까?

코드로 판단하면 모든 것이 정상입니다.

또는 SymbolsTotal()이 하나의 값을 반환하고 스크립트 실행 중 사이클 중간 어딘가에서 끔찍한 사고로 브로커가 서버 부분을 설정하고 사용 가능한 기호에서 하나의 기호를 제거하고 SymbolsTotal() 함수 - 스크립트 요청 - 새 값을 하나 적게 반환하지만 루프 종료 조건은 total 변수에 저장된 이전 값을 기반으로 했기 때문에 해당 함수는 현재 존재하지 않는 액세스 시 마지막 반복에서 빈 문자열을 반환했습니까? 캐릭터? :)

지금까지 이런 일이 일어나기 위한 시나리오만 생각했습니다. :)

 
어떻게 된 건지 모르겠지만 다시는 일어나지 않을 거야
 
simpleton :

... 다음으로 계산된 값은 ulong 유형의 값으로 명시적으로 캐스트됩니다. 주어진 값이 음수가 아니라는 보장 이 있기 때문에 정확히 ulong입니다.

정수형으로 변환하는 과정에서 실수형의 소수부는 버린다. 가장 가까운 것으로 반올림하는 것이 아니라, 자유 마진이 허용하는 로트의 최대 값이 증가하지 않도록 보장하는 소수 부분을 삭제합니다. 즉, 정확히 우리에게 필요한 것입니다.

simpleton , 나도 비슷한 경로를 따랐지만 int를 입력하기 위해 명시적 캐스트를 사용했습니다. 나는 가능한 최대 로트 크기가 브로커/딜러 또는 자체 자금의 크기에 의해 제한된다는 사실에서 진행했습니다. 이와 관련하여 int를 사용하면 충분합니다. 이 접근 방식(int로 "아래에서" 반올림)에 함정이 있다고 생각합니까?
 

개발자.

그리고 매개변수가 스크립트에 나타나도록 만드는 방법(그렇지 않으면 새로운 조건에 맞게 코드를 지속적으로 변경하는 것이 너무 게으름)?...

 
Interesting :

개발자.

그리고 매개변수가 스크립트에 나타나도록 만드는 방법(그렇지 않으면 새로운 조건에 맞게 코드를 지속적으로 변경하는 것이 너무 게으름)?...


 #property script_show_inputs
사유: