![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
предоставили же отличнейшую штуку - SQLite. Остаётся в советнике создать в памяти и поддерживать в актуальном виде оперативную базу.
SELECT * FROM Orders WHERE groupid=xx ORDER BY openTime
Сеточники пишут не всегда все типы данных зная, а вы SQL предлагаете сходу запользовать)))))
Да и честно говоря избыточное решение в данном случае от слова совсем. Но хорошее, чтобы люди знали )
Сеточники пишут не всегда все типы данных зная, а вы SQL предлагаете сходу запользовать)))))
Да и честно говоря избыточное решение в данном случае от слова совсем. Но хорошее, чтобы люди знали )
В базовый класс советник можно(нужно) добавлять поддержку базы и в производных классах её пользоваться.
К тому, сдаётся мне что дескриптор базы можно передавать в пользовательские DLL и DLL-ки могут её читать/писать.
предоставили же отличнейшую штуку - SQLite. Остаётся в советнике создать в памяти и поддерживать в актуальном виде оперативную базу.
В базовый класс советник можно(нужно) добавлять поддержку базы и в производных классах её пользоваться.
не предоставили, я админа Рената спросил про MQL4 будет ли и там SQLite , админ ответил - примерно как "не масштабируйте фишки MQL5 на старый терминал", затем удалил и свой и мой пост
в 5-ке SQLite овеяный одобрением MQL.
фичи в 4-ку разработчики терминала больше не вносят, но в 4-ку его API вполне портируется самостоятельно (разве что будет зависимость от DLL SQLite), затыки и пенальти видятся только с кодировками (исходного кода, коих две возможных и базы для которой родная это utf-8).
но в 4-ку его API вполне портируется самостоятельно (разве что будет зависимость от DLL SQLite), затыки и пенальти видятся только с кодировками (исходного кода, коих две возможных и базы для которой родная это utf-8).
поиском по статьям "SQL", готовые решения под MQL4 очень давно описаны
поиском по статьям "SQL", готовые решения под MQL4 очень давно описаныещё обсуждения почитай - с кодировками всегда проблемы :-)
и если теперь есть принятый API то стоит ему следовать, чтобы код был портабелен
ещё обсуждения почитай - с кодировками всегда проблемы :-)
и если теперь есть принятый API то стоит ему следовать, чтобы код был портабелен
читал пару лет назад, не интересно
БД не нужны для текущего сопровождения ордеров, имхо, БД нужны для оценки проходов оптимизатора и/или выбора нужной ТС
Подключите немного разума и сделайте, чтобы и с неоднозначным номером работало.
Например, в конец добавляйте какой-нибудь знак-разделитель, потом находите его позицию и отделяйте соответствующее количество знаков (цифр).
Да думаю так будет проще, чем менять магики в сетке.
Я ищу последний ордер в сетке по тикету.(Открыть больше одного ордера на тик робот не может)
int Ticket = 0;
int OldTicket = 0;
string NewComment;
for(int i=0; i<=OrdersTotal()-1; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol())
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magicnum)
{
Ticket = OrderTicket();
if(Ticket> OldTicket)
{
OldTicket=OrderTicket();
NewComment = OrderComment();
А потом уже работаю с переменной NewComment, меня просто смутило что функция StringGetCharacter возвращает значение символа, а не сам символ, с двузначным числом в комментарии приходится извращаться в коде. Думала есть способ проще и удобней, мало ли) Мож я просто до него не дошла.
Как вариант, номер сделки выносить, например, в начало комментария. После поиска разделителя забираем строку до разделителя StringSetCharacter. Проверяем число символов в строке StringLen и уже конкретно увидим скольки значное число мы получили. От этого и пляшем.
Просто по логике робота, если из N ордеров, 1,2,3,4 были закрыты и существует N ордер, то надо сидеть и не жужжать, Если из N ордеров были закрыты 1,2,3,4 и N ордер тоже был закрыт, то он должен снова открыть N ордер.
Т.е. пока существует хотябы 1 ордер в середине сетки, робот будет стараться открыть ордера пока из комментария не получит максимально допустимый номер сделки. И отталкивается от последнего именно существующего ордера. Из N ордеров были закрыты 1,2,3, а также N-2, N-1 и N. То ордера N-2, N-1 и N надо снова открыть.
Если же сетки не существует, то робот обнуляется и начинает строить новую сетку.
Да думаю так будет проще, чем менять магики в сетке.
Ну проще так проще. Попадётся брокер который трёт комменты, вернётесь к этому , удачи ;)
з.ы. магик - целое число, коммент - строковый тип. ВСЕГДА операции с целыми числами ПРОЩЕ и НАДЕЖНЕЕ чем со строками
з.ы.ы. Но раз уж вы любите строки, посмотрите ф-ию StringSplit. С нею удобно в коммент множество пар-ров записать-прочитать. заодно проще определить что коммент "уже не тот")