mql4에서 OnTradeTransaction()을 대체하는 방법은 무엇입니까? - 페이지 7

 
Alexey Viktorov :

이 경우 Artyom의 라이브러리 없이는 살기 어려울 것입니다.

그리고 도서관은 텔레파시로 필요한 정보를 배울 것인가? 같은 방식으로 주문을 86400번 흔들 것입니다.

 
Igor Makanu :

"배열에 추가하지 않음"으로 무엇을 해야 하나요? - 누락된 시장 주문에 대한 데이터 삭제에 대해 말하는 것입니까?

주제에 따르면 마지막 틱에 얼마나 많은 주문이 있었는지 모니터링하는 것이 아니라 불필요한 계산으로 코드를로드하지 않으려면 배치 또는 강제로 설정할 때 설정해야 하는 OnTradeTransaction 이벤트 플래그를 최소한 설정해야 합니다. 주문 마감 - 수행하려는 작업을 알고 있습니까? - 이것을 기계에 직접 보고하지 않는 이유는 무엇입니까? 기계가 모든 데이터를 매 틱/또는 10ms마다 구동하도록 강제하는 대신


추신: 지식 기반이 없는 상황에서 문제를 해결해 달라는 요청이 있는 또 다른 주제입니다. 개인적인 것은 아니지만 이미 일상적인 일이 되고 있습니다. 어떤 사람이 말할 수 있지만 추가 자료를 연구해야 하며, 그냥 같은 문제에 대해 논의해야 합니다. -생각이 같은 사람들은 같은 수준의 지식을 가진 비슷한 생각을 가진 사람들과 문제에 대해 토론하고 있습니다((((

"배열에 추가하지 않음"을 사용하면... mql4에는 ArrayRemove() 함수가 없지만 원칙은 제거할 인덱스 수만큼 크기를 추가로 축소하여 배열을 자체로 복사하는 것을 기반으로 합니다. 그리고 OnTradeTRAnsaction() 대신에 저는 이 스레드에서 Artyom의 라이브러리에 대한 대안이 없으며 기대하지 않는다고 반복해서 말했습니다.
 
Igor Makanu :

주문을 하거나 강제로 종료할 때 설정해야 하는 최소한 OnTradeTransaction 이벤트 플래그를 만들어야 합니다.

예, 생각했습니다. 하지만 서로 다른 고문이 다른 기능에 참여하고 아무도 결합하지 않을 것입니다. 소환할 플래그 파일을 작성할 수 있습니다. 어쩌면 그렇게 할 수도 있습니다. 대안을 찾는 것이 어떻겠습니까?

 
Aleksandr Volotko :

그리고 도서관은 텔레파시로 필요한 정보를 배울 것인가? 같은 방식으로 주문을 86400번 흔들 것입니다.

이것은 기사의 토론 스레드에서 찾을 수 있습니다. 그리고 나는 대답하지 않을 것이다. 방금 써봤는데... 그리고 Artyom의 메시지를 다시 읽는 것부터 시작합니다. 이 메시지에 주의하십시오.

주문 및 위치 속성의 해시 합계입니다 . 기호는 이름을 구성하는 문자 코드의 합계로 인코딩됩니다. 그러나 다음은 전체 주기입니다. 해시 합계가 변경되면 무슨 일이 일어났는지 살펴봅니다.


 
Aleksandr Volotko :

예, 생각했습니다. 하지만 다른 고문이 다른 기능에 참여하고 아무도 결합하지 않을 것입니다. 소환장에 플래그 파일을 작성할 수 있습니다. 어쩌면 그렇게 할 수도 있습니다. 대안을 찾는 것이 어떻겠습니까?

대안은 여기 https://www.mql5.com/ru/docs/standardlibrary/datastructures

또는 다른 측면에서 여전히 "데이터 수집" SB에 의존하는 중재자 Artem 기사의 자료를 사용합니다.


무엇을 말하든지, 적어도 MQL 언어의 기능을 이해하기 위해서는 새로운 자료를 연구해야 하지만 단순히 10년 전 어레이에 앉아서 OrderTotal()의 분석 시간을 줄이는 것 .... 현재 문제와 미래의 새로운 작업을 모두 해결하지 않음


여러 Expert Advisors 및 데이터 교환에 대해 이야기하는 경우 - 주문을 위한 플래그 등은 보편적인 솔루션이 없습니다. 이 주제에는 많은 변형이 있습니다. 일반적으로 아픈 점이 있습니다. 기성품이 많이 있지만 저에게 맞는 것은 없었습니다. 오히려 데이터베이스 서버에 와서 그것을 통해 교환할 것입니다. 확실히 안정적이고 실용적일 것입니다. 불행히도 MT 개발자는 자신의 비전에 따라 수년 동안 이 문제를 무시해 왔습니다. 사용자를 위한 기능의 필요성

 
Alexey Viktorov :

이것은 기사의 토론 스레드에서 찾을 수 있습니다. 그리고 나는 대답하지 않을 것이다. 방금 써봤는데... 그리고 Artyom의 메시지를 다시 읽는 것부터 시작합니다. 이 메시지에 주의하십시오.

이 모든 것이 주문 검색으로 이어지며 하루에 100,500번은 이 작업을 수행하고 싶지 않습니다. 그리고 그것은 중요하지 않습니다. 루프에서 총 위치 볼륨을 계산하거나 주문 속성 의 라이브러리 해시 합계를 계산합니다.

 
Igor Makanu :

대안은 여기 https://www.mql5.com/ru/docs/standardlibrary/datastructures

또는 다른 측면에서 여전히 "데이터 수집" SB에 의존하는 중재자 Artem 기사의 자료를 사용합니다.


누가 뭐라고 해도 적어도 MQL 언어의 기능을 이해하려면 새로운 자료를 연구해야 합니다. 그러나 단순히 10년 전 배열에 앉아서 OrderTotal()의 분석 시간을 줄이는 것 .... 현재 문제와 미래의 새로운 작업을 모두 해결하지 않음

내가 완전히 바보라고 생각하지 마십시오. 때로는 사용할 수 있는 것, 사용할 수 있는 것, 사용할 수 있는 것으로만 작업 해야 하는 것입니다.

 
Vitaly Muzichenko :

어떤가요?

StringToShortArray()
ShortArrayToString()
 
Artyom Trishkin :
StringToShortArray()
ShortArrayToString()

마음이 약한 것 같다)

그것을 적용하는 방법?

 static __Total = - 1 ;
int OT=OrdersTotal();
   if (OT!=__Total)
   {
     SetMarket(); // здесь дёргаем текущую ситуацию на счёте и заполняем структуры
     __Total=OrdersTotal(); // запомним количество
   }

딱 한가지 문제가 있고 극히 드문 경우인데 몇 년 만에 처음 발견했는데 그 이전이었을 수도 있고 그냥 눈치채지 못한 것일 뿐

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

mql4에서 OnTradeTransaction()을 대체하는 방법은 무엇입니까?

비탈리 무지첸코 , 2020.01.27 15:32

이것으로 만 신중하게 작업해야합니다. 오늘 한 위치가 닫히고 두 번째 위치가 다른 쌍에서 열렸고 동시에 틱 사이에서 거의 동시에 열렸습니다 .

결과적으로 OrdersTotal() 은 8 과 동일하게 유지되었습니다 . 전문가의 논리가 잘못되었습니다. 새 데이터를 다시 계산하지 않았습니다.


 

그게 다야, 해결책은 간단하다: 우리는 히스토리를 변경하기 위해 한 번 더 검사를 도입한다. 그래서 아무 것도 잃지 않고 100% 작동할 것이다.

 static __OTotal = - 1 ;
static __HTotal = - 1 ;
int OT= OrdersTotal ();
int HT=OrdersHistoryTotal();
   if (OT!=__OTotal || HT!=__HTotal) // если изменилось - выполняем
   {
     SetMarket(); // здесь дёргаем текущую ситуацию на счёте и заполняем структуры
     __OTotal= OrdersTotal (); // запомним текущее количество
     __HTotal=OrdersHistoryTotal(); // запомним количество в истории
   }