[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 104
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В кометарий ордера добавляется номер дня месяца. Как посчитать сколько было ордеров (закрытых) за день с коментом этого дня?
Что то не соображу как это реализовать.
comment = Day();
int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{
int n;
int f = 0;
int total = OrdersHistoryTotal();
for (n = total - 1; n >= 0; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && OrderComment() == comment)
{
f++;
}
}
Print("колл-во ордеров = ",f,"");
return(f);
}
В кометарий ордера добавляется номер дня месяца. Как посчитать сколько было ордеров (закрытых) за день с коментом этого дня?
Что то не соображу как это реализовать.
comment = Day();
int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{
int n;
int f = 0;
int total = OrdersHistoryTotal();
for (n = total - 1; n >= 0; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && OrderComment() == comment)
{
f++;
}
}
Print("колл-во ордеров = ",f,"");
return(f);
}
И при отправке ордеров тоже самое!
Лучше так:
И быстрее, и проще, и надежнее.bool UseTF = true;
int start()
{
string comment = TimeDay(TimeCurrent());
if (OpenOrdersDayHistory(Symbol(), OP_SELL, 123, comment) > 0)
{
UseTF = false;
Print("Нет");
}
else
{
UseTF = true;
Print("Да");
}
if (UseTF == true)
{
int ticket = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, Ask+10*Point, comment, 123, 0, Green);
}
return(0);
}
int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{
int n;
int f = 0;
int total = OrdersHistoryTotal();
for (n = total - 1; n >= 0; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && OrderComment() == comment)
{
f++;
}
}
Print("колл-во ордеров = ",f,"");
return(f);
}
Вот попробуйте. Не читает он ордеров в истории.
Доброго дня всем.
Никак не получается правильно "забить" в код открытие отложенных ордеров. Учебник, хелп и прочее прочитал. Скорее всего там есть ответ, но просто до меня так и не доходит...
Проблема вот в чём. Есть период на котором ищется макс и мин цена - эти значения присваиваются двум глобальным переменным. Потом надо открыть отложенный ордер по этой цене. Никак не получается разобраться с пунктом цены. Получается сплошной лес, чтобы правильно указать интервал с текущей ценой.
1.Вопрос - как выглядит функция цены текущего бара к примеру в 6 утра?
2.Как указать в закрытии ордера параметр тикет?
Или как то по другому закрывать один из двух ранее открытых ордеров?
Мне приходится изголяться вот так...
for (int i=1; i<=OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS)==true)
{
int T=OrderTicket();
int Cur_Hour2=Hour(); // Серверное время в часах
double Cur_Min2 =Minute(); // Серверное время в минутах
double Cur_time2=Cur_Hour2 + Cur_Min2/100; // Текущее время
Alert(Cur_time2);
if (Cur_time2>=Time_of_buy_sell_2)
OrderClose(T,1,Ask,3,Red);
}
return; // Выход из start()
Прошу строго не судить:)
Лучше так:
И быстрее, и проще, и надежнее.Согласен, но я больше акцентировал внимание на другое.
Вот попробуйте. Не читает он ордеров в истории.
Все читает нормально. Проверь какой у тебя комментарий после закрытия. Некоторые брокеры при закрытии ордера добавляют в комментарий свои записи.