с точки зрения технологий софта - потенциально да. Библиотеки можно вызывать из оптимизатора пока он не в облаке.
со стороны НС - как вы себе это представляете ?
В оптимизаторе делается проход, и пишутся данные в файл, потом отдаются на обучение сети, после обучения результаты оценки обучения возвращаются в MT4/5, а сама сеть(правила) записываются в файл. Ну а другой вид, это когда мы из записанных файлов логики НС проводим оптимизацию (самих вариантов НС) и фиксируем стандартные показатели ТС.
Расширил демку про графику Tk - теперь она ещё и табличку ордеров показывает.
Код MQL который относится к таблице ордеров - выбирает все свои ордера и отправляет их в tcl в метод OnOrderList - на выходе получает 3 списка тикетов - те который новые, те у которых что-то поменялось и те которые были удалены
void
SendOrderList()
{
int total=OrdersTotal();
Tcl_Obj list=tcl.Ref(tcl.Obj()); // пустой списокfor(int pos=0;pos<total;pos++) {
if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES) ||
OrderMagicNumber()!=MAGIC ||
OrderSymbol()!=_Symbol ||
OrderCloseTime()!=0) continue;
Tcl_Obj ord=tcl.Ref(tcl.List(
tcl.Obj(OrderTicket()),
tcl.Obj(OrderType()),
tcl.Obj(OrderOpenTime()),
tcl.Obj(OrderSymbol()),
tcl.Obj(OrderLots()),
tcl.Obj(OrderOpenPrice()),
tcl.Obj(OrderStopLoss()),
tcl.Obj(OrderTakeProfit()),
tcl.Obj(OrderComment()),
tcl.Obj(OrderSwap()),
tcl.Obj(OrderCommission())
));
tcl.AppendObj(list,ord);
tcl.Unref(ord);
}
if (tcl.Call(panel,methodOnOrderList,list)!=TCL_OK) {
PrintFormat("OrderSendList failed : %s",tcl.StringResult());
} else {
Tcl_Obj triplet=tcl.Ref(tcl.Result()); // 0-новые 1-изменённые 2-удалённые
Tcl_Obj created=tcl.Ref(tcl.Index(triplet,0)); // список новых ордеров
Tcl_Obj changed=tcl.Ref(tcl.Index(triplet,1)); // список изменённых ордеров
Tcl_Obj removed=tcl.Ref(tcl.Index(triplet,2)); // список удалённых ордеров
PrintOrderList("New orders",created);
PrintOrderList("Modified orders",changed);
PrintOrderList("Deleted orders",removed);
// объекты больше ненужны
tcl.Unref(removed);
tcl.Unref(changed);
tcl.Unref(created);
tcl.Unref(triplet);
}
}
и метод Tcl который производит основную работу : - получает новый список ордеров - сравнивает с теми что были при пред.вызове - строит 3 упомянутых списка (новые,изменённые, удаленные) - заодно ведёт таблицу ..которая на самом деле дерево и её можно сделать в несколько уровней
# надо обновить внутренние структуры # и вернуть триплет (список из трёх списков) # 1 - список новых ордеров # 2 - ордера которые поменялись # 3 - ордера которые удалены method OnOrderList { orderList } { set created {} set changed {} set removed {} foreach order $orderList { set ticket [ lindex $order 0 ] set known($ticket) $order if { ! [ info exists Orders($ticket) ] } { # новый тикет # добавить в список свежесозданных lappend created $ticket set Orders($ticket) $order continue } if { $Orders($ticket) != $order } { # что-то поменялось # добавить в список изменённых set Orders($ticket) $order lappend changed $ticket } } foreach ticket [ array names Orders ] { if { ! [ info exists known($ticket) ] } { # прежнего ордера нет в новом списке - значит удалён lappend removed $ticket unset Orders($ticket) } } # обновить грфику :-) foreach ticket $removed { my OnRemoveOrder $ticket } foreach ticket $changed { my OnChangeOrder $ticket } foreach ticket $created { my OnCreateOrder $ticket } return [ list $created $changed $removed ] }
все получается очень компактно. Можно использовать сильные стороны обоих языков - MQL близок к торговому окружению и быстро считает в массивах, Tcl легко управляется со списками и хешами. На MQL реализуется суровый торговый алгоритм, а скриптами организуется взаимодействие с миром и пользователем.
сделал короткий скрипт для экспорта котировок напрямую в Эксель. Без всяких записей в CSV и вообще параметров - чтобы просто кинул на график, открылся лист Эксель и в него скопировались все котировки.
Текст максимально прокомментировал и прилагаю. На личном сайте расписал детали скрипта http://nektomk.ru/atcl:ratestoexcel Объём выходит за рамки форума, поэтому там. Может под настроение продублирую в местном блоге, чтобы информация точно не терялась
Скрипт прилагаю
PS/ у кого нить есть заготовка make - файла для пакетной компиляции mql ? чтобы поменял один mqh, ткнул make и пересобралась кучка mq4 которые перечислены в зависимостях..
Часто возникающий (и довольно практичный) вопрос у пользователей MetaTrader - «Как скопировать котировки в Excel?» . При помощи библиотеки ATcl это программируется довольно легко. В состав библиотеки входит «большая» программа работающая с Excel, но для частых потребностей сделал короткий скрипт, который делает самую простую вещь - экспорт...
почтарик работает, но надо ещё дотянуть докоментить, доописать...
а пока вопрос к людям - будет ли востребован GUI-Builder ? для Tk они есть, но вследствии того что скрипты текстом написать быстрее чем в рисовать они мало мало востребованы.
что-то типа такого :
PS/ результат такого GUI-строения и сейчас при помощи "такой-то матери" может быть запущено из MT4..
почтарик работает, но надо ещё дотянуть докоментить, доописать...
а пока вопрос к людям - будет ли востребован GUI-Builder ? для Tk они есть, но вследствии того что скрипты текстом написать быстрее чем в рисовать они мало мало востребованы.
что-то типа такого :
PS/ результат такого GUI-строения и сейчас при помощи "такой-то матери" может быть запущено из MT4..
Какие интересные штучки... только как их применить?
А, есть у меня идея для как раз графических интерфейсов - создание торговой логики по типу дерева решений! Т.е. создаем в графическом редакторе (т.е. оболочке) дерево и при помощи кнопочки конвертируем его в нехитрые правила или даже сразу в код! Впрочем, читать правила так же очень компактно можно в коде.
Зачем это нужно? Да такой подход позволяет детализировать торговую стратегию, к примеру легко её разбить на временные ряды - не только принимая решения торгуем/не торгуем, а торгуем в это время так, а в это время иначе. Признаков смены тактики торговлю много разных, а в коде это писать во первых некомпактно, а во вторых визуально трудно четаемо - можно совершить кучу ошибок.
Интересна такая идея для приложения Вашего таланта?
Какие интересные штучки... только как их применить?
А, есть у меня идея для как раз графических интерфейсов - создание торговой логики по типу дерева решений! Т.е. создаем в графическом редакторе (т.е. оболочке) дерево и при помощи кнопочки конвертируем его в нехитрые правила или даже сразу в код! Впрочем, читать правила так же очень компактно можно в коде.
Зачем это нужно? Да такой подход позволяет детализировать торговую стратегию, к примеру легко её разбить на временные ряды - не только принимая решения торгуем/не торгуем, а торгуем в это время так, а в это время иначе. Признаков смены тактики торговлю много разных, а в коде это писать во первых некомпактно, а во вторых визуально трудно четаемо - можно совершить кучу ошибок.
Интересна такая идея для приложения Вашего таланта?
вообще не понял идею про "графическое дерево принятия решений" :-) может прикладывемого таланта нехватает :-)
Если у нас происходит совпадение значений правила и расчетных значений(значение индикатора/время/иной паттерн), то осуществляется, к примеру, торговое действие.
Такой метод торговых решений очень компактен и разнообразен - можно закодировать таким нехитрым образом, к примеру, много стратегий - дав им разный маджик.
Но, вот загвоздка заключается в том, что нужна как раз среда для такого стиля программирования. Эта среда должна выглядить как дерево принятия решений (примитивная блок схема), где можно создавать блоки (результат вычисления к примеру arr_iDelta_Max_D1 с предопределенными значениями (1,2,3,4 ..n) и/или с возможностью ограничивать значения от и до, создавая много разных групп таким образом), от этого блока будут отходить ветви для каждого значения переменной или диапазона значений переменной, и так до следующего блока и так далее. Таким образом у нас будет набор правил, каждый их которых, кстати не обязательно должен использовать все блоки.
Если у нас происходит совпадение значений правила и расчетных значений(значение индикатора/время/иной паттерн), то осуществляется, к примеру, торговое действие.
Такой метод торговых решений очень компактен и разнообразен - можно закодировать таким нехитрым образом, к примеру, много стратегий - дав им разный маджик.
Но, вот загвоздка заключается в том, что нужна как раз среда для такого стиля программирования. Эта среда должна выглядить как дерево принятия решений (примитивная блок схема), где можно создавать блоки (результат вычисления к примеру arr_iDelta_Max_D1 с предопределенными значениями (1,2,3,4 ..n) и/или с возможностью ограничивать значения от и до, создавая много разных групп таким образом), от этого блока будут отходить ветви для каждого значения переменной или диапазона значений переменной, и так до следующего блока и так далее. Таким образом у нас будет набор правил, каждый их которых, кстати не обязательно должен использовать все блоки.
Так понятней? Если нужны пояснения - спрашивайте.
Типа Xcos (http://www.scilab.org/en/scilab/features/xcos) и подобных модных в симуляциях ? В tcl подобное видел - среду где соединяют блоки стрелочками..они так обработку звука/видео/графиков программировали. http://wiki.tcl.tk/8565 вроде как много чего навернуть, в какой-то блок даже Максиму воткнули Если оно - обращу пристальное внимание
Maxim Kuznetsov: Типа Xcos (http://www.scilab.org/en/scilab/features/xcos) и подобных модных в симуляциях ? В tcl подобное видел - среду где соединяют блоки стрелочками..они так обработку звука/видео/графиков программировали. http://wiki.tcl.tk/8565 вроде как много чего навернуть, в какой-то блок даже Максиму воткнули Если оно - обращу пристальное внимание
Да, это такой подход! Главное не усложнять, и сделать корректный интерпретатор, что б все блоки собирались в одну строку (по одной ветви), с которой уже будет работать программа на MQL.
Да, это такой подход! Главное не усложнять, и сделать корректный интерпретатор, что б все блоки собирались в одну строку (по одной ветви), с которой уже будет работать программа на MQL.
вряд-ли я буду усложнять, то есть например сильно ковыряться в коде bwise.
Максимум - адаптирую чтоб его можно было использовать вместе с ATcl (то есть передавать данные из Mql на его входы) и принимать выходы. Придётся конечно писать какой-то HowTo "как нарисовать квадратики и прицепить к эксперту". И плотно попрактиваться в английском при общении с автором(авторами) :-)
с точки зрения технологий софта - потенциально да. Библиотеки можно вызывать из оптимизатора пока он не в облаке.
со стороны НС - как вы себе это представляете ?
В оптимизаторе делается проход, и пишутся данные в файл, потом отдаются на обучение сети, после обучения результаты оценки обучения возвращаются в MT4/5, а сама сеть(правила) записываются в файл. Ну а другой вид, это когда мы из записанных файлов логики НС проводим оптимизацию (самих вариантов НС) и фиксируем стандартные показатели ТС.
Расширил демку про графику Tk - теперь она ещё и табличку ордеров показывает.
Код MQL который относится к таблице ордеров
- выбирает все свои ордера и отправляет их в tcl в метод OnOrderList
- на выходе получает 3 списка тикетов - те который новые, те у которых что-то поменялось и те которые были удалены
и метод Tcl который производит основную работу :
- получает новый список ордеров
- сравнивает с теми что были при пред.вызове
- строит 3 упомянутых списка (новые,изменённые, удаленные)
- заодно ведёт таблицу ..которая на самом деле дерево и её можно сделать в несколько уровней
# надо обновить внутренние структуры
# и вернуть триплет (список из трёх списков)
# 1 - список новых ордеров
# 2 - ордера которые поменялись
# 3 - ордера которые удалены
method OnOrderList { orderList } {
set created {}
set changed {}
set removed {}
foreach order $orderList {
set ticket [ lindex $order 0 ]
set known($ticket) $order
if { ! [ info exists Orders($ticket) ] } {
# новый тикет
# добавить в список свежесозданных
lappend created $ticket
set Orders($ticket) $order
continue
}
if { $Orders($ticket) != $order } {
# что-то поменялось
# добавить в список изменённых
set Orders($ticket) $order
lappend changed $ticket
}
}
foreach ticket [ array names Orders ] {
if { ! [ info exists known($ticket) ] } {
# прежнего ордера нет в новом списке - значит удалён
lappend removed $ticket
unset Orders($ticket)
}
}
# обновить грфику :-)
foreach ticket $removed {
my OnRemoveOrder $ticket
}
foreach ticket $changed {
my OnChangeOrder $ticket
}
foreach ticket $created {
my OnCreateOrder $ticket
}
return [ list $created $changed $removed ]
}
все получается очень компактно.
Можно использовать сильные стороны обоих языков - MQL близок к торговому окружению и быстро считает в массивах,
Tcl легко управляется со списками и хешами.
На MQL реализуется суровый торговый алгоритм, а скриптами организуется взаимодействие с миром и пользователем.
Архив прикладываю.
Скрипт экспорта котировок в Excel
сделал короткий скрипт для экспорта котировок напрямую в Эксель.
Без всяких записей в CSV и вообще параметров - чтобы просто кинул на график, открылся лист Эксель и в него скопировались все котировки.
Текст максимально прокомментировал и прилагаю. На личном сайте расписал детали скрипта http://nektomk.ru/atcl:ratestoexcel
Объём выходит за рамки форума, поэтому там. Может под настроение продублирую в местном блоге, чтобы информация точно не терялась
Скрипт прилагаю
PS/ у кого нить есть заготовка make - файла для пакетной компиляции mql ? чтобы поменял один mqh, ткнул make и пересобралась кучка mq4 которые перечислены в зависимостях..
update/ продублировал статью в местном блоге https://www.mql5.com/ru/blogs/post/718304 - теперь уж наверное не пропадётпочтарик работает, но надо ещё дотянуть докоментить, доописать...
а пока вопрос к людям - будет ли востребован GUI-Builder ?
для Tk они есть, но вследствии того что скрипты текстом написать быстрее чем в рисовать они мало мало востребованы.
что-то типа такого :
PS/ результат такого GUI-строения и сейчас при помощи "такой-то матери" может быть запущено из MT4..
почтарик работает, но надо ещё дотянуть докоментить, доописать...
а пока вопрос к людям - будет ли востребован GUI-Builder ?
для Tk они есть, но вследствии того что скрипты текстом написать быстрее чем в рисовать они мало мало востребованы.
что-то типа такого :
PS/ результат такого GUI-строения и сейчас при помощи "такой-то матери" может быть запущено из MT4..
Какие интересные штучки... только как их применить?
А, есть у меня идея для как раз графических интерфейсов - создание торговой логики по типу дерева решений! Т.е. создаем в графическом редакторе (т.е. оболочке) дерево и при помощи кнопочки конвертируем его в нехитрые правила или даже сразу в код! Впрочем, читать правила так же очень компактно можно в коде.
Зачем это нужно? Да такой подход позволяет детализировать торговую стратегию, к примеру легко её разбить на временные ряды - не только принимая решения торгуем/не торгуем, а торгуем в это время так, а в это время иначе. Признаков смены тактики торговлю много разных, а в коде это писать во первых некомпактно, а во вторых визуально трудно четаемо - можно совершить кучу ошибок.
Интересна такая идея для приложения Вашего таланта?
Какие интересные штучки... только как их применить?
А, есть у меня идея для как раз графических интерфейсов - создание торговой логики по типу дерева решений! Т.е. создаем в графическом редакторе (т.е. оболочке) дерево и при помощи кнопочки конвертируем его в нехитрые правила или даже сразу в код! Впрочем, читать правила так же очень компактно можно в коде.
Зачем это нужно? Да такой подход позволяет детализировать торговую стратегию, к примеру легко её разбить на временные ряды - не только принимая решения торгуем/не торгуем, а торгуем в это время так, а в это время иначе. Признаков смены тактики торговлю много разных, а в коде это писать во первых некомпактно, а во вторых визуально трудно четаемо - можно совершить кучу ошибок.
Интересна такая идея для приложения Вашего таланта?
вообще не понял идею про "графическое дерево принятия решений" :-) может прикладывемого таланта нехватает :-)
вообще не понял идею про "графическое дерево принятия решений" :-) может прикладывемого таланта нехватает :-)
Представьте таблицу данных с набором правил
Эти правила в коде организуются следующим образом
Если у нас происходит совпадение значений правила и расчетных значений(значение индикатора/время/иной паттерн), то осуществляется, к примеру, торговое действие.
Такой метод торговых решений очень компактен и разнообразен - можно закодировать таким нехитрым образом, к примеру, много стратегий - дав им разный маджик.
Но, вот загвоздка заключается в том, что нужна как раз среда для такого стиля программирования. Эта среда должна выглядить как дерево принятия решений (примитивная блок схема), где можно создавать блоки (результат вычисления к примеру arr_iDelta_Max_D1 с предопределенными значениями (1,2,3,4 ..n) и/или с возможностью ограничивать значения от и до, создавая много разных групп таким образом), от этого блока будут отходить ветви для каждого значения переменной или диапазона значений переменной, и так до следующего блока и так далее. Таким образом у нас будет набор правил, каждый их которых, кстати не обязательно должен использовать все блоки.
Так понятней? Если нужны пояснения - спрашивайте.
Представьте таблицу данных с набором правил
Эти правила в коде организуются следующим образом
Если у нас происходит совпадение значений правила и расчетных значений(значение индикатора/время/иной паттерн), то осуществляется, к примеру, торговое действие.
Такой метод торговых решений очень компактен и разнообразен - можно закодировать таким нехитрым образом, к примеру, много стратегий - дав им разный маджик.
Но, вот загвоздка заключается в том, что нужна как раз среда для такого стиля программирования. Эта среда должна выглядить как дерево принятия решений (примитивная блок схема), где можно создавать блоки (результат вычисления к примеру arr_iDelta_Max_D1 с предопределенными значениями (1,2,3,4 ..n) и/или с возможностью ограничивать значения от и до, создавая много разных групп таким образом), от этого блока будут отходить ветви для каждого значения переменной или диапазона значений переменной, и так до следующего блока и так далее. Таким образом у нас будет набор правил, каждый их которых, кстати не обязательно должен использовать все блоки.
Так понятней? Если нужны пояснения - спрашивайте.
В tcl подобное видел - среду где соединяют блоки стрелочками..они так обработку звука/видео/графиков программировали. http://wiki.tcl.tk/8565 вроде как много чего навернуть, в какой-то блок даже Максиму воткнули
Если оно - обращу пристальное внимание
Типа Xcos (http://www.scilab.org/en/scilab/features/xcos) и подобных модных в симуляциях ?
В tcl подобное видел - среду где соединяют блоки стрелочками..они так обработку звука/видео/графиков программировали. http://wiki.tcl.tk/8565 вроде как много чего навернуть, в какой-то блок даже Максиму воткнули
Если оно - обращу пристальное внимание
Да, это такой подход! Главное не усложнять, и сделать корректный интерпретатор, что б все блоки собирались в одну строку (по одной ветви), с которой уже будет работать программа на MQL.
Да, это такой подход! Главное не усложнять, и сделать корректный интерпретатор, что б все блоки собирались в одну строку (по одной ветви), с которой уже будет работать программа на MQL.
вряд-ли я буду усложнять, то есть например сильно ковыряться в коде bwise.
Максимум - адаптирую чтоб его можно было использовать вместе с ATcl (то есть передавать данные из Mql на его входы) и принимать выходы.
Придётся конечно писать какой-то HowTo "как нарисовать квадратики и прицепить к эксперту". И плотно попрактиваться в английском при общении с автором(авторами) :-)