Алготрейдинг на языке Pascal (точнее, PascalABC.NET)

 

Привет всем.

Подозреваю, что многие люди не знают языка mql5, но имеют желание автоматизировать свою торговлю.

Больше того, нет желания учить mql5, но преимущества алготрейдинга очевидны. Некоторое время назад решил для себя эту проблему покупкой тут в разделе фриланс универсального советника.

Он представляет собой код, реализующий всю "торговую" часть, то есть открытие/закрытие сделок.

При этом вся логика торговли (обработка данных, математика) в нём отсутствует, а выполнена в виде отдельного исполняемого (executable) файла.

Примерно год эксплуатации этого решения доказал его жизнеспособность. Файлы .exe лично я делаю с использованием новой инкарнации языка Pascal, простой, приятной, российской: http://pascalabc.net

Очень на самом деле просто и удобно. Сначала реализовываешь алгоритм в Mathcad, потом повторяешь его в PascalABC.NET, следя за тем, чтобы результаты вычислений совпадали.

Советник каждые 5 минут (или сколько надо) сохраняет котировки в файл, запускает алгоритмическое ядро (файл .exe), ждет задаваемое количество секунд, и читает файл торговых указаний.

Алгоритмическое ядро читает файл котировок, делает математические вычисления, принимает решение, и пишет свои указания в файл (который затем через секунды прочитается советником).

Для смены логики торговли достаточно тупо заменить один файл .exe на другой.

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

(например, не создание графического интерфейса, а, собственно, организацию вычислений).

Уверен, что желающих так торговать довольно много. Готов поделиться советником (в открытом коде), и продемонстрировать тут в ветке реализацию простых идей (предложенных участниками форума тут же в ветке) в виде исходного кода на PascalABC.NET

(скомпилировать - дело нажатия пары кнопок, любой желающий сможет сделать это сам, получив на выходе файл .exe, пригодный к осуществлению алгоритмического трейдинга совместно с описанным универсальным советником).


P.S. Советник претерпел больше десятка доработок, имеет некоторые полезные функции, например пишет кроме котировок в отдельный файл текущую ситуацию по сделкам (какие висят в рынке, полную информацию по ним), имеет функцию закрытия всех сделок как вручную, так и по команде из файла торговых указаний, и т.д. и т.п. Файл алгоритмического ядра, в свою очередь, может не только осуществлять вычисления, но и вести лог результатов вычислений, и т.д. и т.п.

Фриланс-сервис на MQL5.com: Торговый робот, не имеющий алгоритмической части
Фриланс-сервис на MQL5.com: Торговый робот, не имеющий алгоритмической части
  • www.mql5.com
Назначение, состав и принцип работы робота торгового: Робот предназначается для автоматического совершения сделок в торговом терминале MetaTrader 4, и представляет собой «исполнительскую» часть механической торговой системы. Речь о следующем: планируемая к использованию торговая система видится состоящей из двух независимых частей...
 
mikhael1983isakov:

Привет всем.

Подозреваю, что многие люди не знают языка mql5, но имеют желание автоматизировать свою торговлю.

Больше того, нет желания учить mql5, но преимущества алготрейдинга очевидны. Некоторое время назад решил для себя эту проблему покупкой тут в разделе фриланс универсального советника.


Если Вы программируете на любом языке, то в освоении MQL5 нет никаких трудностей.

Программирование - это составление алгоритма работы программы из набора процедур и функций.

Так какая разница какой синтаксис процедур и функций:

Паскаль

function GetValue(const inpVal: integer): double;
begin
  result:= 0;
end;

MQL5

double GetValue(const int inpVAl)
{
  return(0);
}
 
В Codebase все то же самое, что вы предложили , бесплатно и тысячи вариантов
 

в Паскале проще (нагляднее/без-костылей) интерфейс чем в С++. Имеется в виду интерфейс который пропихивается через игольное ушко DLL.

MQL в принципе ближе к паскалю чем к C++.

Была бы современная статья про FPC и MT, с удовольствием почитал-бы и счёл полезной, в отличии от 10-ков последних.  Всё-таки путь к гигатоннам наработок Дельфи и компонент Лазаруса

 
prostotrader:

Если Вы программируете на любом языке, то в освоении MQL5 нет никаких трудностей.

Программирование - это составление алгоритма работы программы из набора процедур и функций.

Так какая разница какой синтаксис процедур и функций

Трудности, на мой взгляд, есть.

Во-первых, они сосредоточены в логике описания торговых действий. Как какую-то информацию получить с сервера, как какую-то информацию (хотя бы, банально, величины SL и TP) отправить на сервер, как обработать какие-то нештатные ситуации (ошибки).

В описанном мной подходе о всей этой mqlно-торговой части можно просто изначально забыть. Как будто её нет. И сосредоточиться на творчестве: на математике (алгоритмике) только.

Во-вторых, уверяю Вас, разница есть. Это, кстати, доказывается тем, что приведённый Вами код "на Паскаль" по моему мнению, неработоспособен.

Maxim Kuznetsov:

Была бы современная статья про FPC

Если я правильно понял, что FPC это какой-то фри паскаль (я такого и не знал), то ещё раз обращаю внимание на существование PascalABC.NET http://pascalabc.net
 
Vladimir Baskakov:
В Codebase все то же самое, что вы предложили , бесплатно и тысячи вариантов
Покажете хотя бы один?
 
mikhael1983isakov:
Покажете хотя бы один?

https://www.mql5.com/ru/search#!keyword=%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD&module=mql5_module_codebase

по сабжу сам не хотел с Delphi переезжать на MQL4 во времена своего первого знакомства с MQL

второе знакомство с MQL было намного позже и сначала за месяц изучил язык, затем начал писать по форумам на MQL

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

 

Очень на самом деле просто и удобно. Сначала реализовываешь алгоритм в Mathcad, потом повторяешь его в PascalABC.NET, следя за тем, чтобы результаты вычислений совпадали.

Советник каждые 5 минут (или сколько надо) сохраняет котировки в файл, запускает алгоритмическое ядро (файл .exe), ждет задаваемое количество секунд, и читает файл торговых указаний.

Алгоритмическое ядро читает файл котировок, делает математические вычисления, принимает решение, и пишет свои указания в файл (который затем через секунды прочитается советником).

На самом деле  такое решение называется "через Ж@У" (не подумайте про жабу, хотя она очевидно там тоже есть) :-)

 

По этой ссылке нет ничего, что хотя бы отдалённо имело бы отношение к обсуждаемому вопросу.


Igor Makanu:

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

Не поверите: мне в этих целях более чем достаточно Маткада.

 
Maxim Kuznetsov:

На самом деле  такое решение называется "через Ж@У" (не подумайте про жабу, хотя она очевидно там тоже есть) :-)

Отчасти, да. Но: 1. Работает. 2. Позволяет легко, по щелчку пальцами, за считанные часы, устроить себе алготрейдинг целой куче людей, совсем не знакомых с mql5, и не знающих с какой стороны даже подойти к mql5.

Повторюсь, меня такое решение полностью устраивает, уже на протяжении года. Жабы же никакой нет и в помине. Есть только желание, чтобы алгоритмическая часть была: 1. полностью прозрачной и понятной, и 2. непередаваемой третьим лицам (разработчикам советников).

 
mikhael1983isakov:

По этой ссылке нет ничего, что хотя бы отдалённо имело бы отношение к обсуждаемому вопросу.

тогда поиском "обмен данными"

в общем все уже лет как 10 в открытом доступе, даже статей как написать такой код с десяток точно должно набраться


а обсуждаем то что? Вам написали под заказ, что то и Вы, что то теперь вычисляете в стронем приложении и обмениваетесь данными через файл с МТ? )))


mikhael1983isakov:

Не поверите: мне в этих целях более чем достаточно Маткада. 

увы, я поверю, ибо сам так считал пока не познакомился с возможностями тестера стратегий МТ.... нет смысла объяснять преимущества если Вы не собираетесь писать на MQL