Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Yes, I know that true is returned when calling OrderSelect() directly after the opening of the position.
In this case we have an open MQL5 position and the library finds the position when calling OrderSelect().
This is done in the internal function SelectByExistingTicket() of the library.
But the key point is that OrderSelect(ticket) returns false when the MQL5 position is closed by stop loss or take profit.
Please execute my test code to verify it (if your broker doesn't accept so close SL and TP, please make them wider in order to avoid rejection of the OrderSend()).
But the key point is that OrderSelect(ticket) returns false when the MQL5 position is closed by stop loss or take profit.
Еще раз прочтите часть моего подробного ответа
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: MT4Orders
fxsaber, 2018.08.06 14:21
Все правильно. Подробности описаны здесь.
Вы можете сделать PositionTicket = OrderSend(OP_BUY, 2 lots) и OrderClose(0.2 lots) + OrderClose(0.3 lots). Тогда получите в Истории торгов две закрытые "позиции" (0.2/0.3 lots) и одну еще открытую позицию (1.5 lots) с тикетом равным PositionTicket. Это особенность MT5. Поэтому неправильно в режиме SELECT_BY_TICKET+MODE_HISTORY выбирать позицию по ее POSITION_ID в Истории торгов.
Запоминание тикетов - это плохой стиль, хоть и популярен. Правильно - когда на каждом событии торговый робот считывает все окружение с чистого листа.
ЗЫ Вот здесь показана примерно такая же ситуация, как описана выше
В результатах видно, что была открыта позиция с тикетом == 2. Затем она дважды закрылась, создав тем самым две закрытые "позиции" в Истории торгов. Их тикеты другие, но при этом у обеих этих "позиций" OrderTicketOpen == 2. Т.е. Вы должны понимать, что если в MT5 закрываете позицию, то ее исторический тикет не совпадает с real-time.
Обратите внимание, что в MT5 даже коментарии при закрытии одной и той же real-time позиции разные: "Hello World!" и "tp 1.23614".
Невозможно в MT5 однозначно выбрать закрытую MT4-позицию по POSITION_ID, т.к. в MT5 одновременно может быть несколько MT4-позиций с одним и тем же POSITION_ID.
Кто использует для конвертации MT4 -> MT5 файл mql4_to_mql5.mqh из поставки MT4Orders, удалите из него этот кусок кода
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Тестируем 'CopyTicks'
fxsaber, 2016.10.19 07:59
// А так же задает привычные MT4-функции: iOpen, iHigh, iLow, iClose, iTime, iVolume.
#define DEFINE_TIMESERIE(NAME,FUNC,T) \
class CLASS##NAME \
{ \
public: \
static T Get( const string Symb, const int TimeFrame, const int iShift ) \
{ \
T tValue[]; \
\
return((Copy##FUNC((Symb == NULL) ? _Symbol : Symb, _Period, iShift, 1, tValue) > 0) ? tValue[0] : -1); \
} \
\
T operator []( const int iPos ) const \
{ \
return(CLASS##NAME::Get(_Symbol, _Period, iPos)); \
} \
}; \
\
CLASS##NAME NAME; \
\
T i##NAME( const string Symb, const int TimeFrame, const int iShift ) \
{ \
return(CLASS##NAME::Get(Symb, TimeFrame, iShift)); \
}
DEFINE_TIMESERIE(Volume, TickVolume, long)
DEFINE_TIMESERIE(Time, Time, datetime)
DEFINE_TIMESERIE(Open, Open, double)
DEFINE_TIMESERIE(High, High, double)
DEFINE_TIMESERIE(Low, Low, double)
DEFINE_TIMESERIE(Close, Close, double)
официально с MT5 buiild 1860 эта часть кода не актуальна.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: MT4Orders
fxsaber, 2017.06.14 11:30
Хороший пример использования этих функций лежит в описании к другой библиотеке. Показанный подход позволяет полноценно задействовать MQL4-style (включая возможность остаться в своей On-функции) в асинхронном режиме.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: Symbol
fxsaber, 2018.09.11 15:58
То же самое с помощью СБ
У каждого стиля свои плюсы и минусы.
Проверить библиотеку можно на этом советнике.
Первый пункт сформулирован непонятно. Как было и как стало?
Первый пункт сформулирован непонятно. Как было и как стало?
Выставили открывающий позицию маркет-ордер. В момент, пока он не исполнен, библиотека его видит, как MT4-позицию. Ранее OrderOpenPrice() этой "позиции" была равна нулю. Сейчас - текущей цене.
Запустите этот советник на ForexTimeFXTM-Demo01И руками откройте позицию. Советник распечатает
Ранее в выделенных местах были нули.
Лог этой ситуации самого Терминала
@fxsaber
Можно пример как заставить этого mt5 советника работать на mt4orders?
https://www.mql5.com/ru/code/17464