Как узнать закрыта ли позиция по ее тикету?
ордер клоузтайм() будет не равен нулю
Как узнать закрыта ли позиция по ее тикету?
Можно перебрать открытые позиции - если в списке открытых позиций не нашли позицию с искомым тикетом - значит позиция с искомым тикетом закрыта.
Можно отслеживать события в функции OnTradeTransaction(): если тип торговой транзакции - поле "type" равен "TRADE_TRANSACTION_DEAL_ADD" (добавление сделки в историю) - то смотрим поле "position" (это тикет позиции, открытой, измененной или закрытой в результате исполнения сделки) и ищем эту позицию в открытых.
Так там же одна открытая позиция может быть по символу только, просто проверить есть она или нет ) для неттингового
А в хеджевом как сделано? тоже позиции?
К сожалению у меня сейчас нет возможности проверить...
А это не может помочь?
Если туда засунуть тикет не закрытой позиции, что вернёт функция?
- www.mql5.com
Так там же одна открытая позиция может быть по символу только, просто проверить есть она или нет ) для неттингового
А в хеджевом как сделано? тоже позиции?
Да. В хеджевом тоже позиции. Вот на хеджевом счёте открытые позиции (обратите внимание, по символу "EURUSD" открыты ДВЕ ПРОТИВОПОЛОЖНЫЕ позиции:
и вот этот код:
//+------------------------------------------------------------------+ //| PositionGetInteger.mq5 | //| Copyright © 2016, Vladimir Karputov | //| http://wmua.ru/slesar/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2016, Vladimir Karputov" #property link "http://wmua.ru/slesar/" #property version "1.00" //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { for(int i=0;i<PositionsTotal();i++) { //--- проверим наличие позиции и выведем время её изменения string pos_symbol=PositionGetSymbol((uint)i); if(pos_symbol!=NULL) { //--- получим идентификатор позиции для дальнейшей работы с ней ulong position_ID=PositionGetInteger(POSITION_IDENTIFIER); Print(pos_symbol," postion #",position_ID); //--- получим время образования позиции в миллисекундах с 01.01.1970 long create_time_msc=PositionGetInteger(POSITION_TIME_MSC); PrintFormat("Position #%d POSITION_TIME_MSC = %i64 milliseconds => %s",position_ID, create_time_msc,TimeToString(create_time_msc/1000)); //--- получим время последнего изменения позиции в секундах с 01.01.1970 long update_time_sec=PositionGetInteger(POSITION_TIME_UPDATE); PrintFormat("Position #%d POSITION_TIME_UPDATE = %i64 seconds => %s", position_ID,update_time_sec,TimeToString(update_time_sec)); //--- получим время последнего изменения позиции в миллисекундах с 01.01.1970 long update_time_msc=PositionGetInteger(POSITION_TIME_UPDATE_MSC); PrintFormat("Position #%d POSITION_TIME_UPDATE_MSC = %i64 milliseconds => %s", position_ID,update_time_msc,TimeToString(update_time_msc/1000)); } } //--- } //+------------------------------------------------------------------+
обойдёт все открытые ПОЗИЦИИ и выдаст результат:
2016.06.29 10:12:14.832 PositionGetInteger (USDJPY,M15) EURUSD postion #89078240 2016.06.29 10:12:14.832 PositionGetInteger (USDJPY,M15) Position #89078240 POSITION_TIME_MSC = -168390836864 milliseconds => 2016.06.29 10:08 2016.06.29 10:12:14.832 PositionGetInteger (USDJPY,M15) Position #89078240 POSITION_TIME_UPDATE = 146719490664 seconds => 2016.06.29 10:08 2016.06.29 10:12:14.832 PositionGetInteger (USDJPY,M15) Position #89078240 POSITION_TIME_UPDATE_MSC = -168390836864 milliseconds => 2016.06.29 10:08 2016.06.29 10:12:14.833 PositionGetInteger (USDJPY,M15) GBPUSD postion #89078241 2016.06.29 10:12:14.833 PositionGetInteger (USDJPY,M15) Position #89078241 POSITION_TIME_MSC = -168390653164 milliseconds => 2016.06.29 10:08 2016.06.29 10:12:14.833 PositionGetInteger (USDJPY,M15) Position #89078241 POSITION_TIME_UPDATE = 146719490864 seconds => 2016.06.29 10:08 2016.06.29 10:12:14.833 PositionGetInteger (USDJPY,M15) Position #89078241 POSITION_TIME_UPDATE_MSC = -168390653164 milliseconds => 2016.06.29 10:08 2016.06.29 10:12:14.833 PositionGetInteger (USDJPY,M15) USDCHF postion #89078250 2016.06.29 10:12:14.833 PositionGetInteger (USDJPY,M15) Position #89078250 POSITION_TIME_MSC = -168390389664 milliseconds => 2016.06.29 10:08 2016.06.29 10:12:14.833 PositionGetInteger (USDJPY,M15) Position #89078250 POSITION_TIME_UPDATE = 146719491164 seconds => 2016.06.29 10:08 2016.06.29 10:12:14.833 PositionGetInteger (USDJPY,M15) Position #89078250 POSITION_TIME_UPDATE_MSC = -168390389664 milliseconds => 2016.06.29 10:08 2016.06.29 10:12:14.833 PositionGetInteger (USDJPY,M15) EURUSD postion #89078258 2016.06.29 10:12:14.833 PositionGetInteger (USDJPY,M15) Position #89078258 POSITION_TIME_MSC = -168389882964 milliseconds => 2016.06.29 10:08 2016.06.29 10:12:14.833 PositionGetInteger (USDJPY,M15) Position #89078258 POSITION_TIME_UPDATE = 146719491664 seconds => 2016.06.29 10:08 2016.06.29 10:12:14.833 PositionGetInteger (USDJPY,M15) Position #89078258 POSITION_TIME_UPDATE_MSC = -168389882964 milliseconds => 2016.06.29 10:08
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования