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

 

EA를 테스트하는 동안 우연히 테스터에서 잘못된 Sleep() 함수의 작동을 발견했습니다. 결론은 이렇습니다.

EA는 총 이익이 지정된 이익보다 크면 23:00에 모든 포지션을 마감합니다(CloseAll() 함수). 다음 위치를 닫은 후 10초의 지연이 수행됩니다. 수면(10000) 형식입니다.

다음은 로그에 있는 내용입니다.

FP 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 닫기전체 이익: 3030.66
JD 0 거래 04:31:04 즉석 매도 0.80 EURAUD at 1.56474 (1.56474 / 1.56558 / 1.56474)
JH 0 거래 04:31:04 거래 #85 1.56474에 0.80 EURAUD 판매 완료(주문 #85 기준)
HL 0 거래 04:31:04 거래 수행 [#85 매도 0.80 EURAUD at 1.56474]
HI 0 거래 04:31:04 주문이 1.56474에 0.80을 매도 [#85 1.56474에 0.80 EURAUD를 매도]
QE 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 EURAUD에 의한 포지션 마감
PN 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0
FG 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 Sleep 10 sek.
RO 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0
QD 0 거래 04:31:04 즉석 매수 1.00 USDJPY at 90.444 (90.417 / 90.444 / 90.417)
NS 0 거래 04:31:04 거래 #86 90.444에 1.00 USDJPY 구매 완료(주문 #86 기준)
MJ 0 Trade 04:31:04 거래 수행 [#86 1.00 USDJPY at 90.444]
JS 0 Trade 04:31:04 주문이 90.444에 1.00을 매수했습니다 [#86 1.00 USDJPY 90.444에 매수]
JL 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 USDJPY로 포지션 청산 예정
JI 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0
PN 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 Sleep 10 sek.
DF 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0
QN 0 거래 04:31:04 즉시 구매 0.80 AUDUSD 0.90001 (0.89967 / 0.90001 / 0.89967)
IH 0 거래 04:31:04 거래 #87 0.90001에서 0.80 AUDUSD 구매 완료(주문 #87 기준)
KQ 0 거래 04:31:04 거래 수행 [#87 0.80 AUDUSD에서 0.90001 구매]
RL 0 거래 04:31:04 주문이 0.90001에 0.80을 매수했습니다 [#87 0.90001에 0.80 AUDUSD 매수]
EG 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 AUDUSD에 의한 포지션 마감
LP 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0
JI 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 Sleep 10 sek.

NQ 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0

보시다시피 지연 전과 후의 시간은 동일합니다. 그러나 이것은 분과 초 TimeCurrent() == 0인 경우에만 발생합니다.

그렇지 않으면 슬립이 잘 작동합니다. 예를 들어:

MD 0 가격Channel_multi (2) (EURUSD,H1) 04:30:39 닫기전체 이익: 3382.28
KQ 0 거래 04:30:39 즉석 매도 0.70 EURUSD at 1.44090 (1.44090 / 1.44108 / 1.44090)
IE 0 거래 04:30:39 거래 #27 1.44090에 0.70 EURUSD 판매 완료(주문 #27 기준)
CI 0 거래 04:30:39 거래 수행 [#27 1.44090에서 0.70 EURUSD 매도]
EL 0 거래 04:30:39 주문 수행 1.44090에 0.70 매도 [#27 1.44090에 0.70 EURUSD 매도]
DH 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 EURUSD에 의한 포지션 마감
JR 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 23:0:7
MK 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 Sleep 10 sek.
EP 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 23:0:15
DE 0 거래 04:30:39 즉석 판매 0.80 AUDUSD 0.91951 (0.91951 / 0.91993 / 0.91951)
CJ 0 거래 04:30:39 거래 #28 0.80 AUDUSD에서 0.91951 완료(주문 #28 기준)
HR 0 거래 04:30:39 거래 수행 [#28 0.91951에서 0.80 AUDUSD 매도]
HH 0 거래 04:30:39 주문이 0.91951에 0.80을 매도 [#28 0.91951에 0.80 AUDUSD 매도]
LS 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 AUDUSD에 의한 포지션 청산 예정
QL 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 23:0:15
ED 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 Sleep 10 sek.
LO 0 가격Channel_multi (2) (EURUSD,H1) 04:30:39 23:0:25
DD 0 거래 04:30:39 즉석 매수 0.60 EURAUD at 1.56727 (1.56632 / 1.56727 / 1.56632)
LN 0 거래 04:30:39 거래 #29 1.56727에서 0.60 EURAUD 구매 완료(주문 #29 기준)
FK 0 거래 04:30:39 거래 수행 [#29 매수 0.60 EURAUD at 1.56727]
IR 0 Trade 04:30:39 주문은 1.56727에서 0.60을 매수했습니다 [#29 매수 0.60 EURAUD at 1.56727]
RM 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 EURAUD에 의한 포지션 마감
FE 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 23:0:25
GN 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 Sleep 10 sek.

QE 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 23:0:35

포지션 마감 코드:

 if (m_trade[j].PositionClose(m_symbol[j].Name()))
           {
            PosCloseCount--;
             printf ( "Position by %s to be closed" ,m_symbol[j].Name());
             MqlDateTime   dt_struct;
             TimeCurrent (dt_struct);
             printf ( "%u:%u:%u" ,dt_struct.hour,dt_struct.min,dt_struct.sec);
             Sleep ( 10000 );
             Print ( "Sleep 10 cek." );
             TimeCurrent (dt_struct);
             printf ( "%u:%u:%u" ,dt_struct.hour,dt_struct.min,dt_struct.sec);
           }

CloseAll 함수 호출:

   MqlDateTime   dt_struct;
   TimeCurrent (dt_struct);
   if (dt_struct.hour== 2 3 && m_account.Profit()>InpProfitToClose)
     {
      Trade=false; Print ( "CloseAll Profit: " ,m_account.Profit());
       while ( PositionsTotal ()> 0 )
         CloseAll();

조건을 다음과 같이 바꾸면

 if (dt_struct.hour== 23 && dt_struct.min> 0 && m_account.Profit()>InpProfitToClose)
그러면 오류가 없습니다.
Документация по MQL5: Общие функции / Sleep
Документация по MQL5: Общие функции / Sleep
  • www.mql5.com
Общие функции / Sleep - Документация по MQL5
 
joo :
즉, 내가 이미 생각한 것처럼 내 메시지가 헛되지 않습니까?

네. StringToTime 의 동작을 수정했습니다. 고맙습니다.

 
Valmars :

EA를 테스트하는 동안 우연히 테스터에서 잘못된 Sleep() 함수의 작동을 발견했습니다. 결론은 이렇습니다.

매우 흥미로운. 우리는 볼 것이다.
 
나는 "뉴스"탭을 열었고 거기에 ...-몇 가지 잘못된 뉴스가 있습니다. 내가 뭔가를 놓치고 있습니까?
 
x100intraday :
나는 "뉴스"탭을 열었고 거기에 ...-몇 가지 잘못된 뉴스가 있습니다. 내가 뭔가를 놓치고 있습니까?

뉴스를 받고 싶은 언어를 설정하세요.


 
Rosh :

뉴스를 받고 싶은 언어를 설정하세요.


아니요. mt5 포럼의 "뉴스"가 쏟아지는 것 같으며 Forex 뉴스와 관련이 없습니다. 최근에는 그냥 자동 업데이트가 아니라 mt5 배포 키트를 다시 다운로드하여 설치한지 거의 일주일이 되었습니다. 뉴스 탭에 들어가지 않았기 때문에 주중에는 어땠는지 모르겠지만 지금은 다음과 같은 사실을 알게 되었습니다.

이상한 금융 뉴스

 
x100intraday :

아니요. 거기에 mt5 포럼의 "뉴스"가 쏟아지는 것 같으며 Forex 뉴스와 아무 관련이 없습니다. 최근에는 그냥 자동 업데이트가 아니라 mt5 배포 키트를 다시 다운로드하여 설치한지 거의 일주일이 되었습니다. 뉴스 탭에 들어가지 않았기 때문에 주중에는 어땠는지 모르겠지만 지금은 다음과 같은 사실을 알게 되었습니다.

누락된 외환 뉴스 대신 MQL5.com 사이트의 뉴스가 방송되는 것은 데모 서버입니다(저희는 다른 사람의 뉴스를 무료로 배포할 권리가 없습니다).

보고 싶지 않다면 오른쪽 클릭 메뉴의 뉴스 카테고리 섹션에서 해당 확인란을 비활성화하면 됩니다.

 

자동 업데이트 이후 이전에 작업했던 Expert Advisor가 시계열을 복사할 수 없다는 메시지를 표시하기 시작했습니다. Expert Advisor를 언로드 하고 다시 로드하여 문제가 해결되었습니다. Q: 이 자동 업데이트 결과는 항상 예상해야 합니까 아니면 수정될 터미널 버그입니까?

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Программы MQL5 / Выполнение программ - Документация по MQL5
 
Yedelkin :

자동 업데이트 이후 이전에 작업했던 Expert Advisor가 시계열을 복사할 수 없다는 메시지를 표시하기 시작했습니다. Expert Advisor를 언로드 하고 다시 로드하여 문제가 해결되었습니다. Q: 이 자동 업데이트 결과는 항상 예상해야 합니까 아니면 수정될 터미널 버그입니까?

자세한 내용(로그, 스크린샷 등)을 지정하십시오.

이것이 없으면 합리적인 대답을 할 수 없습니다.

 
Renat :

자세한 내용(로그, 스크린샷 등)을 지정하십시오.

이것이 없으면 합리적인 대답을 할 수 없습니다.

확인. MQ 서버의 데모 계정, 첨부된 로그 파일(20100729.log), 자동 업데이트 시작 시간 20:54, 22:36에 그는 Expert Advisor를 삭제하고 1분 만에 로드했습니다.

EA에는 간단한 유형 검사가 있습니다.

 if ( CopyHigh ( Symbol (), 0 , 0 ,bars,high)<bars || CopyClose ( Symbol (), 0 , 0 ,bars,close)<bars || CopyLow ( Symbol (), 0 , 0 ,bars,low)<bars || CopyTime ( Symbol (), 0 , 0 ,bars,time)<bars)
  {
    Print ( "Can't copy timeseries!" );
    return ;
  }

이에 따라 자동업데이트 이후 메시지(파일 20100729copy.log)가 나타났다. 일반적으로 이것은 이전에 발생했지만 어떻게 든주의를 기울이지 않았습니다.

Expert Advisor를 다시 시작한 후 차트에 시가와 손절매의 사라진 선 나타났습니다.

말한 내용에 추가할 다른 것이 있습니까?