Пожелания к MQL5 - страница 59

 
diakin >>:

А какие события например?

Например, из практики, закрытие позиции. У меня была такая задача - узнать момент закрытия позиции, чтобы модифицировать другие ордеры с учетом освободившихся средств. Пришлось отслеживать состояние счета все время. Пробовал следить за ордерами из истории, но при этом невозможно тестировать, все очень долго происходит.

Единственное событие, которое сейчас может быть обработано - это тик.

 
Gupm писал(а) >>

Например, из практики, закрытие позиции. У меня была такая задача - узнать момент закрытия позиции, чтобы модифицировать другие ордеры с учетом освободившихся средств. Пришлось отслеживать состояние счета все время. Пробовал следить за ордерами из истории, но при этом невозможно тестировать, все очень долго происходит.

Единственное событие, которое сейчас может быть обработано - это тик.

Так а все равно start() запускается на каждый тик. Там можно сделать любую проверку, произошло какое-то событие или нет.

 
diakin писал(а) >>

Так а все равно start() запускается на каждый тик. Там можно сделать любую проверку, произошло какое-то событие или нет.

Да, запускается, сейчас так и делаю, но как будет замечательно, когда ордер будет объектом, у которого будет, например, событие - закрытие, к которому ты привязываешь свой обработчик и все, эта часть кода абсолютно отдельна, отлажена и т.д.

 
Gupm писал(а) >>

Да, запускается, сейчас так и делаю, но как будет замечательно, когда ордер будет объектом, у которого будет, например, событие - закрытие, к которому ты привязываешь свой обработчик и все, эта часть кода абсолютно отдельна, отлажена и т.д.

Ну это мне кажется в MQL5 сделать несложно.

;)

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, 
int magic=0, datetime expiration=0, color arrow_color=CLR_NONE, 
func OnClose) 

Последний параметр - имя функции вызываемой при закрытии ордера. Компилятор все равно распознает функции в тексте, распознает и в параметрах.

А события уже ис ейчас внутри обрабатываются - ведь печатает он в журнал сообщение о закрытии ордера (или об ошибке).

Только может быть еще куча событий, которые тоже надо будет описывать в параметрах - пустыми значениями хотя бы, типа OnCloseEmpty, OnOpenEmpty и тп.

Вообще хорошо бы добавить список шаблонов для часто вызываемых функций, при выборе из которого в текст вставлялась бы заготовка функции со всеми требуемыми параметрами.

Сейчас приходится лезть в хелп, копипастить описание функции и править параметры.

 

Хотел бы сделать пожелание к MQL5.

Извеняюсь, если повторюсь, всё предыдущее не читал ...

Хотелось бы чтобы циклы в новом mql как-нибудь выделялись, например вот так:

 
Duke3D писал(а) >>

...

Хотелось бы чтобы циклы в новом mql как-нибудь выделялись, например вот так:

По крайней мере сделать кнопку форматирования текста с автоматическим отступом для фигурных скобок.

Сейчас если скобка пропущена найти где это произошло очень сложно.

И еще добавить нумерацию строк. Мало ли что в С это не принято. Это удобнее, чем выискивать номер строки на статусбаре.

 
diakin >>:

Ну это мне кажется в MQL5 сделать несложно.

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, 
int magic=0, datetime expiration=0, color arrow_color=CLR_NONE, 
func OnClose) 

;)

Последний параметр - имя функции вызываемой при закрытии ордера. Компилятор все равно распознает функции в тексте, распознает и в параметрах.

А события уже ис ейчас внутри обрабатываются - ведь печатает он в журнал сообщение о закрытии ордера (или об ошибке).

Только может быть еще куча событий, которые тоже надо будет описывать в параметрах - пустыми значениями хотя бы, типа OnCloseEmpty, OnOpenEmpty и тп.

Вообще хорошо бы добавить список шаблонов для часто вызываемых функций, при выборе из которого в текст вставлялась бы заготовка функции со всеми требуемыми параметрами.

Сейчас приходится лезть в хелп, копипастить описание функции и править параметры.

А почему только onClose? А onModify, onOpen?

Может если уж order это объект, то должно быть что-то типа такого:


TOrder order = new  TOrder(symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment);
order.addEventListener( "open", myOpenHandler);
order.addEventListener( "close", myCloseHandler);
order.addEventListener( "modify", myModifyHandler);
order.send();

Ы?

 
TedBeer писал(а) >>

А почему только onClose? А onModify, onOpen?

Может если уж order это объект, то должно быть что-то типа такого:

Ы?

Трудно сказать.

int ticket=OrderSend(параметры); // обычная функция из MQL4

Order(ticket).addEvent ("open", myOpenHandler);

или компактнее

Order(ticket).OnOpen=myOpenHandler;

где Order(handle) - что-то стандартное, объект или структура через которую можно добраться к свойствам заданного по хэндлу объекта.

double MyVolume=Order(ticket).Volume;


Один черт кастомные события не прикрутить. Или можно?

Order(ticket).addEvent ("MyCustomEvent", MyCustomEventHandler);

А где в таком случае описывается "MyCustomEvent"? (если это НЕ комбинация из стандартных событий и допусловий.)

Хотя как я понимаю MQL5 уже написан, так что это пожелания на будущее ;)))

 
diakin >>:

Трудно сказать.

int ticket=OrderSend(параметры); // обычная функция из MQL4

Order(ticket).addEvent ("open", myOpenHandler);

или компактнее

Order(ticket).OnOpen=myOpenHandler;

где Order(handle) - что-то стандартное, объект или структура через которую можно добраться к свойствам заданного по хэндлу объекта.

double MyVolume=Order(ticket).Volume;


Один черт кастомные события не прикрутить. Или можно?

Order(ticket).addEvent ("MyCustomEvent", MyCustomEventHandler);

А где в таком случае описывается "MyCustomEvent"? (если это НЕ комбинация из стандартных событий и допусловий.)

Хотя как я понимаю MQL5 уже написан, так что это пожелания на будущее ;)))

Ну у вас получается мешанина функционального подхода и ооп. Идеологически верным должно быть что-то одно. Даже если обычные функции сохранятся для обратной совместимости, должен быть реализован и ООП, а иначе зачем такая глубокая модернизация под названием MQL5? 

К сожалению все наши обсуждения сродни гаданию на кофейной гуще. Толку от них никакого, так как не видать желания метаквотс, не то что дать погонять бета версию, но и опубликовать спецификации языка, который они реализовали, грамматику хоть выложили б в публичный доступ. Тогда можно было бы аргументировано просить что-то сделать с языком до его выпуска в виде продукта.