Подскажите как определить последнюю цену закрытия ордера (MQL5)? В MQL4 было просто OrderClosePrice() ...
Может всё-таки нужно узнать цену последней сделки? Если нужна последняя цена закрытия то один из вариантов: нужно ловить событие в OnTradeTransaction:
//| TradeTransaction function |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
const MqlTradeRequest &request,
const MqlTradeResult &result)
{
//--- get transaction type as enumeration value
ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- if transaction is result of addition of the transaction in history
if(type==TRADE_TRANSACTION_DEAL_ADD)
{
long deal_entry =0;
long deal_type =0;
double deal_profit =0.0;
double deal_volume =0.0;
double deal_price =0.0;
string deal_symbol ="";
long deal_magic =0;
if(HistoryDealSelect(trans.deal))
{
deal_entry=HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
deal_type=HistoryDealGetInteger(trans.deal,DEAL_TYPE);
deal_profit=HistoryDealGetDouble(trans.deal,DEAL_PROFIT);
deal_volume=HistoryDealGetDouble(trans.deal,DEAL_VOLUME);
deal_price=HistoryDealGetDouble(trans.deal,DEAL_PRICE);
deal_symbol=HistoryDealGetString(trans.deal,DEAL_SYMBOL);
deal_magic=HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
}
else
return;
if(deal_symbol==Symbol() && deal_magic==m_magic)
{
if(deal_entry==DEAL_ENTRY_OUT) // deal entry "out"
{
if(deal_type==DEAL_TYPE_BUY) // there was a deal of "Buy" -> was close "Sell" positions
{
//deal_price - цена закрытия
}
if(deal_type==DEAL_TYPE_SELL) // there was a deal of "Sell" -> was close "Buy" positions
{
//deal_price - цена закрытия
}
}
}
}
}
Проблема в том, что мне надо знать последнюю цену последней сделки по уже закрытому ордеру ...
то есть по другому по какой последней цене закрылся ордер
Проблема в том, что мне надо знать последнюю цену последней сделки по уже закрытому ордеру ...
то есть по другому по какой последней цене закрылся ордер
Проблема в том, что мне надо знать последнюю цену последней сделки по уже закрытому ордеру ...
то есть по другому по какой последней цене закрылся ордер
Посмотрите пример работы с историей ордеров: \MQL5\Scripts\Examples\OrderInfo\.
Останется гарантированно пройтись по истории ордеров и найти самое последнее время (в миллесекундах) - это и будет последний ордер в истории.
А что, может быть еще и не последняя цена у последней сделки? И что, ордер еще закрывается по какой-то не последней цене?
ордер может быть закрыт частично ...
мне нужна цена при полном закрытии ордера
void OnStart()
{
if (OrderSelect(OrdersHistoryTotal() - 1, SELECT_BY_POS, MODE_HISTORY))
Alert(OrderClosePrice());
}
Посмотрите пример работы с историей ордеров: \MQL5\Scripts\Examples\OrderInfo\.
Останется гарантированно пройтись по истории ордеров и найти самое последнее время (в миллесекундах) - это и будет последний ордер в истории.
пример посмотрел, цены закрытия не увидел, ткните меня плиз носом
и давайте кодом
//вычислим для всех ордеров в истории все доступные параметры
for (int h=0; h<HistoryOrdersTotal(); h++){
if((ticket=HistoryDealGetTicket(h))>0)
{
profit=HistoryDealGetDouble(ticket,DEAL_PROFIT); //- профит
}
//OrderSelect(ticket);
//OrderGetInteger(ORDER_TYPE) - тип ордера
//OrderGetString(ORDER_SYMBOL) - валютная пара
//OrderGetInteger(ORDER_TIME_SETUP) - время открытия
//OrderGetInteger(ORDER_TIME_DONE) - время закрытия
//OrderGetDouble(ORDER_PRICE_OPEN) - цена открытия
//OrderGetInteger(ORDER_MAGIC) - маг число
}
void OnStart()
{
if (OrderSelect(OrdersHistoryTotal() - 1, SELECT_BY_POS, MODE_HISTORY))
Alert(OrderClosePrice());
}
это МТ4, мне надо МТ5!!!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования