Библиотеки: MT4Orders - страница 55

 
SysFX:

What I meant was this:

If you have a 1.00 lot trade in MT4 with a ticket number 123456 and you partially close 0.40 lots, then ticket number 123456 shows on the History tab as 0.40 lots and its trade comment shows "to #NewTicket".

On the Trades tab, a new 0.60 lot trade appears with ticket number "NewTicket", and its trade comment shows "from #123456".

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  const TICKET_TYPE Ticket = OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0);
  
  if (OrderSelect(Ticket, SELECT_BY_TICKET))
    OrderClose(OrderTicket(), 0.4, OrderClosePrice(), 0);
}

Этот скрипт создает вашу ситуацию. Напишите четко, что в этой ситуации нужно получить?

 
fxsaber:

This script creates your situation. Write clearly what you need to get in this situation?

So, in the tester, the following line would create ticket #2 (opening deposit is #1)

const TICKET_TYPE Ticket = OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0);

Then, when this next line executes, a new ticket (#3) should open for 0.6 lots and ticket #2 should appear in order history as a 0.4 lot trade.

OrderClose(OrderTicket(), 0.4, OrderClosePrice(), 0);

In MT4, the order comment for #2 would be "to #3" and the order comment for #3 would be "from #2".

This doesn't happen in MT5 - the comment does not show on the Trades / History tabs, and OrdersToString() just shows "0" for the trade comment.

The same functionality should exist for the tester and for actual trading - I only mentioned the tester because the ticket numbers can be anticipated.

 
SysFX:

In MT4, the order comment for #2 would be "to #3" and the order comment for #3 would be "from #2".

This doesn't happen in MT5 - the comment does not show on the Trades / History tabs, and OrdersToString() just shows "0" for the trade comment.

Как вы уже заметили, при частичном исполнении MT5 не создает определенных комментариев, как это происходит в MT4.


MT4Orders никогда не будет эмулировать какое-либо поведение MT4. Эта библиотека предназначена для использования MT4-style торгового API в MT5. Не больше и не меньше.

Это значит, что если вы знаете MT4, то без труда напишите торговую логику в MT5.


Если вам нужно учесть какие-то тонкие особенности каждой платформы, то для этого есть макросы.

#ifdef __MQL5__
  // MQL5-code is here.
#else // #ifdef __MQL5__
  // MQL4-code is here.
#endif // #ifdef __MQL5__ #else


Если есть какая-то задача, которую не получается решить в MT5, то здесь люди могут помочь. Многое можно сделать через MT4Orders.

 
fxsaber:

Как вы уже заметили, при частичном исполнении MT5 не создает определенных комментариев, как это происходит в MT4.


MT4Orders никогда не будет эмулировать какое-либо поведение MT4. Эта библиотека предназначена для использования MT4-style торгового API в MT5. Не больше и не меньше.

Это значит, что если вы знаете MT4, то без труда напишите торговую логику в MT5.


Если вам нужно учесть какие-то тонкие особенности каждой платформы, то для этого есть макросы.


Если есть какая-то задача, которую не получается решить в MT5, то здесь люди могут помочь. Многое можно сделать через MT4Orders.

Yes ... I realised that it was caused by MT5 behaviour and have found a solution to that issue. It was more important for me to resolve the [sl] / [tp] problem and that is now working nicely - thank you for the information :)

 
Копирую и получаю пустой архив
 
grin4k:
Копирую и получаю пустой архив

Да, он пустой. Глюк сайта.

Но не загружайте архив, если код обновлялся. Зип не обновляется. Качайте пофайлово.

 
fxsaber :

Интересный случай MT5.


Тейк исполнился частично, после чего был удален. В этом случае имеем ситуацию, что DEAL_ORDER имеет статус ORDER_STATE_CANCELED, а не FILLED/PARTIAL.

При этом еще DEAL_TIME_MSC не равен ORDER_TIME_DONE_MSC.

Что было за ORDER_TYPE_FILLING в этом случае?

Я торгую через цензуру брокера url. При установке Take Profit значение по умолчанию ORDER_TYPE_FILLING == ORDER_FILLING_IOC. Ваше дело не должно происходить с МОК, верно?

 
Как обрабатывать ошибки - GetLastError, и ERR_INVALID_PRICE, ERR_PRICE_CHANGED, ERR_REQUOTE, ERR_OFF_QUOTES, ERR_TRADE_CONTEXT_BUSY - константы не определены.
 
Konstantin Kurkin : How to handle errors - GetLastError, and ERR_INVALID_PRICE, ERR_PRICE_CHANGED, ERR_REQUOTE, ERR_OFF_QUOTES, ERR_TRADE_CONTEXT_BUSY - constants are undefined.

MT4ORDERS::LastTradeResult.retcode

 
Enrique Dangeroux:

Что было за ORDER_TYPE_FILLING в этом случае?

Я торгую через цензуру брокера url. При установке Take Profit значение по умолчанию ORDER_TYPE_FILLING == ORDER_FILLING_IOC. Ваше дело не должно происходить с МОК, верно?

После этого случая были десятки тысяч сделок, поэтому не помню.

Причина обращения: