
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Понял - спасибо - ошибки почти пропали, осталась одна:
'OrderCloseBy' - function not defined cPoza13-1.mqh 1885 8
//+------------------------------------------------------------------------------------------------------------------------------------+
//| Возвращает TRUE, если один ордер закрылся другим
//+------------------------------------------------------------------------------------------------------------------------------------+
bool cPoza::closeBy(int ticketB, int ticketA)
{
if(ticketB > 0 && ticketA > 0)
{
if(OrderCloseBy(ticketB, ticketA)) return true;
else Print("Magic=", mMagic, " ",__FUNCTION__, " Встречное закрытие не вышло ticketB=", ticketB, " ticketA=", ticketA, " вызвало ошибку-", _LastError);
}
else return false;
return false;
}
// CloseBy-моменты - пока было не до этого. Возможно, в будущем, когда понадобится.
// Определение TP и SL закрытых позиций - на данный момент (build 1368) MQL5 этого делать не умеет.
Библиотеку писал для себя, а CloseBy не использую. Поэтому не реализовал. Возможно, с ускорением добавлю и это.
Как временное решение, добавьте перед включением своей библиотеки эти строки
bool OrderCloseBy( const int Ticket, const int Opposite, const color Arrow_Color = clrNONE )
{
return(false);
}
#endif
Возможно, конечно. Не видел необходимости.
Видимо, надо все же сделать.Ещё активно работать с историей приходиться при строении сеточников с усреднениями, дело в том, что ДЦ ограничивает максимальное количество ордеров, а если на счете 15-20 советников с сетками, то решением видится сворачивания части сеток в момент приближения к ограничению по ордерам, соответственно приходится в истории копаться для понимания реального финансового результата позиции.
// CloseBy-моменты - пока было не до этого. Возможно, в будущем, когда понадобится.
// Определение TP и SL закрытых позиций - на данный момент (build 1368) MQL5 этого делать не умеет.
Очень было бы хорошо, спасибо. CloseBy - удобная штука для фиксации части позиции в расчетной точке.
Ещё активно работать с историей приходиться при строении сеточников с усреднениями, дело в том, что ДЦ ограничивает максимальное количество ордеров, а если на счете 15-20 советников с сетками, то решением видится сворачивания части сеток в момент приближения к ограничению по ордерам, соответственно приходится в истории копаться для понимания реального финансового результата позиции.
// CloseBy-моменты - пока было не до этого. Возможно, в будущем, когда понадобится.
// Определение TP и SL закрытых позиций - на данный момент (build 1368) MQL5 этого делать не умеет.
Библиотеку писал для себя, а CloseBy не использую. Поэтому не реализовал. Возможно, с ускорением добавлю и это.
Как временное решение, добавьте перед включением своей библиотеки эти строки
bool OrderCloseBy( const int Ticket, const int Opposite, const color Arrow_Color = clrNONE )
{
return(false);
}
#endif
Спасибо - компиляция прошла успешно в части работы с ордерами! Теперь буду разгребать остальные ошибки - вызванные несовместимостью языков...
CloseBy и ускорение истории добавлю в следующем билде. Мне только не понятно, это востребовано (библиотеку используют) или носит рекомендательный характер на всякий случай.
Я использую, есть очень интересные результаты, но пока не использовал её (функцию) на реальном счете - скоро.
Будет работать! На бирже все делаю через MT4Orders. При этом не ограничиваю себя количеством открытых поз.
на бирже не может выставить стоп-лосс, а сделки открывет
А по моему в либе у вас и не прописано это для модификации
Request.type_filling = ORDER_FILLING_RETURN;
Я так понимаю вот сюда это нужно добавить:
{
MqlTradeRequest Request = {0};
// Учитывается случай, когда присутствуют ордер и позиция с одним и тем же тикетом
bool Res = ((Ticket != MT4ORDERS::Order.Ticket) || (MT4ORDERS::Order.Ticket <= OP_SELL)) ?
(MT4ORDERS::ModifyPosition(Ticket, Request) ? true : MT4ORDERS::ModifyOrder(Ticket, Price, Expiration, Request)) :
(MT4ORDERS::ModifyOrder(Ticket, Price, Expiration, Request) ? true : MT4ORDERS::ModifyPosition(Ticket, Request));
if (Res)
{
Request.tp = TP;
Request.sl = SL;
if ((ENUM_SYMBOL_TRADE_EXECUTION)::SymbolInfoInteger(Request.symbol, SYMBOL_TRADE_EXEMODE) == SYMBOL_TRADE_EXECUTION_EXCHANGE)
Request.type_filling = ORDER_FILLING_RETURN;
Res = MT4ORDERS::NewOrderSend(Request);
}
return(Res);
}
на бирже не может выставить стоп-лосс, а сделки открывет
На самом деле это почти баг разработчиков. Добавьте эту строку
{
const bool Res = ::PositionSelectByTicket(Ticket);
if (Res)
{
Request.action = TRADE_ACTION_SLTP;
Request.position = Ticket;
Request.symbol = ::PositionGetString(POSITION_SYMBOL); // указания одного тикета не достаточно!
}
return(Res);
}
А по моему в либе у вас и не прописано это для модификации
На самом деле это почти баг разработчиков. Добавьте эту строку
{
const bool Res = ::PositionSelectByTicket(Ticket);
if (Res)
{
Request.action = TRADE_ACTION_SLTP;
Request.position = Ticket;
Request.symbol = ::PositionGetString(POSITION_SYMBOL); // указания одного тикета не достаточно!
}
return(Res);
}