//ResetLastError();//if(!OrderClose(OrderTicket(),OrderLots(),_Bid,15)) Print("Чё-та не закрылася позиция. Фигня вот такая происходит: "+GetLastError());
좋은 아침.
두 줄을 제거했습니다. 모든 것이 작동합니다. 결과와 로그 모두에서 모든 것이 차트에 올바르게 표시됩니다.
질문: 컴파일할 때
'오제로.mq4' 오제로.mq4 1 1 'OrderClose'의 반환 값을 확인해야 합니다. Ozero.mq4 46 13 오류 0개, 경고 1개 1 2
컴파일러는 무엇에 대해 경고합니까? 46행은 OrderClose(OrderTicket(),OrderLots(),_Bid,15)입니다.
예상대로 이것은 실제로 StringToTime 함수의 버그입니다. 모든 증상이 수렴됩니다. 이 함수는 문자열 "23:59"를 MT4 날짜가 아닌 로컬 PC 날짜가 있는 날짜/시간으로 변환합니다. 그리고 테스터에서는 아시다시피 로컬 PC의 날짜가 에뮬레이트되어 터미널 시간과 동일합니다. 따라서 테스터에서는 모든 것이 제대로 작동하지만 데모/실제 테스트에서는 결함과 손실이 나타납니다. 물론 문서에는 날짜가 어디에서 왔는지 알려주지 않고 위의 링크는 이 문제가 4년 전에 제기되었음을 보여주지만 분명히 메타따옴표는 신경 쓰지 않습니다.
안녕하세요! if esle 문이 때때로 저에게 효과가 없는 이유를 알려주세요.
다음은 예입니다.
어디에:
H3는 레벨의 가격 값입니다.
가격 - 현재 가격
결과적으로 가격이 이 수준에 도달했지만(때로는 그 수준에서 멈추기도 함) 경고가 작동하지 않습니다.
무슨 일이야?
좋은 아침.
프로그램은 이렇게 생겼습니다.
컴파일하면 다음이 생성됩니다.
'오제로.mq4' 오제로.mq4 1 1
'OrderClose'의 반환 값을 확인해야 합니다. Ozero.mq4 46 13
'숫자'에서 '문자열'로의 암시적 변환 Ozero.mq4 49 117
오류 0개, 경고 2개 1 3
"결과" 탭에서 주문이 열리고 닫히는 것을 볼 수 있습니다.
1 2014.08.25 00:00 매수 1 0.10 1.6550 0.0000 0.0000 0.00 10000.00
2 2014.08.25 06:30 종가 1 0.10 1.6562 0.0000 0.0000 0.12 10000.12
3 2014.08.25 06:31 매수 2 0.10 1.6564 0.0000 0.0000 0.00 10000.12
4 2014.08.25 10:00 마감 2 0.10 1.6574 0.0000 0.0000 0.10 10000.22
5 2014.08.25 10:00 매수 3 0.10 1.6576 0.0000 0.0000 0.00 10000.22
6 2014.08.25 12:58 종가 3 0.10 1.6586 0.0000 0.0000 0.10 10000.32
7 2014.08.25 12:58 매수 4 0.10 1.6590 0.0000 0.0000 0.00 10000.32
8 2014.08.26 13:13 종가 4 0.10 1.6576 0.0000 0.0000 -0.14 10000.18
8 - 테스터를 닫아서 작업을 중단했습니다.
다음으로 "일지"를 보십시오.
2014.10.31 07:46:44.837 GBPUSD,M15: 312876ms(총 시간 324436ms) 내에 처리된 4453개의 틱 이벤트(5608개 막대, 340128개 막대 상태)
2014.10.31 07:46:44.837 2014.08.26 13:13 테스터: 4번 주문 마감
2014.10.31 07:46:44.798 2014.08.26 13:13 비주얼 테스터 정지
2014.10.31 07:43:15.315 2014.08.25 12:58 오제로 GBPUSD,M15: 주문오픈 4
2014.10.31 07:43:15.315 2014.08.25 12:58 Ozero GBPUSD,M15: 오픈 #4 1.6590 ok에서 0.10 GBPUSD 매수
2014.10.31 07:43:15.315 2014.08.25 12:58 Ozero GBPUSD,M15: 첫 포지션 오픈
2014.10.31 07:43:15.245 2014.08.25 12:58 Ozero GBPUSD,M15: 포지션이 마감되지 않았습니다. 이 쓰레기가 일어나고 있습니다: 4108
2014.10.31 07:43:15.245 2014.08.25 12:58 Ozero GBPUSD,M15: OrderClose 오류 4108
2014.10.31 07:43:15.245 2014.08.25 12:58 Ozero GBPUSD,M15: OrderClose 기능에 대한 알 수 없는 티켓 3
2014.10.31 07:43:15.245 2014.08.25 12:58 Ozero GBPUSD,M15: #3 종가 0.10 GBPUSD 1.6576, 가격 1.6586
2014.10.31 07:42:51.123 2014.08.25 10:00 오제로 GBPUSD,M15: 주문오픈 3
2014.10.31 07:42:51.123 2014.08.25 10:00 Ozero GBPUSD,M15: 오픈 #3 1.6576 ok에서 0.10 GBPUSD 매수
2014.10.31 07:42:51.123 2014.08.25 10:00 Ozero GBPUSD,M15: 첫 포지션 오픈
2014.10.31 07:42:51.059 2014.08.25 10:00 Ozero GBPUSD,M15: 포지션이 마감되지 않았습니다. 이 쓰레기가 일어나고 있습니다: 4108
2014.10.31 07:42:51.059 2014.08.25 10:00 Ozero GBPUSD,M15: OrderClose 오류 4108
2014.10.31 07:42:51.059 2014.08.25 10:00 Ozero GBPUSD,M15: OrderClose 기능에 대한 알 수 없는 티켓 2
2014.10.31 07:42:51.059 2014.08.25 10:00 Ozero GBPUSD,M15: #2 종가 0.10 GBPUSD 1.6564, 가격 1.6574
2014.10.31 07:42:31.473 2014.08.25 06:31 오제로 GBPUSD,M15: 주문오픈 2
2014.10.31 07:42:31.473 2014.08.25 06:31 Ozero GBPUSD,M15: 오픈 #2 1.6564 ok에서 0.10 GBPUSD 매수
2014.10.31 07:42:31.473 2014.08.25 06:31 Ozero GBPUSD,M15: 1위 오픈
2014.10.31 07:42:31.331 2014.08.25 06:30 Ozero GBPUSD,M15: 포지션이 마감되지 않았습니다. 이 쓰레기가 일어나고 있습니다: 4108
2014.10.31 07:42:31.331 2014.08.25 06:30 Ozero GBPUSD,M15: OrderClose 오류 4108
2014.10.31 07:42:31.331 2014.08.25 06:30 Ozero GBPUSD,M15: OrderClose 기능에 대한 알 수 없는 티켓 1
2014.10.31 07:42:31.331 2014.08.25 06:30 Ozero GBPUSD,M15: 마감 #1 매수 0.10 GBPUSD 1.6550, 가격 1.6562
2014.10.31 07:41:31.966 2014.08.25 00:00 오제로 GBPUSD,M15: 주문오픈 1
2014.10.31 07:41:31.966 2014.08.25 00:00 Ozero GBPUSD,M15: 오픈 #1 1.6550 ok에서 0.10 GBPUSD 매수
2014.10.31 07:41:31.966 2014.08.25 00:00 Ozero GBPUSD,M15: 첫 포지션 오픈
2014.10.31 07:41:31.958 오제로 입력: gLot=0.1; g포인트=0.001;
이제 완전히 혼란스러워졌습니다. 한편으로는 주문이 마감되고 차트와 "결과"에서 볼 수 있으며 다른 한편으로는 로그로 판단하면 코드가 오류와 함께 실행됩니다. (((((((((((((())
호수.
동일한 주문을 두 번 마감하려고 합니다. 상단을 제거합니다.
좋은 아침.
두 줄을 제거했습니다. 모든 것이 작동합니다. 결과와 로그 모두에서 모든 것이 차트에 올바르게 표시됩니다.
질문: 컴파일할 때
'오제로.mq4' 오제로.mq4 1 1
'OrderClose'의 반환 값을 확인해야 합니다. Ozero.mq4 46 13
오류 0개, 경고 1개 1 2
컴파일러는 무엇에 대해 경고합니까? 46행은 OrderClose(OrderTicket(),OrderLots(),_Bid,15)입니다.
호수.
남자들은 오늘 발생한 결함 때문에 나에게 말합니다.
EA는 금요일 시장이 마감되기 15분 전에 거래를 중단할 수 있습니다.
새로운 날짜가 나타나면 EA가 금요일인지 확인한 다음 StringToTime("23:59")-15*60에서 오늘 거래를 중지합니다.
전략 테스터에서는 이 기능이 올바르게 작동하지만 실제로는 완전히 다른 그림을 봅니다. 금요일이 오면 어드바이저가 첫 번째 틱으로 거래를 중단합니다.
다음은 전문가 잡지의 인쇄물입니다.
브로커 #1, 데모:
0 05:59:47.731 Scalper GBPAUDpt,M1: 금요일에 완료 = 2014.10. 23 23:44:00
브로커 №2, 실제:
0 03:00:11.999 Scalper EURUSD,M1: 금요일 마감 = 2014.10. 23 23:44:00
즉, 첫 번째 눈금에 오늘의 일일 막대가 나타날 때(10월 24일, 금요일), EA
오늘 날짜를 지정하는 대신 문자열 "23:59"를 어제의 시간으로 변환합니다.
그러나 EA가 금요일 정오에 다시 시작되면 작업 완료 시간을 올바르게 결정합니다.
이 문제의 원인을 찾았습니다: https://forum.mql4.com/33023
예상대로 이것은 실제로 StringToTime 함수의 버그입니다. 모든 증상이 수렴됩니다. 이 함수는 문자열 "23:59"를 MT4 날짜가 아닌 로컬 PC 날짜가 있는 날짜/시간으로 변환합니다. 그리고 테스터에서는 아시다시피 로컬 PC의 날짜가 에뮬레이트되어 터미널 시간과 동일합니다. 따라서 테스터에서는 모든 것이 제대로 작동하지만 데모/실제 테스트에서는 결함과 손실이 나타납니다. 물론 문서에는 날짜가 어디에서 왔는지 알려주지 않고 위의 링크는 이 문제가 4년 전에 제기되었음을 보여주지만 분명히 메타따옴표는 신경 쓰지 않습니다.
질문 하나 더. 나는 다음을 올바르게 이해합니다.
1. 주문 번호는 "0"부터 시작합니다.
2. 이러한 코드는 프로그래밍 방식으로라도 수동으로 열더라도 모든 주문을 절대적으로 닫습니까? 저것들. 프로그램의 이 부분을 닫을 수 없는 주문이 있습니까?
호수.
화면에서 텍스트 스크롤을 해본 사람이 있습니까? 예를 들어 - 이런 저런 주문이 열리다 / 닫히다 / 수정되다 등등.. 뉴스 이런 일이... ?
실례가 되지 않는다면 코드를 보여주세요.
센크스!
아래쪽이 더 좋습니다. 먼저 주문을 선택해야 합니다.
더 나은 방법:
화면에서 텍스트 스크롤을 해본 사람이 있습니까? 예를 들어 - 이런 저런 주문이 열리다 / 닫히다 / 수정되다 등등.. 뉴스 이런 일이... ?
실례가 되지 않는다면 코드를 보여주세요.
센크스!
빈 표시기 창에서 세로 스크롤을 했습니다 . 기능은 다음과 같습니다.
단일 색상 메시지를 사용하는 예(다른 단어에 대해 한 줄에 4가지 색상을 사용할 수 있음):
차트에는 Win_Inform이라는 빈 표시기가 있어야 합니다.