요새. 실행 질문 - 페이지 58 1...515253545556575859606162636465...156 새 코멘트 Mikhail Filimonov 2015.10.22 14:45 #571 Andrey Khatimlianskii : 바로, 네트워크 지연입니다. 그리고 주문을 오랫동안 보내거나(또는 확인을 받았을 때) 이벤트가 손실됩니다. 아니, 옳지 않아! 1. 이것은 "네트워크" 지연이 아니라 MT5 서버( 중개자의 하드웨어 )의 지연입니다. 2. TradeTransaction이 항상 손실되는 것은 아닙니다(가끔). 위에서 볼 수 있듯이 지연은 409ms이고 이벤트는 손실되지 않았습니다. 그렇기 때문에 지연의 원인은 네트워크가 아니라 MT5 서버(브로커의 하드웨어)라고 주장합니다 . CheckOrders() 함수의 서버 응답 시간 초과는 700~1200ms입니다( 타이머의 어느 시점(500ms 기간)에 명령이 전송되었는지, 이는 일반 모드(7-9ms)에서 100배 더 긴(내 구성에서) 18ms의 지연으로 이벤트가 손실되었지만 409ms의 지연으로 이벤트가 손실되지 않았다는 사실은 이것이 MT5 서버의 "캔트"이고 다른 것은 아니라고 말할 수 있습니다. 원인. 그리고 한 가지 더... 제 친구는 저희 집에 살고 있는데 집에 있는 같은 라우터를 통해 제 제공자를 통해 제 로봇과 두 개의 터미널 에서 거래를 하고 있습니다. 어떤 이유에서인지 그는 이때 지연이 없었습니다! 2015.10 . 22 14 : 14 : 05.041 Trades 'xxxxx' : modify order # 22486145 buy limit 2.00 ED- 6.16 at 1.1326 sl: 0.0000 tp: 0.0000 -> 1.1332 , sl: 0.0000 tp: 0.0000 2015.10 . 22 14 : 14 : 05.049 Trades 'xxxxx' : modify order # 22486145 buy limit 2.00 ED- 6.16 at 1.1326 sl: 0.0000 tp: 0.0000 -> 1.1332 , sl: 0.0000 tp: 0.0000 placed for execution in 8 ms 2015.10 . 22 14 : 14 : 38.389 Trades 'xxxxx' : cancel order # 22486314 sell limit 2.00 Eu- 12.16 at 82867 2015.10 . 22 14 : 14 : 38.397 Trades 'xxxxx' : cancel order # 22486314 sell limit 2.00 Eu- 12.16 at 82867 placed for execution in 8 ms 디지털 필터를 기반으로 한 어떤 경우에 표시기에 로봇 흥미롭고 유머러스한 Andrey Khatimlianskii 2015.10.22 20:16 #572 마이클, 게시물을 편집하지 마십시오. 눈으로 업데이트를 찾을 필요가 없도록 새 항목을 추가하는 것이 좋습니다. Mikhail Filimonov 2015.10.22 21:04 #573 Andrey Khatimlianskii : 마이클, 게시물을 편집하지 마십시오. 눈으로 업데이트를 찾을 필요가 없도록 새 항목을 추가하는 것이 좋습니다. 오타가 많아서 수정했습니다... Yury Kirillov 2015.10.25 09:19 #574 akuloff : 치고? 스크립트에서 삭제하기 전에 주문별로 OrderSelect를 하고, 선택하면 히스토리에 없고 활성 상태인 경우 오류는 무엇입니까? 하나의 주문을 삭제한 후 나머지 미처리 주문의 수는 1만큼 이동합니다. Mikhail Filimonov 2015.10.25 09:38 #575 Yury Kirillov : 하나의 주문을 삭제한 후 나머지 미처리 주문의 수는 1만큼 이동합니다. 우리가 그것을 알아 낸지 오래되었습니다 .... ALIV 2015.10.27 08:48 #576 Mikhail, 지연이 있는 또 다른 "시트"가 있습니다. 그렇지 않으면 뭔가 지루해집니다. :))))) 디스커버리 언제 가세요? :)))))))) Yury Kirillov 2015.10.27 13:56 #577 여기 전문가들에게 질문이 있습니다. 위치를 재설정하는 방법? (FORTS, Otkritie-Broker, Real) 다음 코드가 있습니다. #property strict long gTicks= 0 ; int Step= 0 ; //===== void OnTick () { gTicks++; PositionSelect ( _Symbol ); //----- Блок 1 { if ((gTicks> 1000 )&&(Step== 0 )) { Print ( "OPEN>> *** VOLUME=" , PositionGetDouble ( POSITION_VOLUME ), " *** ID=" , PositionGetInteger ( POSITION_IDENTIFIER ), " *** TYPE=" , EnumToString (( ENUM_POSITION_TYPE ) PositionGetInteger ( POSITION_TYPE )), " *** OrdersTotal()=" , OrdersTotal ()); MqlTradeRequest request={ 0 }; //Обнулим записи запроса MqlTradeResult result={ 0 }; //Обнулим записи ответа request.action= TRADE_ACTION_PENDING ; //Отложенный ордер request.symbol= _Symbol ; //Инструмент request.price= SymbolInfoDouble ( _Symbol , SYMBOL_BID ); //Прайс (цена) исполнения ордера request.type= ORDER_TYPE_SELL_STOP ; //Тип ордера request.type_filling= ORDER_FILLING_RETURN ; //Разрешить исполнять частями (ORDER_FILLING_RETURN) request.type_time= ORDER_TIME_SPECIFIED_DAY ; //В очереди до экспирации request.expiration= ( datetime ) SymbolInfoInteger ( _Symbol , SYMBOL_EXPIRATION_TIME ); //Время истечения фьючерсного контракта request.volume= 1 ; //Объем Print ( "OPEN OrderSend=" , OrderSend (request,result)); Print ( "OPEN Retcode=" ,result.retcode); Print ( "OPEN Order=" ,result.order); Print ( "OPEN Deal=" ,result.deal); Print ( "OPEN OrdersTotal()=" , OrdersTotal ()); Print ( "OPEN Volume=" , PositionGetDouble ( POSITION_VOLUME )); Step= 1 ; return ; }} //if((gTicks>1000)&&(Step==0)) //----- Блок 2 { if ((gTicks> 2000 )&&(Step== 1 )) { Print ( "CLOSE>> *** VOLUME=" , PositionGetDouble ( POSITION_VOLUME ), " *** ID=" , PositionGetInteger ( POSITION_IDENTIFIER ), " *** TYPE=" , EnumToString (( ENUM_POSITION_TYPE ) PositionGetInteger ( POSITION_TYPE )), " *** OrdersTotal()=" , OrdersTotal ()); MqlTradeRequest request={ 0 }; //Обнулим записи запроса MqlTradeResult result={ 0 }; //Обнулим записи ответа request.action= TRADE_ACTION_DEAL ; //Отложенный ордер request.symbol= _Symbol ; //Инструмент request.price= SymbolInfoDouble ( _Symbol , SYMBOL_ASK ); //Прайс (цена) исполнения ордера request.type= ORDER_TYPE_BUY ; //тип ордера request.type_filling= ORDER_FILLING_FOK ; //Исполнять только в полном объёме request.type_time= ORDER_TIME_DAY ; //В очереди до снятия request.volume= 1 ; //Объем Правильно Print ( "CLOSE OrderSend=" , OrderSend (request,result)); Print ( "CLOSE Retcode=" ,result.retcode); Print ( "CLOSE Order=" ,result.order); Print ( "CLOSE Deal=" ,result.deal); Print ( "CLOSE OrdersTotal()=" , OrdersTotal ()); Print ( "CLOSE Volume=" , PositionGetDouble ( POSITION_VOLUME )); Step= 2 ; return ; }} //if((gTicks>2000)&&(Step==1)) //----- Блок 3 { if ((gTicks> 3000 )&&(Step== 2 )) { Print ( "INFO>> *** VOLUME=" , PositionGetDouble ( POSITION_VOLUME ), " *** ID=" , PositionGetInteger ( POSITION_IDENTIFIER ), " *** TYPE=" , EnumToString (( ENUM_POSITION_TYPE ) PositionGetInteger ( POSITION_TYPE )), " *** OrdersTotal()=" , OrdersTotal ()); Step= 3 ; return ; }} //if((gTicks>3000)&&(Step==2)) { if ((gTicks> 4000 )&&(Step== 3 )) { ExpertRemove (); }} //if((gTicks>4000)&&(Step==3)) } //OnTick() 즉 포지션을 열다 주문, 역순으로 닫고 결과적으로 위치 볼륨을 확인하십시오. 예상되는 0(영), 1(일)이 있습니다. 아래의 로그(하단에서 시작). 2015.10 . 27 16 : 28 : 11.476 2015.10 . 26 10 : 05 : 08 ExpertRemove () function called 2015.10 . 27 16 : 28 : 11.465 2015.10 . 26 10 : 03 : 14 INFO>> *** VOLUME= 1.0 *** ID= 2 *** TYPE= POSITION_TYPE_SELL *** OrdersTotal ()= 0 2015.10 . 27 16 : 28 : 11.450 2015.10 . 26 10 : 01 : 47 CLOSE Volume= 1.0 2015.10 . 27 16 : 28 : 11.450 2015.10 . 26 10 : 01 : 47 CLOSE OrdersTotal ()= 0 2015.10 . 27 16 : 28 : 11.450 2015.10 . 26 10 : 01 : 47 CLOSE Deal= 3 2015.10 . 27 16 : 28 : 11.450 2015.10 . 26 10 : 01 : 47 CLOSE Order= 3 2015.10 . 27 16 : 28 : 11.450 2015.10 . 26 10 : 01 : 47 CLOSE Retcode= 10009 2015.10 . 27 16 : 28 : 11.450 2015.10 . 26 10 : 01 : 47 CLOSE OrderSend = true 2015.10 . 27 16 : 28 : 11.449 2015.10 . 26 10 : 01 : 47 order performed buy 1.00 at 9249 [ # 3 buy 1.00 SBRF- 12.15 at 9249 ] 2015.10 . 27 16 : 28 : 11.449 2015.10 . 26 10 : 01 : 47 deal performed [ # 3 buy 1.00 SBRF- 12.15 at 9249 ] 2015.10 . 27 16 : 28 : 11.449 2015.10 . 26 10 : 01 : 47 deal # 3 buy 1.00 SBRF- 12.15 at 9249 done (based on order # 3 ) 2015.10 . 27 16 : 28 : 11.449 2015.10 . 26 10 : 01 : 47 exchange buy 1.00 SBRF- 12.15 at 9249 ( 9242 / 9249 / 9242 ) 2015.10 . 27 16 : 28 : 11.449 2015.10 . 26 10 : 01 : 47 CLOSE>> *** VOLUME= 1.0 *** ID= 2 *** TYPE= POSITION_TYPE_SELL *** OrdersTotal ()= 0 2015.10 . 27 16 : 28 : 11.422 2015.10 . 26 10 : 00 : 57 order performed sell 1.00 at 9205 [ # 2 sell stop 1.00 SBRF- 12.15 at 9205 ] 2015.10 . 27 16 : 28 : 11.422 2015.10 . 26 10 : 00 : 57 deal performed [ # 2 sell 1.00 SBRF- 12.15 at 9205 ] 2015.10 . 27 16 : 28 : 11.422 2015.10 . 26 10 : 00 : 57 deal # 2 sell 1.00 SBRF- 12.15 at 9205 done (based on order # 2 ) 2015.10 . 27 16 : 28 : 11.422 2015.10 . 26 10 : 00 : 57 order [ # 2 sell stop 1.00 SBRF- 12.15 at 9205 ] triggered 2015.10 . 27 16 : 28 : 11.422 2015.10 . 26 10 : 00 : 57 OPEN Volume= 0.0 2015.10 . 27 16 : 28 : 11.422 2015.10 . 26 10 : 00 : 57 OPEN OrdersTotal ()= 1 2015.10 . 27 16 : 28 : 11.422 2015.10 . 26 10 : 00 : 57 OPEN Deal= 0 2015.10 . 27 16 : 28 : 11.422 2015.10 . 26 10 : 00 : 57 OPEN Order= 2 2015.10 . 27 16 : 28 : 11.422 2015.10 . 26 10 : 00 : 57 OPEN Retcode= 10009 2015.10 . 27 16 : 28 : 11.422 2015.10 . 26 10 : 00 : 57 OPEN OrderSend = true 2015.10 . 27 16 : 28 : 11.422 2015.10 . 26 10 : 00 : 57 sell stop 1.00 SBRF- 12.15 at 9205 ( 9205 / 9227 / 9205 ) 2015.10 . 27 16 : 28 : 11.422 2015.10 . 26 10 : 00 : 57 OPEN>> *** VOLUME= 0.0 *** ID= 0 *** TYPE= POSITION_TYPE_BUY *** OrdersTotal ()= 0 2015.10 . 27 16 : 28 : 11.344 SBRF- 12.15 ,M1: testing of Experts\Projects\CoinAge5\Helper_v01\mq5\Tst\TST006_Open_Close_Positions_001.ex5 from 2015.10 . 26 00 : 00 to 2015.10 . 27 00 : 00 started 이유는 무엇입니까? Vasiliy Sokolov 2015.10.27 14:13 #578 Yury Kirillov : 여기 전문가들에게 질문이 있습니다. 위치를 재설정하는 방법? (FORTS, Otkritie-Broker, Real) 다음 코드가 있습니다. 즉 포지션을 열다 주문, 역순으로 닫고 결과적으로 위치 볼륨을 확인하십시오. 예상되는 0(영), 1(일)이 있습니다. 아래의 로그(하단에서 시작). 이유는 무엇입니까? 쉽지 않음: #include <Trade\Trade.mqh> CTrade Trade; void OnTick () { Trade.PositionClose( Symbol ()); } ? Aleksey Lebedev 2015.10.27 14:14 #579 Yury Kirillov : 이유는 무엇입니까? Pre-PositionSelect가 없는 PositionGet 에서. Yury Kirillov 2015.10.27 14:48 #580 Vasiliy Sokolov : 쉽지 않음: ? 아니, 더 쉽지 않습니다. 이것이 내가 내 코드를 다루는 방법이며 귀하의 버전에서는 내가 작성하지 않은 라이브러리를 분석해야 합니다. 이 라이브러리를 살펴보면 나와 거의 동일한 작업 세트를 찾을 수 있습니다. 따라서 먼저 FORTS에 주문하는 메커니즘을 이해하고 그 다음에야 표준 라이브러리를 사용하고 싶습니다. 1...515253545556575859606162636465...156 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
바로, 네트워크 지연입니다. 그리고 주문을 오랫동안 보내거나(또는 확인을 받았을 때) 이벤트가 손실됩니다.
아니, 옳지 않아!
1. 이것은 "네트워크" 지연이 아니라 MT5 서버( 중개자의 하드웨어 )의 지연입니다.
2. TradeTransaction이 항상 손실되는 것은 아닙니다(가끔). 위에서 볼 수 있듯이 지연은 409ms이고 이벤트는 손실되지 않았습니다.
그렇기 때문에 지연의 원인은 네트워크가 아니라 MT5 서버(브로커의 하드웨어)라고 주장합니다 .
CheckOrders() 함수의 서버 응답 시간 초과는 700~1200ms입니다(
타이머의 어느 시점(500ms 기간)에 명령이 전송되었는지, 이는 일반 모드(7-9ms)에서 100배 더 긴(내 구성에서)
18ms의 지연으로 이벤트가 손실되었지만 409ms의 지연으로 이벤트가 손실되지 않았다는 사실은 이것이 MT5 서버의 "캔트"이고 다른 것은 아니라고 말할 수 있습니다.
원인.
그리고 한 가지 더... 제 친구는 저희 집에 살고 있는데 집에 있는 같은 라우터를 통해 제 제공자를 통해 제 로봇과 두 개의 터미널 에서 거래를 하고 있습니다. 어떤 이유에서인지 그는
이때 지연이 없었습니다!
마이클, 게시물을 편집하지 마십시오. 눈으로 업데이트를 찾을 필요가 없도록 새 항목을 추가하는 것이 좋습니다.
치고?
스크립트에서 삭제하기 전에 주문별로 OrderSelect를 하고, 선택하면 히스토리에 없고 활성 상태인 경우 오류는 무엇입니까?
하나의 주문을 삭제한 후 나머지 미처리 주문의 수는 1만큼 이동합니다.
Mikhail, 지연이 있는 또 다른 "시트"가 있습니다. 그렇지 않으면 뭔가 지루해집니다. :)))))
디스커버리 언제 가세요? :))))))))
다음 코드가 있습니다.
즉 포지션을 열다 주문, 역순으로 닫고 결과적으로 위치 볼륨을 확인하십시오.
예상되는 0(영), 1(일)이 있습니다. 아래의 로그(하단에서 시작).
이유는 무엇입니까?
여기 전문가들에게 질문이 있습니다. 위치를 재설정하는 방법? (FORTS, Otkritie-Broker, Real)
다음 코드가 있습니다.
즉 포지션을 열다 주문, 역순으로 닫고 결과적으로 위치 볼륨을 확인하십시오.
예상되는 0(영), 1(일)이 있습니다. 아래의 로그(하단에서 시작).
이유는 무엇입니까?
쉽지 않음:
?
이유는 무엇입니까?
쉽지 않음:
?
아니, 더 쉽지 않습니다. 이것이 내가 내 코드를 다루는 방법이며 귀하의 버전에서는 내가 작성하지 않은 라이브러리를 분석해야 합니다. 이 라이브러리를 살펴보면 나와 거의 동일한 작업 세트를 찾을 수 있습니다. 따라서 먼저 FORTS에 주문하는 메커니즘을 이해하고 그 다음에야 표준 라이브러리를 사용하고 싶습니다.