2017.02.15 14:47:19.185 script Test2 (AUDUSD,H1) loaded successfully 2017.02.15 14:47:19.235 '5122740': buy limit 1.00 DIG-20170330 at 29528 2017.02.15 14:47:19.295 '5122740': accepted buy limit 1.00 DIG-20170330 at 29528 2017.02.15 14:47:19.295 '5122740': order #134117077 buy limit 1.00 / 1.00 DIG-20170330 at market done in 60.996 ms (0.341 ms on server) 2017.02.15 14:47:19.295 '5122740': failed buy limit 1.00 DIG-20170330 at 29038 [Invalid price] 2017.02.15 14:47:19.297 script Test2 (AUDUSD,H1) removed 2017.02.15 14:47:46.586 '5122740': deal #117726626 buy 1.00 DIG-20170330 at 29528 done (based on order #134117077)
설명
먼저 BuyLimit을 가장 낮은 가격인 29528로 설정하려고 했습니다. 이 가격은 Ask 가격(29038)보다 훨씬 높습니다. 99.99%의 경우 BuyLimit이 Ask보다 높게 설정되지 않았습니다. 그러나 이것은 금지되지 않았으므로 명령이 내려졌습니다. 그리고 (보라색) BuyLimit가 포지션이 되기까지 거의 30분이 지났습니다. 즉시 발생했어야 하지만 . 그러나 더 나쁜 것은 BuyLimit이 Ask가 아니라 가격으로 채워졌다는 것 입니다. 저것들. 지정가 주문은 실행 시 음의 미끄러짐을 얻었습니다. 이는 단지 실수입니다!
두 번째 OrderSend는 Ask보다 높지 않은 정상적인 방법으로 BuyLimit를 설정하려는 시도였습니다. 그리고 물론, 우리는 실패했습니다(빨간색). SYMBOL_SESSION_PRICE_LIMIT_MIN이 Ask보다 커서는 안 되기 때문입니다.
차트에 MQL 프로그램을 로드할 때 이러한 오류가 발생하면 어떻게 해야 합니까?
서비스 데스크: #1673705
한 기호의 모든 표시기는 한 스트림에서 차례로 차례로 계산됩니다. 일부 표시기가 느려지면 전체 기호 처리 흐름이 느려집니다.
Metaquotes-Demo에서 지정가 주문은 부정확한 미끄러짐을 가질 수 있습니다.
Ask... 위에 BuyLimit을 수동으로 설정합니다.
[가격 없음] 갑자기 발생한 오류
어떻게 가격이 없는데 로그에도 나와있나요?!
요구
2017.02 . 14 23 : 18 : 41.442 Request.magic = 0
2017.02 . 14 23 : 18 : 41.442 Request.order = 0
2017.02 . 14 23 : 18 : 41.442 Request.symbol = EURPLN
2017.02 . 14 23 : 18 : 41.442 Request.volume = 1.0
2017.02 . 14 23 : 18 : 41.442 Request.price = 4.30632
2017.02 . 14 23 : 18 : 41.442 Request.stoplimit = 0.0
2017.02 . 14 23 : 18 : 41.442 Request.sl = 0.0
2017.02 . 14 23 : 18 : 41.442 Request.tp = 0.0
2017.02 . 14 23 : 18 : 41.442 Request.deviation = 100
2017.02 . 14 23 : 18 : 41.442 Request.type = ORDER_TYPE_BUY ( 0 )
2017.02 . 14 23 : 18 : 41.442 Request.type_filling = ORDER_FILLING_RETURN ( 2 )
2017.02 . 14 23 : 18 : 41.442 Request.type_time = ORDER_TIME_GTC ( 0 )
2017.02 . 14 23 : 18 : 41.442 Request.expiration = 1970.01 . 01 00 : 00 : 00
2017.02 . 14 23 : 18 : 41.442 Request.comment = My Position
2017.02 . 14 23 : 18 : 41.442 Request.position = 0
2017.02 . 14 23 : 18 : 41.442 Request.position_by = 0
2017.02 . 14 23 : 18 : 41.442 Result.retcode = 10021
2017.02 . 14 23 : 18 : 41.442 Result.deal = 0
2017.02 . 14 23 : 18 : 41.442 Result.order = 0
2017.02 . 14 23 : 18 : 41.442 Result.volume = 0.0
2017.02 . 14 23 : 18 : 41.442 Result.price = 0.0
2017.02 . 14 23 : 18 : 41.442 Result.bid = 0.0
2017.02 . 14 23 : 18 : 41.442 Result.ask = 0.0
2017.02 . 14 23 : 18 : 41.442 Result.comment = No prices 0.028 + 0.000 ms
2017.02 . 14 23 : 18 : 41.442 Result.request_id = 0
2017.02 . 14 23 : 18 : 41.442 Result.retcode_external = 0
2017.02 . 14 23 : 18 : 41.442
2017.02 . 14 23 : 18 : 41.442 SymbolInfoDouble (Symb,:: SYMBOL_BID ) = 4.30151
2017.02 . 14 23 : 18 : 41.442 SymbolInfoDouble (Symb,:: SYMBOL_ASK ) = 4.30632
Metaquots 서버에서 동일한 오류가 발생했습니다. 5번의 시도 후에도 여전히 주문이 접수되었습니다.
Metaquotes-Demo에서 지정가 주문은 부정확한 미끄러짐을 가질 수 있습니다.
Ask... 위에서 BuyLimit을 수동으로 설정하십시오.
#define TOSTRING2(A) #A + " = " + EnumToString (A) + " (" + ( string )(A) + ")\n"
string ToString( const MqlTradeRequest &Request )
{
return (TOSTRING2(Request.action) + TOSTRING(Request.magic) + TOSTRING(Request.order) +
TOSTRING(Request.symbol) + TOSTRING(Request.volume) + TOSTRING(Request.price) +
TOSTRING(Request.stoplimit) + TOSTRING(Request.sl) + TOSTRING(Request.tp) +
TOSTRING(Request.deviation) + TOSTRING2(Request.type) + TOSTRING2(Request.type_filling) +
TOSTRING2(Request.type_time) + TOSTRING(Request.expiration) + TOSTRING(Request.comment) +
TOSTRING(Request.position) + TOSTRING(Request.position_by));
}
string ToString( const MqlTradeResult &Result )
{
return (TOSTRING(Result.retcode) + TOSTRING(Result.deal) + TOSTRING(Result.order) +
TOSTRING(Result.volume) + TOSTRING(Result.price) + TOSTRING(Result.bid) +
TOSTRING(Result.ask) + TOSTRING(Result.comment) + TOSTRING(Result.request_id) +
TOSTRING(Result.retcode_external));
}
#define Bid (:: SymbolInfoDouble (Symb, :: SYMBOL_BID ))
#define Ask (:: SymbolInfoDouble (Symb, :: SYMBOL_ASK ))
#include <MT4Orders.mqh>
#define PRINT(A) A; \
Print ( #A + "\n" + ToString(MT4ORDERS::LastTradeRequest) + ToString(MT4ORDERS::LastTradeResult)); \
Print (TOSTRING( Bid )); \
Print (TOSTRING( Ask )); \
Print (TOSTRING( SymbolInfoDouble (Symb, SYMBOL_SESSION_PRICE_LIMIT_MIN )));
void OpenBuyLimits( const string Symb )
{
PRINT( OrderSend (Symb, OP_BUYLIMIT , 1 , SymbolInfoDouble (Symb, SYMBOL_SESSION_PRICE_LIMIT_MIN ), 100 , 0 , 0 ) )
PRINT( OrderSend (Symb, OP_BUYLIMIT , 1 , Ask , 100 , 0 , 0 ) )
}
void OnStart ()
{
OpenBuyLimits( "DIG-20170330" );
}
이러한 데이터를 수신/제공 한 OrderSend
2017.02 . 15 14 : 47 : 19.295 Request.action = TRADE_ACTION_PENDING ( 5 )
2017.02 . 15 14 : 47 : 19.295 Request.magic = 0
2017.02 . 15 14 : 47 : 19.295 Request.order = 0
2017.02 . 15 14 : 47 : 19.295 Request.symbol = DIG- 20170330
2017.02 . 15 14 : 47 : 19.295 Request.volume = 1.0
2017.02 . 15 14 : 47 : 19.295 Request.price = 29528.0
2017.02 . 15 14 : 47 : 19.295 Request.stoplimit = 0.0
2017.02 . 15 14 : 47 : 19.295 Request.sl = 0.0
2017.02 . 15 14 : 47 : 19.295 Request.tp = 0.0
2017.02 . 15 14 : 47 : 19.295 Request.deviation = 100
2017.02 . 15 14 : 47 : 19.295 Request.type = ORDER_TYPE_BUY_LIMIT ( 2 )
2017.02 . 15 14 : 47 : 19.295 Request.type_filling = ORDER_FILLING_RETURN ( 2 )
2017.02 . 15 14 : 47 : 19.295 Request.type_time = ORDER_TIME_GTC ( 0 )
2017.02 . 15 14 : 47 : 19.295 Request.expiration = 1970.01 . 01 00 : 00 : 00
2017.02 . 15 14 : 47 : 19.295 Request.comment =
2017.02 . 15 14 : 47 : 19.295 Request.position = 0
2017.02 . 15 14 : 47 : 19.295 Request.position_by = 0
2017.02 . 15 14 : 47 : 19.295 Result.retcode = 10009
2017.02 . 15 14 : 47 : 19.295 Result.deal = 0
2017.02 . 15 14 : 47 : 19.295 Result.order = 134117077
2017.02 . 15 14 : 47 : 19.295 Result.volume = 1.0
2017.02 . 15 14 : 47 : 19.295 Result.price = 0.0
2017.02 . 15 14 : 47 : 19.295 Result.bid = 0.0
2017.02 . 15 14 : 47 : 19.295 Result.ask = 0.0
2017.02 . 15 14 : 47 : 19.295 Result.comment = Request executed 61.066 + 0.004 ms
2017.02 . 15 14 : 47 : 19.295 Result.request_id = 9
2017.02 . 15 14 : 47 : 19.295 Result.retcode_external = 0
2017.02 . 15 14 : 47 : 19.295
2017.02 . 15 14 : 47 : 19.295 Bid = 29031.0
2017.02 . 15 14 : 47 : 19.295
2017.02 . 15 14 : 47 : 19.295 Ask = 29038.0
2017.02 . 15 14 : 47 : 19.295
2017.02 . 15 14 : 47 : 19.295 SymbolInfoDouble (Symb, SYMBOL_SESSION_PRICE_LIMIT_MIN ) = 29528.0
2017.02 . 15 14 : 47 : 19.295
2017.02 . 15 14 : 47 : 19.295 OrderSend (Symb, OP_BUYLIMIT , 1 , Ask , 100 , 0 , 0 )
2017.02 . 15 14 : 47 : 19.295 Request.action = TRADE_ACTION_PENDING ( 5 )
2017.02 . 15 14 : 47 : 19.295 Request.magic = 0
2017.02 . 15 14 : 47 : 19.295 Request.order = 0
2017.02 . 15 14 : 47 : 19.295 Request.symbol = DIG- 20170330
2017.02 . 15 14 : 47 : 19.295 Request.volume = 1.0
2017.02 . 15 14 : 47 : 19.295 Request.price = 29038.0
2017.02 . 15 14 : 47 : 19.295 Request.stoplimit = 0.0
2017.02 . 15 14 : 47 : 19.295 Request.sl = 0.0
2017.02 . 15 14 : 47 : 19.295 Request.tp = 0.0
2017.02 . 15 14 : 47 : 19.295 Request.deviation = 100
2017.02 . 15 14 : 47 : 19.295 Request.type = ORDER_TYPE_BUY_LIMIT ( 2 )
2017.02 . 15 14 : 47 : 19.295 Request.type_filling = ORDER_FILLING_RETURN ( 2 )
2017.02 . 15 14 : 47 : 19.295 Request.type_time = ORDER_TIME_GTC ( 0 )
2017.02 . 15 14 : 47 : 19.295 Request.expiration = 1970.01 . 01 00 : 00 : 00
2017.02 . 15 14 : 47 : 19.295 Request.comment =
2017.02 . 15 14 : 47 : 19.295 Request.position = 0
2017.02 . 15 14 : 47 : 19.295 Request.position_by = 0
2017.02 . 15 14 : 47 : 19.297 Result.retcode = 10015
2017.02 . 15 14 : 47 : 19.297 Result.deal = 0
2017.02 . 15 14 : 47 : 19.297 Result.order = 0
2017.02 . 15 14 : 47 : 19.297 Result.volume = 0.0
2017.02 . 15 14 : 47 : 19.297 Result.price = 0.0
2017.02 . 15 14 : 47 : 19.297 Result.bid = 0.0
2017.02 . 15 14 : 47 : 19.297 Result.ask = 0.0
2017.02 . 15 14 : 47 : 19.297 Result.comment = Invalid price 0.015 + 0.000 ms
2017.02 . 15 14 : 47 : 19.297 Result.request_id = 0
2017.02 . 15 14 : 47 : 19.297 Result.retcode_external = 0
2017.02 . 15 14 : 47 : 19.297
2017.02 . 15 14 : 47 : 19.297 Bid = 29031.0
2017.02 . 15 14 : 47 : 19.297
2017.02 . 15 14 : 47 : 19.297 Ask = 29038.0
2017.02 . 15 14 : 47 : 19.297
2017.02 . 15 14 : 47 : 19.297 SymbolInfoDouble (Symb, SYMBOL_SESSION_PRICE_LIMIT_MIN ) = 29528.0
통나무
2017.02.15 14:47:19.235 '5122740': buy limit 1.00 DIG-20170330 at 29528
2017.02.15 14:47:19.295 '5122740': accepted buy limit 1.00 DIG-20170330 at 29528
2017.02.15 14:47:19.295 '5122740': order #134117077 buy limit 1.00 / 1.00 DIG-20170330 at market done in 60.996 ms (0.341 ms on server)
2017.02.15 14:47:19.295 '5122740': failed buy limit 1.00 DIG-20170330 at 29038 [Invalid price]
2017.02.15 14:47:19.297 script Test2 (AUDUSD,H1) removed
2017.02.15 14:47:46.586 '5122740': deal #117726626 buy 1.00 DIG-20170330 at 29528 done (based on order #134117077)
설명
먼저 BuyLimit을 가장 낮은 가격인 29528로 설정하려고 했습니다. 이 가격은 Ask 가격(29038)보다 훨씬 높습니다. 99.99%의 경우 BuyLimit이 Ask보다 높게 설정되지 않았습니다. 그러나 이것은 금지되지 않았으므로 명령이 내려졌습니다. 그리고 (보라색) BuyLimit가 포지션이 되기까지 거의 30분이 지났습니다. 즉시 발생했어야 하지만 . 그러나 더 나쁜 것은 BuyLimit이 Ask가 아니라 가격으로 채워졌다는 것 입니다. 저것들. 지정가 주문은 실행 시 음의 미끄러짐을 얻었습니다. 이는 단지 실수입니다!
두 번째 OrderSend는 Ask보다 높지 않은 정상적인 방법으로 BuyLimit를 설정하려는 시도였습니다. 그리고 물론, 우리는 실패했습니다(빨간색). SYMBOL_SESSION_PRICE_LIMIT_MIN이 Ask보다 커서는 안 되기 때문입니다.
로그를 게시합니다. SD 애플리케이션에 복사하겠습니다.
2017.02 . 15 15 : 12 : 09.979 Exp - v7 (EURCHF,M1) Result ERROR= 10021 symbol EURUSD volume 1.0 action 1 tp 0.0 sl 0.0 type 0 price 1.05523 There are no quotes to process the request
2017.02 . 15 15 : 12 : 10.980 Exp - v7 (EURCHF,M1) OPEN DEAL sy=EURUSD op= 0 ll= 1.0 sl= 0 tp= 0 coomment= 134120593 mn= 9998745 SYMBOL_FILLING_MODE = 1 SYMBOL_TRADE_EXEMODE = 1 SYMBOL_EXPIRATION_MODE = 15 SYMBOL_TRADE_MODE = 4 SYMBOL_TRADE_STOPS_LEVEL = 0 SYMBOL_TRADE_FREEZE_LEVEL = 0 SYMBOL_ORDER_MODE = 63 SYMBOL_START_TIME = 0 SYMBOL_EXPIRATION_TIME = 0 SYMBOL_SPREAD = 10 SYMBOL_SESSION_DEALS = 0
2017.02 . 15 15 : 12 : 11.102 Exp - v7 (EURCHF,M1) Result = 10009 symbol EURUSD volume 1.0 action 1 tp 0.0 sl 0.0 type 0 price 1.05526 Request completed
지금 나에게 일어난 일에서 거래를 여는 코드는 변경되지 않았습니다.
멋진 것
시장 개요 - 모든 기호 표시를 클릭합니다. 잡지에 쏟아지는
MetaQuotes 데모
지금 나에게 일어난 일에서 거래를 여는 코드는 변경되지 않았습니다.
"전문가"가 아닌 "저널" 탭의 로그가 필요합니다.
잠깐, 거기에 메시지가 있었어 2017.02.15 15:13:32.414 기호 1000개 이하의 기호를 선택할 수 있습니다.
추구
2017.02.15 15:15:25.610 Trades '5246495': accepted instant buy 1.00 EURUSD at 1.05575
2017.02.15 15:15:25.610 Trades '5246495': deal #117730392 buy 1.00 EURUSD at 1.05575 done (based on order #134121023)
2017.02.15 15:15:25.611 Trades '5246495': order #134121023 buy 1.00 / 1.00 EURUSD at 1.05575 done in 94.543 ms
2017.02.15 15:15:25.674 Trades '5246495': failed instant buy 1.00 EURUSD at 1.05574 (deviation: 14) [No prices]
2017.02.15 15:15:26.687 Trades '5246495': failed instant buy 1.00 EURUSD at 1.05574 (deviation: 14) [No prices]
2017.02.15 15:15:27.701 Trades '5246495': failed instant buy 1.00 EURUSD at 1.05574 (deviation: 14) [No prices]
2017.02.15 15:15:28.713 Trades '5246495': failed instant buy 1.00 EURUSD at 1.05578 (deviation: 16) [No prices]
2017.02.15 15:15:29.728 Trades '5246495': instant buy 1.00 EURUSD at 1.05577 (deviation: 16)
2017.02.15 15:15:29.808 Trades '5246495': accepted instant buy 1.00 EURUSD at 1.05577 (deviation: 16)
2017.02.15 15:15:29.808 Trades '5246495': deal #117730398 buy 1.00 EURUSD at 1.05577 done (based on order #134121030)
2017.02.15 15:15:29.808 Trades '5246495': order #134121030 buy 1.00 / 1.00 EURUSD at 1.05577 done in 80.447 ms