Эта статья основана на моём выступлении на ITSubbotnik, прошедшем в Рязани 14 октября 2017 года. На русском пока что довольно мало материала на эту тему, надеюсь что статья будет вам полезна. Disclaimer: Автор не является экспертом ни в WebAssembly, ни в JavaScript. Данная статья есть компиляция мыслей и идей, полученных из выступлений других...
2017.11.10 16:29:01.266 '8615385': order was opened : #4448742 sell 0.02 EURNZD at 1.68131 sl: 0.00000 tp: 0.00000
2017.11.10 20:37:38.949 '8615385': close order #4448742 sell 0.02 EURNZD at 1.68131 sl: 0.00000 tp: 0.00000 at price 0.00000
2017.11.10 20:37:39.277 '8615385': close order #4448742 sell 0.02 EURNZD at 1.68131 sl: 0.00000 tp: 0.00000 at price 0.00000
2017.11.10 20:37:39.745 '8615385': order #4448742 sell 0.02 EURNZD at 1.68131 sl: 0.00000 tp: 0.00000 closed at price 1.68356
2017.11.10 20:37:39.745 '8615385': order #4448742 sell 0.02 EURNZD closing at 0.00000 failed [Invalid parameters]
전문가 탭
Line 8103 : 216 : 29 : 01.266 Forex V2 EURNZD,M1: open # 4448742sell 0.02 EURNZD at 1.68131 ok
Line 8104 : 016 : 29 : 01.266 Forex V2 EURNZD,M1: Order # 4448742open
Line 10145 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 1 закрытия/удаления ордера # 4448742Ошибка: 3
Line 10146 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10147 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 2 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10148 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10149 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 3 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10150 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10151 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 4 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10152 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10153 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 5 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10154 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10155 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 6 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10156 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10157 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 7 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10158 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10159 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 8 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10160 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10161 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 9 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10162 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10163 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 10 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10164 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10165 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 11 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10166 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10167 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 12 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10168 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10169 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 13 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10170 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10171 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 14 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10172 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10173 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 15 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10174 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10175 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 16 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10176 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10177 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 17 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10178 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10179 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 18 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10180 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10181 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 19 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10182 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10183 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 20 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10184 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10185 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 21 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10186 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10187 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 22 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10188 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10189 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 23 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10190 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10191 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 24 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10192 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10193 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 25 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10194 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10195 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 26 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10196 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10197 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 27 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10198 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10199 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 28 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10200 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10201 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 29 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10202 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10203 : 020 : 37 : 39.760 ExpertName EURNZD,H1: Неудачная попытка 30 закрытия/удаления ордера # 4448742Ошибка: 4108
Line 10204 : 320 : 37 : 39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10243 : 220 : 37 : 39.760 ExpertName EURNZD,H1: close # 4448742sell 0.02 EURNZD at 1.68131 at price 1.68356
오류 3 이후에는 실제로 닫히지 않습니다. 이해했습니다.
Expert #1이 청산 중이고 두 번째 전문가도 같은 시간에 같은 포지션 청산을 시도했습니다.
작업의 논리를 수정했고 이제 물론 오류가 없습니다.
BUT: 루프 내에서 OrderClose()에 전달된 동일한 매개변수를 사용하여 오류 번호를 #3에서 #4108로 변경합니다.
오류 3이 먼저 발생한 다음 4108이 발생하는 이유는 무엇입니까? - 이것이 남은 질문이다.
{타이밍을 보면 이론적으로 차단된 주문을 닫으려는 시도가 있으며(동시에 오류 139 자체가 발행되지 않음), 닫은 후(따라서 주문 잠금 해제), 오류 3.}
왜 터미널은 주문이 차단되었다는 특정 오류를 제공하지 않고 대신 매우 일반적인 오류 3을 제공합니까?
void f( int &[] ) {}
class A
{
public :
int Array[];
void f2() const
{
f( this .Array); // 'Array' - constant variable cannot be passed as reference
}
};
2017.11.10 16:29:01.266 '8615385': order was opened : #4448742 sell 0.02 EURNZD at 1.68131 sl: 0.00000 tp: 0.00000
2017.11.10 20:37:38.949 '8615385': close order #4448742 sell 0.02 EURNZD at 1.68131 sl: 0.00000 tp: 0.00000 at price 0.00000
2017.11.10 20:37:39.277 '8615385': close order #4448742 sell 0.02 EURNZD at 1.68131 sl: 0.00000 tp: 0.00000 at price 0.00000
2017.11.10 20:37:39.745 '8615385': order #4448742 sell 0.02 EURNZD at 1.68131 sl: 0.00000 tp: 0.00000 closed at price 1.68356
2017.11.10 20:37:39.745 '8615385': order #4448742 sell 0.02 EURNZD closing at 0.00000 failed [Invalid parameters]
터미널 로그를 보면 오류 메시지 3은 위치가 닫힌 후 발행되며 서버의 잠금이 감지되어야 하는 순간이 아닙니다.
오류 메시지 139는 거의 0.5초 전에 발행되었을 수 있습니다. 이 모든 시간 동안 어드바이저는 주문을 종료한 후 오류 3이 발생하도록 "중단"합니다.
그런데 오류 3 Invalid Parameters는 터미널 로그에 있으며 4108은 출력으로 인한 것이며 전문가 탭에만 있습니다. 4108은 클라이언트 측 처리인 것 같습니다.
나는 단지 그것을 코드에 넣기 위해 논리를 알고/이해하고 싶고, 과학적 찌르기의 방법으로 더듬지 않기를 원한다..)
4108에서는 묻지 않겠습니다. 그러나 반복합니다. 이해의 요점을 이해하지 못합니다. 두 명의 고문이 동시에 마감 명령을 내리면 그 중 한 명이 확실히 오류가 발생합니다(차이점은 무엇입니까?). 처리는 매우 간단합니다. OrderSelect를 수행하고 OrderCloseTime을 확인합니다.
뭐? 중재자로부터: 불행히도 기술적인 결함으로 인해 설명 텍스트가 제거되었습니다. 다시 작성하여 검토를 위해 제품을 제출하십시오. 불편에 대해 사과드립니다.
이것은 단지 불편함이 아니라 뇌를 여러 번 솟구쳐 오르는 것입니다(매회 10일의 기다림). 그리고 그것을 삭제하고 말하기: 오, 죄송합니다, 우리가 지웠고, 스레드처럼 스스로 복원한 다음 기다리십시오. 또 10일. - 그리고 당신이 이것을 하려고 할 때, 사이트는 여전히 충돌합니다 ..
이게 뭔 개소리야? 이것을 잃기 위해서는 어떤 종류의 실패가 일어나야 합니까? 복원할 역사가 없다고요? 설명 메시지가 며칠 동안 보관되었습니다. 이번에는 왜 진행자 메시지가 안 뜨나요?
데이터 지우기와 관련된 이 문제가 한 번 발생하지 않는다는 것을 확실히 알고 있습니다. 이 실패라고 주장하는 것은 사실 실패가 아닙니다(마감일 연기). 왜냐하면 이것은 저에게만 일어나는 것이 아니라 동시에 일어나지 않기 때문입니다(문제는 6개월 이상 존재했습니다)! - 의견을 부탁합니다.
그리고 고쳐주세요. 할 수 없다면 저를 고용하세요. 일주일 안에 2000유로에 하겠습니다.
어떻게 .. 대실패 스트레이트 ..
일반적으로 지워진 것이 복원됩니까? 사회자와의 통신이 절반을 잃었습니다. 포럼에서 사라진 메시지. 그리고 사회자는 비어있는 메시지도 삭제했습니다. 왜 체제가 없습니다 - 그러한 작업이 수행되고 있습니까? - 또는 오히려 순서는 다음과 같습니다. 먼저 모드를 켜고 작업을 수행한 다음 모드를 복원합니다.
올리자마자 사이트가 다운되더라구요. 나는 업데이트하기로 결정했습니다-사이트가 거짓말을하고 있습니다 ...
두 번째로 wtf. 위의 댓글은 4일 전에 작성된 것입니다. 이제 내가 이미 수정한 발언으로 다시 돌아왔습니다. 제품의 새 버전을 게시했습니다. 이제 그녀는 사라졌습니다. 새 버전은 어디로 갔습니까? 당신은 그렇게 일할 수 없습니다 - 글쎄, 그것은 심각하지 않습니다 .. 중재자에게 새 댓글에서 더 이상 잃지 않기 위해 사라진 설명을 복제했습니다. 제품은 어떻습니까? 이메일로 보내? 댓글에 첨부? 아니면 다시 시도하고 며칠을 기다리시겠습니까?
https://habrahabr.ru/post/342180/ 에서 새로운 WebAssembly 기술에 대한 매우 흥미로운 개요
WebAssembly (WASM) — новый бинарный формат, позволяющий запускать код в браузере...
WebAssembly의 적용:
- 로딩 시간 단축
- 계산 속도를 높입니다.
- 기성품 C/C++ 코드 사용
MQL 코드를 컴파일할 수 있는 웹 서비스에 대한 중기 루머를 감안할 때,
WebAssembly를 기반으로 하는 브라우저에서 직접 맞춤형 어드바이저를 시작하는 프로젝트를 구현할 수 있는 근본적인 가능성에 대해 합리적인 질문이 제기됩니다.
로그를 배치하면 더 명확해질 것입니다. 그리고 전문가와 터미널.
터미널 탭
전문가 탭
오류 3 이후에는 실제로 닫히지 않습니다. 이해했습니다.
Expert #1이 청산 중이고 두 번째 전문가도 같은 시간에 같은 포지션 청산을 시도했습니다.
작업의 논리를 수정했고 이제 물론 오류가 없습니다.
BUT: 루프 내에서 OrderClose()에 전달된 동일한 매개변수를 사용하여 오류 번호를 #3에서 #4108로 변경합니다.
오류 3이 먼저 발생한 다음 4108이 발생하는 이유는 무엇입니까? - 이것이 남은 질문이다.
{타이밍을 보면 이론적으로 차단된 주문을 닫으려는 시도가 있으며(동시에 오류 139 자체가 발행되지 않음), 닫은 후(따라서 주문 잠금 해제), 오류 3.}
왜 터미널은 주문이 차단되었다는 특정 오류를 제공하지 않고 대신 매우 일반적인 오류 3을 제공합니까?
BUT: 루프 내에서 OrderClose()에 전달된 동일한 매개변수를 사용하여 오류 번호를 #3에서 #4108로 변경합니다.
오류 3이 먼저 발생한 다음 4108이 발생하는 이유는 무엇입니까? - 남은 질문입니다.
이것은 1 OrderSelect가 있던 코드의 버전입니다. 그런 다음 4108이 정당화됩니다.
3 - 다른 어드바이저가 포지션을 청산하는 순간, 4108 - 이미 청산된 포지션 을 청산하려고 할 때 .
이것은 1 OrderSelect가 있던 코드의 버전입니다. 그런 다음 4108이 정당화됩니다.
3 - 다른 어드바이저가 포지션을 청산하는 순간, 4108 - 이미 청산된 포지션 을 청산하려고 할 때 .
권리.
그러나 이미 마감 명령을 받은 주문을 마감하려고 할 때 오류 139가 발생하지 않는 이유는 무엇입니까?
결국 우리는 139번째 오류의 상황을 가지고 있습니다. 안 그래?
잘못된 오류 텍스트
권리.
그러나 이미 마감 주문을 보낸 주문을 마감하려고 할 때 오류 139가 발생하지 않는 이유는 무엇입니까?
결국 우리는 139번째 오류의 상황을 가지고 있습니다. 안 그래?
모르겠어. 하지만 버그라고 하기는 어렵다.
모르겠어. 하지만 버그라고 하기는 어렵다.
터미널 로그를 보면 오류 메시지 3은 위치가 닫힌 후 발행되며 서버의 잠금이 감지되어야 하는 순간이 아닙니다.
오류 메시지 139는 거의 0.5초 전에 발행되었을 수 있습니다. 이 모든 시간 동안 어드바이저는 주문을 종료한 후 오류 3이 발생하도록 "중단"합니다.
그런데 오류 3 Invalid Parameters는 터미널 로그에 있으며 4108은 출력으로 인한 것이며 전문가 탭에만 있습니다. 4108은 클라이언트 측 처리인 것 같습니다.
나는 단지 그것을 코드에 넣기 위해 논리를 알고/이해하고 싶고, 과학적 찌르기의 방법으로 더듬지 않기를 원한다..)
이 상황이 아니라면 어떤 다른 상황에서 오류 139가 발생합니까?
이 상황이 아니라면 어떤 다른 상황에서 오류 139가 발생합니까?
보류 중인 주문/SL/TP 를 트리거하거나 스탑아웃(서버에서도)으로 포지션을 청산하는 순간.
4108에서는 묻지 않겠습니다.
그러나 반복합니다. 이해의 요점을 이해하지 못합니다. 두 명의 고문이 동시에 마감 명령을 내리면 그 중 한 명이 확실히 오류가 발생합니다(차이점은 무엇입니까?).
처리는 매우 간단합니다. OrderSelect를 수행하고 OrderCloseTime을 확인합니다.
뭐?
중재자로부터:
불행히도 기술적인 결함으로 인해 설명 텍스트가 제거되었습니다. 다시 작성하여 검토를 위해 제품을 제출하십시오.
불편에 대해 사과드립니다.
이것은 단지 불편함이 아니라 뇌를 여러 번 솟구쳐 오르는 것입니다(매회 10일의 기다림). 그리고 그것을 삭제하고 말하기: 오, 죄송합니다, 우리가 지웠고, 스레드처럼 스스로 복원한 다음 기다리십시오. 또 10일. - 그리고 당신이 이것을 하려고 할 때, 사이트는 여전히 충돌합니다 ..
이게 뭔 개소리야? 이것을 잃기 위해서는 어떤 종류의 실패가 일어나야 합니까? 복원할 역사가 없다고요? 설명 메시지가 며칠 동안 보관되었습니다.
이번에는 왜 진행자 메시지가 안 뜨나요?
데이터 지우기와 관련된 이 문제가 한 번 발생하지 않는다는 것을 확실히 알고 있습니다. 이 실패라고 주장하는 것은 사실 실패가 아닙니다(마감일 연기). 왜냐하면 이것은 저에게만 일어나는 것이 아니라 동시에 일어나지 않기 때문입니다(문제는 6개월 이상 존재했습니다)! - 의견을 부탁합니다.
그리고 고쳐주세요. 할 수 없다면 저를 고용하세요. 일주일 안에 2000유로에 하겠습니다.
어떻게 .. 대실패 스트레이트 ..
일반적으로 지워진 것이 복원됩니까? 사회자와의 통신이 절반을 잃었습니다. 포럼에서 사라진 메시지. 그리고 사회자는 비어있는 메시지도 삭제했습니다.
왜 체제가 없습니다 - 그러한 작업이 수행되고 있습니까? - 또는 오히려 순서는 다음과 같습니다. 먼저 모드를 켜고 작업을 수행한 다음 모드를 복원합니다.
올리자마자 사이트가 다운되더라구요. 나는 업데이트하기로 결정했습니다-사이트가 거짓말을하고 있습니다 ...
당신은 그렇게 일할 수 없습니다 - 글쎄, 그것은 심각하지 않습니다 ..
중재자에게 새 댓글에서 더 이상 잃지 않기 위해 사라진 설명을 복제했습니다.
제품은 어떻습니까? 이메일로 보내? 댓글에 첨부? 아니면 다시 시도하고 며칠을 기다리시겠습니까?