Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2064
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Да, но только это самое крайнее время открытия ордера (лота), среди ордеров в истории, а человеку видимо нужно и реал.
Либо вопрос задан не корректно.
и здесь не понятно. Я всегда указываю где ищем.
OrderSelect[in] Источник данных для выбора. Используется, когда параметр select равен SELECT_BY_POS. Mожет быть одной из следующих величин:
MODE_TRADES (по умолчанию) - ордер выбирается среди открытых и отложенных ордеров,
MODE_HISTORY - ордер выбирается среди закрытых и удаленных ордеров.
Да, но только это самое крайнее время открытия ордера (лота), среди ордеров в истории, а человеку видимо нужно и реал.
Либо вопрос задан не корректно.
и здесь не понятно. Я всегда указываю где ищем.
OrderSelect[in] Источник данных для выбора. Используется, когда параметр select равен SELECT_BY_POS. Mожет быть одной из следующих величин:
MODE_TRADES (по умолчанию) - ордер выбирается среди открытых и отложенных ордеров,
MODE_HISTORY - ордер выбирается среди закрытых и удаленных ордеров.
Вопрос задан корректно.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
pechenuga, 2022.10.20 15:26
Здравствуйте! Подскажите, как на MQL4 написать функцию, чтобы она находила лот последнего открытого ордера по времени? т.е. ордер может быть открытым (действующим), так и закрытым по StopLoss?Ответ не полный, это да…
Что касается источника, то обратите внимание на значение по умолчанию. Надо-ли его указывать, если выбираем действующие ордера, дело каждого?
зы. А при более внимательном рассмотрении видно, что MODE_HISTORY абсолютно необходимо.Вопрос задан корректно.
Ответ не полный, это да…
Что касается источника, то обратите внимание на значение по умолчанию. Надо-ли его указывать, если выбираем действующие ордера, дело каждого?
зы. А при более внимательном рассмотрении видно, что MODE_HISTORY абсолютно необходимо.полностью с вами согласен,
"(Что касается источника, то обратите внимание на значение по умолчанию. Надо-ли его указывать, если выбираем действующие ордера, дело каждого?
зы. А при более внимательном рассмотрении видно, что MODE_HISTORY абсолютно необходимо.) "
я говорил про данный случай там к=OrdersHistoryTotal()
И в до гонку рассуждения, стоит указывать или нет, я думаю стоит, так есть вероятность более быстрей выявить ошибку если она вдруг допущена.
И в до гонку рассуждения, стоит указывать или нет, я думаю стоит, так есть вероятность более быстрей выявить ошибку если она вдруг допущена.
На любителя. Никому не навязываю своё мнение.
полностью с вами согласен,
"(Что касается источника, то обратите внимание на значение по умолчанию. Надо-ли его указывать, если выбираем действующие ордера, дело каждого?
зы. А при более внимательном рассмотрении видно, что MODE_HISTORY абсолютно необходимо.) "
я говорил про данный случай там к=OrdersHistoryTotal()
И в до гонку рассуждения, стоит указывать или нет, я думаю стоит, так есть вероятность более быстрей выявить ошибку если она вдруг допущена.
А стоит ли перебирать все ордера из истории, если интересует только последний? Я думаю, достаточно найти последний действующий и последний из истории и сравнить время?
А стоит ли перебирать все ордера из истории, если интересует только последний? Я думаю, достаточно найти последний действующий и последний из истории и сравнить время?
Чтобы найти последний, нужно его время сравнить со временем остальных, и выбрать тот, время которого наибольшее. Без перебора как это сделать?
Чтобы найти последний, нужно его время сравнить со временем остальных, и выбрать тот, время которого наибольшее. Без перебора как это сделать?
if (OrderSelect(0, SELECT_BY_POS, MODE_TRADES)) 0- это и есть последний ордер? Сразу уточню, в советнике нет модификаций и частичного закрытия ордеров. Ордера закрываются по рынку, либо по стоп лосс
if (OrderSelect(0, SELECT_BY_POS, MODE_TRADES)) 0- это и есть последний ордер? Сразу уточню, в советнике нет модификаций и частичного закрытия ордеров. Ордера закрываются по рынку, либо по стоп лосс
Это первый в списке, но совсем не обязательно, что это первый или последний из открытых. Реально первый или последний нужно искать сравнением времени открытия всех в списке.
Чтобы найти последний, нужно его время сравнить со временем остальных, и выбрать тот, время которого наибольшее. Без перебора как это сделать?
Т.е вот так? Я просто думал, проще способ есть)))
double FindLastOrderLot()
{
double LastLot,LastLoth,LL;
int trade, oldticketnumber,oldticketnumberh=0;
datetime t,th=0;
for(trade=OrdersTotal()-1;trade>=0;trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber) continue;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
//----
if(OrderTicket()>oldticketnumber)
{
LastLot = OrderLots();
oldticketnumber=OrderTicket();
t=OrderOpenTime();
}
}
}
for(trade=OrdersHistoryTotal()-1;trade>=0;trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_HISTORY))
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber) continue;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
{
if(OrderTicket()>oldticketnumberh)
{
LastLoth = OrderLots();
oldticketnumberh=OrderTicket();
th=OrderOpenTime();
}
}
}
}
if (t>th)LL=LastLot;
if (t<th)LL=LastLoth;
return(LL);
}
Т.е вот так? Я просто думал, проще способ есть)))