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

 

안녕하세요!

열린 위치 가 "동결" 상태인지 여부를 판별해야 하는 기능의 정확성을 확인하십시오.

특히 Ask/Bid를 과도하게 사용했습니까?

 bool IsPositionFrozen( const string Symbol ) {
   if (! PositionSelect ( Symbol )) return false ;
   bool FreezTP = true , FreezSL = true ;
   double FreezLevel = SymbolInfoInteger ( Symbol , SYMBOL_TRADE_FREEZE_LEVEL ) * SymbolInfoDouble ( Symbol , SYMBOL_POINT );
   switch ( PositionGetInteger ( POSITION_TYPE )) {
     case POSITION_TYPE_BUY :
         if (( NormalizeDouble ( PositionGetDouble ( POSITION_TP ), ( int ) SymbolInfoInteger ( Symbol , SYMBOL_DIGITS )) == 0 ) ||
            ( PositionGetDouble ( POSITION_TP ) - SymbolInfoDouble ( Symbol , SYMBOL_BID ) > FreezLevel))
          FreezTP = false ;
         if (( NormalizeDouble ( PositionGetDouble ( POSITION_SL ), ( int ) SymbolInfoInteger ( Symbol , SYMBOL_DIGITS )) == 0 ) ||
            ( SymbolInfoDouble ( Symbol , SYMBOL_BID ) - PositionGetDouble ( POSITION_SL ) > FreezLevel))
          FreezSL = false ;
         break ;
       case POSITION_TYPE_SELL :
         if (( NormalizeDouble ( PositionGetDouble ( POSITION_TP ), ( int ) SymbolInfoInteger ( Symbol , SYMBOL_DIGITS )) == 0 ) ||
            ( SymbolInfoDouble ( Symbol , SYMBOL_ASK ) - PositionGetDouble ( POSITION_TP ) > FreezLevel))
          FreezTP = false ;
         if (( NormalizeDouble ( PositionGetDouble ( POSITION_SL ), ( int ) SymbolInfoInteger ( Symbol , SYMBOL_DIGITS )) == 0 ) ||
            ( PositionGetDouble ( POSITION_SL ) - SymbolInfoDouble ( Symbol , SYMBOL_ASK ) > FreezLevel))
          FreezSL = false ;
       break ;
     default : return false ;
  }
   if (FreezTP || FreezSL) return true ;
   else return false ;
}
 
tol64 :

아니요, 서버에서 모든 것이 올바르게 작동했습니다( MQ 데모 계정). 즉, 내가 연결이 부족할 때 정류장이 작동했습니다. 하지만 내가 접속했을 때, 시장은 이미 닫혀 있었다. Market Watch 창은 연결이 끊어지기 전 마지막 틱 시간을 기록했습니다. 두 번째 값으로 TimeCurrent ()를 지정하여 트랜잭션 내역을 요청할 때 전체 내역을 받지 못했습니다. TimeCurrent ()에 대한 도움말은 다음과 같이 말합니다.

즉, 내가 이해하는 바와 같이 연결이 있는 경우 이 함수는 연결이 끊어지고 연결이 끊어진 경우에도 서버의 Market Overview 창에 있는 도구 중 하나에서 견적이 마지막으로 도착한 값을 반환해야 합니다. 시장이 이미 마감되었을 때 연결이 발생했습니다. 제 경우에는 이런 일이 일어나지 않았고, 저는 각각 전체 이야기를 이해하지 못했습니다. 마켓 워치 에서 마켓이 닫힐 때 서버와 시간을 동기화해야 하는지 아닌지는 모르겠지만 도움말에는 언급되어 있지 않습니다.

이 경우 전체 내역이 필요한 경우 하루 전에 더 큰 수를 추가하기만 하면 모든 거래가 선택됩니다. :)

그리고 테스터에는 HistoryDealsTotal () 함수에 버그가 있으며 시각화 모드에서 나타납니다. 시간은 거기에서 정확하게 모델링됩니다. 어떤 경우에는 목발만 있으면 도움이 됩니다.


네, 소통에 단절이 있었다는 본질을 기억했습니다. 진드기가 기호에 도착할 때만 터미널이 조정 및 재개 기록을 시작하고 주말은 그렇지 않은 것 같습니다. 물론 차트를 수동으로 업데이트하면 최신 서버 시간도 업데이트됩니다. 그리고 머신에 있으면 접속 끊김을 수정하고 주말에 복구되면 히스토리를 확인하고 불러오는 함수 CheckLoadHistory()를 실행한다. 타이머를 사용합니다.

일반적으로 때때로 "놀라운" 일이 터미널에 발생합니다. 어제 랩톱은 전화를 통해 모뎀으로 작동했습니다. 다중 통화 Expert Advisor는 추적 모드에서 작동했습니다(자동 거래가 비활성화됨). 그는 전화로 15 분 동안 떠났다가 돌아와서 연결을 연결했습니다. 단말기가 서버와의 연결을 복원했습니다. 놓친 따옴표를 다운로드하는 것은 케이크 조각처럼 보일 것입니다. 그러나 터미널은 이야기를 맹렬히 퍼뜨리기 시작했습니다. 다른 것은 무엇입니까? 동시에 시장 개요, 거래 탭, 차트 등 모든 것이 멈췄습니다. 전화기는 3G를 지원하지 않지만 EDGE에서 작동하므로 절차가 지연되었습니다. 20MB가 되자 이 상태에서 수동으로 무언가를 거래할 수 있는지 확인하기로 했습니다. 포지션을 청산하려 했으나 소통이 되지 않아 거절당하고 다운로드가 멈췄다. 연결이 복원된 후 모든 것이 제대로 작동했습니다. 다음은 터미널 로그에서 발췌한 내용입니다.

OK 0 Network 09:45:09 '709704': Access Point Singapore를 통해 MetaQuotes-Demo에서 승인됨
IR 0 네트워크 09:45:09 '709704': 2012.03.04 06:10:12에 77.35.11.181에서 수행된 이전 성공적인 인증
KP 0 Network 09:45:12 '709704': MetaQuotes Software Corp.와 동기화된 터미널
GI 0 Experts 09:45:12 Expert Fractals_ (EURUSD,H1) 성공적으로 로드됨
OI 0 Trades 10:43:29 '709704' : 거래 #8671794 0.10 GBPJPY at 129.268 done (기준 #9494984) // 이 거래는 다른 컴퓨터에서 실행되는 EA에 의해 이루어졌습니다.
RM 0 거래 10:51:22 '709704' : 거래 #8671842 81.586에 0.10 USDJPY 판매 완료(주문 #9495037 기준) // 유사
KL 1 Network 12:00:38 '709704': MetaQuotes-Demo에 대한 연결이 끊겼습니다. // Gone
IE 0 네트워크 12:16:15 '709704': 액세스 포인트 홍콩을 통해 MetaQuotes-Demo에서 승인됨 // 왔다
IS 0 네트워크 12:16:15 '709704': 2012.03.04 23:45:03에 80.83.239.67에서 수행된 이전 성공적인 인증
OS 0 네트워크 12:16:18 '709704': 터미널이 MetaQuotes Software Corp.와 동기화되었습니다. // 통신 복구됨
IQ 0 거래 12:18:12 '709704' : 거래 #8672388 0.10GBPCHF를 1.44540에 판매 완료(주문 번호 9495596 기준) // 이 거래는 다른 컴퓨터에서 실행되는 EA에 의해 이루어졌습니다.
DF 0 Trades 12:35:37 '709704' : 즉석 매수 0.10 EURGBP at 0.83422 // 수동으로 포지션을 청산하려고 하면 이전에 히스토리가 다운로드 중이었습니다.
IN 2 Trades 12:35:44 '709704' : 0.10 EURGBP에서 0.83422에서 즉시 구매 실패 [네트워크 연결 부재로 인해 요청 거부됨] // 실패
JP 1 Network 12:35:44 '709704': MetaQuotes-Demo에 대한 연결이 끊겼습니다.
EI 0 네트워크 12:36:00 '709704': Access Point Hong Kong을 통해 MetaQuotes-Demo에서 승인됨
IG 0 네트워크 12:36:00 '709704': 2012.03.05 02:16:12에 80.83.239.67에서 이전에 성공한 인증
PG 0 네트워크 12:36:08 '709704': MetaQuotes Software Corp.와 동기화된 터미널 // 통신 복구 후 정상 동작
MS

 
휴식 시간 전에 터미널이 한 서버와 작동하고 휴식 후에 다른 서버에 연결되어 기록 다운로드를 시작한 로그를 보면 알 수 있습니다. 서로 다른 서버 간의 히스토리가 동기화되지 않는다는 결론을 내릴 수 있습니다.
 
Valmars :

네, 소통에 단절이 있었다는 본질을 기억했습니다. 기기에 진드기가 도착했을 때만 터미널이 조정 및 기록 재개를 시작 하고 주말은 그렇지 않은 것 같습니다. 물론 차트를 수동으로 업데이트하면 최신 서버 시간도 업데이트됩니다. 그리고 머신에 있으면 접속 끊김을 수정하고 주말에 복구되면 히스토리를 확인하고 불러오는 함수 CheckLoadHistory()를 실행한다. 타이머를 사용합니다.

...

예, 틱이 도착하면 시간이 업데이트되지만 히스토리는 이미 거기에 있었고 시각적으로 볼 수 있었던 것 같습니다. 솔루션에 감사드립니다. 주말 전에 비슷한 상황을 다시 재현하여 해결책을 시도해 보겠습니다.
 

AlpariFS-MT5 서버에 연결하여 다른 조건에서 EA를 테스트 합니다. 실행 유형은 원래 EXECUTION_MARKET - 주문의 시장 실행이었습니다 . 그는 거래 패널을 사용하여 성공적으로 포지션을 개설/종료했습니다. 그런 다음 차트의 컨텍스트 메뉴에서 Depth of Market 을 사용할 수 있음을 발견했습니다. 열어보니 매수/매도 거래가 가능합니다. 테스트로 같은 장소에서 Depth of Market 에서 매수하고 포지션을 청산했습니다. 이후 계정 실행 유형이 EXECUTION_EXCHANGE - Exchange 실행 으로 변경되었습니다. 이는 MQL5 를 사용하여 결정되며 주문 창( F9 )의 드롭다운 목록에는 교환 실행주문 보류 의 두 가지 옵션만 있습니다. 다시 로그인하거나 터미널을 다시 시작해도 문제가 해결되지 않았습니다. 이제 데모 계정의 실행 유형은 EXECUTION_EXCHANGE 로 유지 됩니다.

나는 Alpari 지원팀에 연락하여 문제를 설명하고 다음과 같이 설명했습니다.

//---

아나톨리 | 17:55
현재 MT5 에 대한 데모 계정에 EXECUTION_MARKET 옵션이 있어야 한다는 것을 올바르게 이해하고 있습니까?

세르게이 | 17:56
네, 맞습니다.

//---

이것은 버그인 것 같습니다.

 

도움말에 일부 식별자에 대한 설명이 없습니다.

ORDER_FILLING_FOK , ORDER_FILLING_IOCORDER_FILLING_RETURN 이 있지만 ORDER_FILLING_AONORDER_FILLING_CANCEL 은 없지만 모두 동일한 설명 목록으로 연결됩니다.

 
tol64 : ORDER_FILLING_AONORDER_FILLING_CANCEL 은 그렇지 않지만 모두 동일한 설명 목록으로 연결됩니다.
그것들은 이미 폐지되었으므로 색인에서도 제거할 것입니다.
 
Rosh :
그것들은 이미 폐지되었으므로 색인에서도 제거할 것입니다.

고맙습니다.

//---

그런 질문이 생겼습니다. 지금 콘테스트 서버에서 콘테스트와 동일한 한도( 볼륨 제한 15개 / 볼륨 최대 5개 )로 테스트할 수 있나요? 기존 계정으로 접속을 시도했으나 서버 접속이 되지 않습니다. Metatrader 5 가 거래 가능한 모든 서버를 돌아 보았지만 전체 볼륨 ( Volume Limit )에 대한 제한을 찾지 못했지만 테스트해야합니다. 또는 원칙적으로 경쟁력 있는 가치가 있는 예를 사용하여 질문에 답하는 것으로 충분합니다.

오픈 포지션이 있으며 거래량은 14랏 입니다. 2로트 보류 주문을 시도하면 요청이 거부됩니까? 또는 주문은 지정된 볼륨에 배치되지만 위치가 동일한 볼륨( 14 lot )에 유지되는 경우 부분적으로 실행됩니다. 즉, 1 lot 입니다.

그 반대. 세트 보류 주문 14 로트 가 있습니다. 2랏의 볼륨으로 포지션을 열려고 하면 요청이 거부되나요?

 

나는 여기에서 내 행운을 시험해 볼 것입니다. 그렇지 않으면 "찻주전자"에 침묵이 있습니다 ...

친절하게 설명해주세요: https://www.mql5.com/ru/forum/3775/page113#comment_160125 . 나는 또한 필요한 계산의 소프트웨어 계산에 관심이 있습니다.

 

안녕하세요.

내장된 iADX 표시기 의 값을 참조하는 방법은 무엇입니까? 즉, 그 값으로 지정된 수의 막대 뒤로 ? mql4에서는 shift 매개변수를 설정하여 이 작업을 수행했습니다.

이미 감사합니다.

Документация по MQL5: Технические индикаторы / iADX
Документация по MQL5: Технические индикаторы / iADX
  • www.mql5.com
Технические индикаторы / iADX - Документация по MQL5