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

 
Vitaly Muzichenko :

아니요, 하지만 아마도 우리는 다른 것에 대해 이야기하고 있는 것 같습니다.

그것은 항상 작동합니다

똑같이, 나는 강제로 터미널을 열고 확인했습니다 ... 다음은 하나의 스크립트에 대한 세 번의 실행과 그에 따른 세 가지 결과입니다.

스크립트에는 한 줄만 있습니다.

   Print ( "OrdersHistoryTotal " , OrdersHistoryTotal());
2020.01 . 27 18 : 28 : 51.063 Script 00 EURGBP,H4: removed
2020.01 . 27 18 : 28 : 51.063 00 EURGBP,H4: uninit reason 0
2020.01 . 27 18 : 28 : 51.063 00 EURGBP,H4: OrdersHistoryTotal 48
2020.01 . 27 18 : 28 : 51.063 00 EURGBP,H4: initialized
2020.01 . 27 18 : 28 : 51.043 Script Test\ 00 EURGBP,H4: loaded successfully
2020.01 . 27 18 : 28 : 38.203 Script 00 EURGBP,H4: removed
2020.01 . 27 18 : 28 : 38.193 00 EURGBP,H4: uninit reason 0
2020.01 . 27 18 : 28 : 38.193 00 EURGBP,H4: OrdersHistoryTotal 47
2020.01 . 27 18 : 28 : 38.193 00 EURGBP,H4: initialized
2020.01 . 27 18 : 28 : 38.183 Script Test\ 00 EURGBP,H4: loaded successfully
2020.01 . 27 18 : 28 : 16.443 Script 00 EURGBP,H4: removed
2020.01 . 27 18 : 28 : 16.443 00 EURGBP,H4: uninit reason 0
2020.01 . 27 18 : 28 : 16.443 00 EURGBP,H4: OrdersHistoryTotal 4
2020.01 . 27 18 : 28 : 16.443 00 EURGBP,H4: initialized
2020.01 . 27 18 : 28 : 16.423 Script Test\ 00 EURGBP,H4: loaded successfully

어드바이저가 작업 중일 때 사용자가 장난스러운 핸들로 기록 표시 범위를 전환하기로 결정하면 어드바이저가 두 번째 스위치에서 미쳐버릴 것이라는 사실에 대해 이야기하고 있습니다. 적거나 더 많이, 그리고 다시 그것은 암기된 것과 다릅니다. 그리고 라인에 있어도

   if (HT!=__TotalHist)

!= 대신에 구체적으로 > 상황을 바꾸지 않을 것입니다. 설정이 "오늘"로 설정되고 "모든 기록"으로 전환되는 순간에 어드바이저가 실행되면... 어떻게 됩니까???

 
Aleksandr Volotko :

네, OrderHistoryTotal()을 터치했는데 아무 생각이 없었는데 왜요?

만약을 위해 :))))

 
Alexey Viktorov :

만약을 위해 :))))

:)) 나는 충분하고 OrdersTotal() 은 꽤

두 개의 타이머를 만들 수 있습니까? 하나는 100ms마다 한 번 이상 OrdersTotal() 값을 비교하고 두 번째는 안전상의 이유로 루프의 전체 열거를 1분에 한 번(또는 그 미만) 비교합니다. 24개의 거래가 100500번마다 닫힙니다. / 1분 후에 열립니다 - 저는 확실히 죽지 않을 것입니다. 보증금도 생각합니다.

 
Aleksandr Volotko :

:)) 나는 충분하고 OrdersTotal()은 꽤

두 개의 타이머를 만들 수 있습니까? 하나는 100ms마다 한 번 이상 OrdersTotal() 값을 비교하고 두 번째는 안전상의 이유로 루프의 전체 열거를 1분에 한 번(또는 그 미만) 비교합니다. 24개의 거래가 100500번마다 닫힙니다. / 1분 후에 열립니다 - 저는 확실히 죽지 않을 것입니다. 보증금도 생각합니다.

그리고 알고리즘에 의해 얼마나 많은 동시 오픈 주문이 제공됩니까?

 
Alexey Viktorov :

똑같이, 나는 강제로 터미널을 열고 확인했습니다 ... 다음은 하나의 스크립트에 대한 세 번의 실행과 그에 따른 세 가지 결과입니다.

스크립트에는 한 줄만 있습니다.

어드바이저가 작업 중일 때 사용자가 장난스러운 핸들로 기록 표시 범위를 전환하기로 결정하면 어드바이저가 두 번째 스위치에서 미쳐버릴 것이라는 사실에 대해 이야기하고 있습니다. 적거나 더 많이, 그리고 다시 그것은 암기된 것과 다릅니다. 그리고 라인에 있어도

!= 대신에 >를 구체적으로 넣으면 상황이 바뀌지 않습니다. 설정이 "오늘"로 설정되고 "모든 기록"으로 전환되는 순간에 어드바이저가 실행되면... 어떻게 됩니까???

어쨌든 평등은 없으며 코드는 더 나아갈 것입니다. 그러나 if (HT > __TotalHist) 를 넣으면 문제가 발생합니다.

 
Alexey Viktorov :

그리고 알고리즘에 의해 얼마나 많은 동시 오픈 주문이 제공됩니까?

최대 2-3다스

 
Vitaly Muzichenko :

어쨌든 평등은 없으며 코드는 더 나아갈 것입니다. 그러나 if (HT > __TotalHist) 를 넣으면 문제가 발생합니다.

Vitaly, 문제는 어떤 경우에도 갈 것입니다. 무슨 말을 하든 EA가 기록에 있는 주문 수의 변경에 응답해야 하는 경우 이 수가 어떻게 변경되었는지에 관계없이 이에 대응합니다. 사실 역사상 주문의 수는 늘어날 수 밖에 없기 때문에 덜 위험할 거라고 생각했지만 문제가 해결되지는 않았습니다. 나 자신만을 위해 작성하더라도 수동으로 전환할 가능성을 배제할 수 없습니다. SMS가 무엇을 떠올리는지 결코 알 수 없습니다)))

 
Aleksandr Volotko :

최대 2-3다스

이러한 금액의 경우 주문 속성이 있는 티켓 배열 또는 구조 배열을 만들고 각 틱에서 유형 및 마감 시간별로 변경 사항을 확인하는 것이 더 쉽습니다. 이를 통해 보류 중인 주문 의 활성화 또는 포지션 마감을 추적할 수 있습니다. 그리고 OrderSend()를 보낸 직후 열면 배열의 크기를 추가하고 필요한 모든 것을 거기에 넣습니다.

 
따라서 문제는 하루에 86,400번 누구에게나 주문을 흔들 수 있지만 원하지 않는다는 것입니다.
 
Aleksandr Volotko :
따라서 문제는 하루에 86,400번 누구에게나 주문을 흔들 수 있지만 원하지 않는다는 것입니다.

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