KimIV의 유용한 기능 - 페이지 126

 
khorosh :
그의 위치에 들어가십시오. 조국에서 멀리 떨어진 타국에서의 삶은 흔적 없이 지나가지 않는다. 한때 돌이킬 수 없는 실수를 저질렀고, 객원 직원이 된 자신에 대한 짜증과 분노가 있다.)
오류 검사는 잘 작동하지만 정상 작동을 방해하려는 많은 시도에도 불구하고 지금까지는 오류가 없습니다. 나는 가능한 모든 돌발 상황에 대해 충분한 보호를 받고 있습니다. 다시 말하지만, 미래가 말해줄 것이다!
 
artmedia70 :

특별히 if(OrderSelect(i,SELECT_BY_POS)) 를 별도의 블록으로 선택했습니다. 디버깅할 때 오류 값을 반환합니다. else {// 원하는 대로 선택 오류에 대해 작성하고 EMPTY}와 같이 선택 오류에서 반환합니다.

그리고 시장에서 선택된 주문이 있을 경우 선택에 오류가 발생하는 상황을 생각해보자. 상의하자. 나는 만난 적이 없습니다.

로저 :

그리고 올바르게 생성된 주문 주기가 "거짓"을 반환할 수 있는 이유를 하나 이상 지정하십시오.

아, Artem이 이미 요청했다는 사실을 눈치채지 못했습니다. 하지만 여전히.

차이점이 뭐야?

일반적으로 반환될 수 있습니다. 따라서 일부 조건 또는 다른 조건 집합에서 관찰한 결과가 false를 반환하지 않는 것으로 나타났다면 어떻게 될까요?

우리는 이 기능의 구현에 대한 세부 사항을 알지 못하며 문서에는 이에 대한 "가정"이 나와 있지 않습니다. 다음 브로커에 대한 다음 조건 세트에서 함수가 갑자기 false를 반환하기 시작하면 어떻게 될까요?

이유/상황에 대해 묻는 질문에는 여전히 간단하기 때문에 대답하겠습니다. 이유는 MT의 다음 버전이 출시되었을 때 개발 팀이 만든 이 기능 구현의 실수일 수 있습니다. 이것이 심각하게 받아들여질 만큼 충분히 가능성 있는 사건이기를 바랍니다.

이 가상의 오류로 인해 함수가 무작위로 시작되었지만 평균적으로 매 5번째 요청에 대해서만 false를 반환한다고 가정합니다.

보통 당신은 당신이 모르는 것을 생각해낼 수 없습니다. 그러므로 그것이 무엇 때문일 수 있는지에 대해 묻는 것은 거의 의미가 없습니다. 그런 일이 발생하면 이유를 쉽게 설명할 수 있습니다.

그러나 미래에 무슨 일이 일어날지 모른다고 해서 미래에 자신을 방어할 수 있는 것은 아닙니다. 일부 최상위 알고리즘은 수신된 잘못된 값으로 인해 많은 장작을 깨뜨릴 수 있습니다. 그들은 그 값이 거짓이라는 것을 알지 못할 것입니다.

그들이 가치가 없다는 것을 알고 있다면 그것이 사실이라면 자신의 실수가 없으면 장작을 부수지 않을 것입니다. 따라서 디버그 모드 뿐만 아니라 전투 모드에서도 값을 계산할 수 없다는 정보를 제공해야합니다.

 

예를 들어 텍스트 파일에서 표시기로 외부 데이터를 로드할 수 있습니까?

예를 들어, 일일 가격이 있고 차트, 시간대에 선을 그려야 합니까?

날짜 가격

2014년 4월 12일 100.00

2014년 3월 12일 101.12

2014년 2월 12일 102.45

2014년 12월 1일 103.23

2014년 11월 28일 102.43

2014년 11월 27일 101.90

 
좋은 기능, 작업에 대한 Igor 덕분입니다.
 
KimIV :

OpenPosition() 함수 사용의 예.

1. 현재 상품의 0.1랏 구매

2. 0.2랏 판매 EURUSD

3. 20핍 스탑으로 USDCAD 0.12랏 판매

4. 40포인트로 0.15랏 USDJPY 구매

5. 스톱 23으로 0.1랏 GBPJPY를 매도하고 44핍을 받습니다.

트레일러에는 OpenPosition() 함수를 테스트하기 위한 스크립트가 있습니다. 처음 4개의 예는 주석 처리되어 있습니다.
답변을 해주실지 안오실지 모르겠습니다. 나는 앉아서 바보입니다. Expert Advisor를 다중 통화로 만드는 방법을 모릅니다!
 
logut :
답변을 해주실지 안오실지 모르겠습니다. 나는 앉아서 바보입니다. Expert Advisor를 다중 통화로 만드는 방법을 모릅니다!
드미트리, 나는 보통 모든 논리를 종이에 적습니다. 무엇을, 언제, 무엇을 할 것인가
 
Roger :

올바르게 생성된 주문 주기가 "거짓"을 반환할 수 있는 이유를 하나 이상 지정하십시오.

아, Artem이 이미 요청했다는 사실을 눈치채지 못했습니다. 하지만 여전히.

네 쉽게!

다음 업데이트 이후 터미널이 재부팅되고 마지막 날의 주문만 표시되기 시작했습니다. 주문 내역이 보이지 않습니다. 함수는 무언가를 반환해야 합니다. 기록 유형이 없습니다.

브로커가 일부 주문을 삭제했습니다.

수술실의 구멍입니다. 메모리가 떨어졌고 함수가 가비지 메모리 셀을 사용합니다. 이 경우 모니터에 요통이 나타날 수 있습니다. 또는 나타나지 않을 수 있습니다. 다른 하드웨어 문제도 있을 수 있습니다.

터미널이 재부팅되고 서버와의 "연결이 끊어졌습니다". 나는 한 번 프록시 서버 뒤에 있는 AT Mt3에 앉았다. 인터넷은 전화 접속 방식이었고 시간과 속도가 엄격히 제한되어 있었고 인터넷 품질은 끔찍했습니다. 그래서 나는 진드기가 오는 것을 보고 그래프가 움직이고 있습니다. 주문을 열려고 할 때 터미널은 "서버에 연결되지 않음"과 같은 메시지를 작성했습니다.

MT4에서 문제가 발생했지만 여전히 존재합니다. 눈금이 표시되고 검은색(빈) 차트 화면이 나타납니다. sovtenik에서 0으로 나누기 오류가 발생하고 로봇이 충돌합니다. 차트를 마우스로 끌거나 새 눈금이 표시되면 모든 것이 정상입니다. 따라서 나눌 때 먼저 무엇으로 나눌 것인지 확인하고 0이 아니면 계속 진행합니다!

 

KimIV님, 저는 귀하의 기능을 사용하여 특정 이익에 도달하면 모든 포지션을 청산하고, 보류 주문 발동으로 인해 청산하는 과정에서 청산되지 않은 다른 포지션이 나타나는 상황에 직면했습니다. 이제 이러한 상황에 대한 추가 검사와 함수에 대한 두 번째 호출을 소개했습니다. 메인 클로징 루프가 끝난 후 함수 내부에 그러한 개선을 도입할 가치가 있다고 생각하십니까?

ClosePosBySortLots() 및 ClosePositions() 함수입니다.

 

또한 온라인 및 이력 테스트를 위한 보류 중인 주문을 삭제 하기 위한 기능 코드가 있습니다. - https://forum.mql4.com/en/38949#434195

테스트와 온라인의 차이점을 설명할 수 있습니까?

 
isCloseLastPosByStop() 및 isCloseLastPosByTake() 함수 는 주문의 종가 와 손절매(이익 실현)가 항상 일치하지 않기 때문에 항상 올바르게 작동하는 것은 아닙니다. 나는 내 것을 다시 만들었습니다. 이러한 값의 평등 조건은 다음 조건으로 대체되었습니다. 이러한 값 간의 차이의 절대값(5자리 따옴표 포함)은 5*Point보다 작아야 합니다.