![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вижу есть функция printf
а как было бы здорово получить еще sprintf
Возможно, ее заменит функция StringFormat():
StringFormat
Форматирует полученные параметры и возвращает строку.
string StringFormat(
string format, // строка с описанием формата
... ... // параметры
);
Параметры
format
[in] Строка, содержащая способ форматирования. Правила форматирования такие же, как и для функции PrintFormat
...
[in] Параметры, разделенные запятой.
Возвращаемое значение
Строка.
Возможно, ее заменит функция StringFormat():
Я так понял, что функции StringFormat надо назначить синоним sprintf по аналогии PrintFormat и printf. Но тогда надо будет реализовывать и функцию snprintf
В справке по MQL5 указано:
Угу... Только это событие для индикаторов, в которых (пока?) запрещена работа с объектами.
Нам было предложено реализовать такой индикатор, как эксперт. Но экспертам недоступна функция на подсчет измененных баров (OnCalculate)
Угу... Только это событие для индикаторов, в которых (пока?) запрещена работа с объектами.
Нам было предложено реализовать такой индикатор, как эксперт. Но экспертам недоступна функция на подсчет измененных баров (OnCalculate)
В OnCalculate передаётся то количество обработанных баров prev_calculated, которое возвращается предыдущим вызовом OnCalculate. В эксперте Вы сами можете вести подсчёт обработанных баров, использовав какую-нибудь глобальную или статическую локальную переменную.
В OnCalculate передаётся то количество обработанных баров prev_calculated, которое возвращается предыдущим вызовом OnCalculate. В эксперте Вы сами можете вести подсчёт обработанных баров, использовав какую-нибудь глобальную или статическую локальную переменную.
Смогу ли я узнать в эксперте, что юзер сменил таймфрейм графика и нужно сделать перерасчет всех баров?
В индикаторах такой проблемы нет.
Смогу ли я узнать в эксперте, что юзер сменил таймфрейм графика и нужно сделать перерасчет всех баров?
Да, сможете. Будет вызвана сначала функция OnDeinit со старыми параметрами, а потом OnInit с новыми параметрами
Хотелось бы в mql5 подсветку синтаксиса, а главное скобок при закрытии (пара скобок закрываемая), подстановку функций и текста, корректировку синтаксиса написания команд и знаков сравнения >=,<=,=<,=>, Возможность подключения дополнительных окон в советнике - например ObjWindowCreate(string Name, bool TypeWindow=false) [false - Как окно индикатора, true- Как отдельное окно валютных пар]
Еще посоветовал бы взять интерфейс редактора из NotePade++
Хотелось бы иметь возможность скрывать или открывать текст функций отмечая код функции и кликая на левой панели минус на против заголовка функции
добавить тип переменной как LineType - чтобы можно было отдельно в свойствах советника допустим выбирать тип отображаемой линии в его настройках
Сделать отдельные Евенты для инициализации настроек во время работы советника - пример int OnChangeProperty() { return(0)}
Добавить функции такие как AccountMaxLot() - максимальная текущая возможная ставка клиента
Также НЕ плохо было бы добавить в окно создания ордера лэйбл отображающий необходимую сумму для выбраного лота
Создать функцию отображения текущей прибыли конкретного ордера с учетом или без учета спреда и свопа - пример int CalculateProfitOrder(int OrderNumberHistoryList, bool spred=false, bool swop=false)
где номер - номер ордера в списке активных ордеров
Сделать поддержку символов строковых переменных в уникоде и функцию вставки- string CharUTF(string Font, string 'u+0021'), где u+ заголовок уникод и 0021 код символа в таблице символов
или так string CharUTF(string Font, string U'0021'), лучше добавить в интерпретатор представление символов как дата или цвет с заголовком U'xxxxx'
также сделать функции переводящих строки по кодировке string CharToUtf(string Text) и string UtfToChar(string UtfText)
А вобще лучше расписать Евенты по типам для удобства:
Включение работы советника OnInit()
Выключение работы советника OnDeinit()
Смена тайм фрейма OnChangeTimeFrame(int TimePeriod=Period())
Смена zoom OnChangeZoom( int CountBarPerWindow=WindowBarsPerChart())
Поступление новой цены OnNewPrice()
Создание отдельного окна OnCreateNewWindow(string NameWindow, int IndexWindow=WindowFind(NameWindow), bool TypeWindow=false)
Поступление запроса инвесnора int OnInvestor (int IndexInvestor - идентификатор инвестора(№счета),string NameInvestor- описание инвестора, .....-через запятую параметры для команды OrderSend( return(Id Create Order) ))
Создание ордера - OnCreateOrder (int IndexOrder=OrderNumberHistoryList)
Редактирование ордера - OnModifyOrder (int IndexOrder=OrderNumberHistoryList)
Евент по закрытию ордера по TP, SL, дате или вручную OnOrderClose (int TypeCloseOrder= CLOSEMODE_ [TP, SL, Date, Manual], int IndexOrder=OrderNumberHistoryList, bool PriceType=true)
где PriceType - флаг завершения ордера true- сделака с плюсовым балансом ордера false - сделка с отрицательным балансом ордера
А можно в нижней части Мт,там где сообщается имя Профиля добавить еще и имя наложенного Шаблона?
Имя Профиля и так можно посмареть по списку прфилей(там галочка всегда-что б знать где находишься),а вот какой шаблон щас наложен нет.