Блог им. boton
На этом сайте много статей про торговлю роботами, есть специальный раздел по алгоритмической торговле. Регулярно выкладываются какие-то программы на каких-то языках, графики с какими-то тестами и какая-то статистика по каким-то событиям. Мой предыдущий пост показал, что существует огромная армия людей, которые хотели бы познакомиться с темой алготорговли, но вообще не знают, с какой стороны к ней подойти. Первую статью я постарался написать весело и, конечно, рассчитывал, что будет какой-то отклик, но совершенно не ожидал, что аж 33 человека посчитают пост исключительно полезным и добавят его к себе в Избранное. Для просто веселенького чтива многовато.
Еще более удивительно то, что в статье не было вообще ничего сколь-нибудь по-настоящему ценного. Если убрать беллетристику, то я всего лишь указал, где скачать «программку» и как ее запустить. В общем, очевидно, что нужно рассказывать людям простыми словами самые базовые вещи, оттягивая, насколько возможно, время перехода к программированию. Некоторое погружение позволит сомневающимся лучше понять, стоит в эту алгоритмическую торговлю вообще соваться или нет.
Лирическое отступление о самых базовых вещах… Не поленюсь сообщить, как добавлять статьи к себе в Избранное и где их потом находить. Ведь кто-то, наверно, даже этого сделать не смог. Добавлять — по маленькой стрелочке рядом с заголовком статьи. Находить — в пункте меню Избранное. У браузера тоже есть свое Избранное, закладки. Туда можно добавлять вообще любые сайты, а не только статьи со Смартлаба.
На самом деле программирование — это не сложно. Это просто долго. Это требует примерно столько же усилий, как обучение игре на фортепьяно или изучение английского языка. При этом нужно понимать, что пользоваться новыми навыками вы сможете много раньше, чем достигнете какого-то «приемлемого» уровня. Для обыденного общения на английском туристу достаточно 2-3 тыс. слов. Носителю языка достаточно 15-35 тыс. слов для общения на любые темы. А всего в английском 150-200 тыс. слов по разным оценкам, т. е. большинство слов английского языка самим англичанам нафиг не нужны, хотя какая-то часть из них и лежит в пассиве. Вы за последние 10 лет хоть раз использовали в своей речи слово «обыденное»? Вот и я сегодня впервые :-) Вывод: понимать код роботов вы сможете много раньше, чем научитесь программировать сами. А пока попробуем использовать роботов даже без понимания их кода.
Итак, мы скачали платформу OsEngine и смогли запустить ее. Ткнув на шестеренке внизу черного окна мы смогли переключить ее на русский язык. Что там где, что нам нужно, а что не очень?
Я использую не все 7 подразделов. Только эти:
Дата — позволяет скачивать исторические данные из прошлого. Такие данные нужны для тестирования роботов. Роботов не запускают сразу на рынок, чтоб они там сделки совершали. Роботов после создания сначала тестируют и оптимизируют на исторических данных по-быстрому скармливая им историю за предыдущие дни, недели или годы. Обманутый робот якобы совершает там какие-то сделки (понарошку), а разработчик потом смотрит, заработал бы что-нибудь робот, если бы вся эта торговля происходила на самом деле. Далеко не все роботы зарабатывают. И проверяют это как раз тестированием, не рискуя своими деньгами.
Тестер — позволяет проверить робота на исторических данных, которые мы скачали ранее. Именно этот раздел вы будете использовать в ближайшее время чаще всего. Начинающим вообще пока не нужны никакие другие разделы. Скачали данные — скормили их роботу в Тестере, оценили результат.
Оптимизатор — позволяет подобрать наилучшие настройки для выбранного зарабатывающего робота, чтоб робот не просто заработал, а заработал максимально возможное количество денег, которое только способен заработать именно этот робот на своем алгоритме. Оптимизатором вы будете пользоваться в отдаленной перспективе, когда в Тестере вам станет все понятно и скучно.
Роботы — это запуск роботов по-настоящему, по-взрослому. Не на исторических данных, а в условиях неопределенности настоящего рынка. Если робот зарабатывал на тестах, он должен зарабатывать и в реальных условиях, но бывают и исключения, когда тестирование и оптимизация были проведены с грубыми ошибками. В этом разделе начинающим пока делать нечего. Раньше тестера и оптимизатора совать свои деньги куда-то глупо. Вы наверняка их просто потеряете.
Вернуться обратно в общее окошко со всеми модулями из выбранного модуля (Дата или Тестер) вы не сможете. Нужно выйти из программы и запустить ее заново. Это несколько неудобно, но так уж исторически сложилось.
Сейчас вам нужно найти папочку doc в директории OsEngine-master и изучить ее содержимое. Там есть дополнительная информация по упомянутым мной и другим модулям.
Я мощности продаю в MT5 для того, чтобы тестеры стратегии за денюжку использовали мой процессор для расчета бек теста. И вот сидишь, работаешь, а тут компьютер просто наглухо виснет и в конце дня денежка падает, чуть больше, чем обычно.
Так вот запрограммировать можно качественно и такого не будет и тесты будут быстро бегать. А можно не качественно, чтобы вот так вот с тяжестью проходило.
Это простой банальный пример, где может наказываться рублем некачественный подход в программировании.
тесты иногда много ресурсов отнимают, когда большое облако параметров обсчитываешь. При чем тут «качество» программирования? Можно наверное и заплатить за аренду мощностей. Я на своем сервере все считаю, потому что у меня файловые операции, которые не расшарить на других пользователей (точнее наверное расшарить, но мне этого не нужно). Так вот тест в среднем идет всю ночь.
А то, что он бектестит это один раз на оптимизации всю ночь, так я сплю в это время.
давай, интересно. Может быть я чего-то не знаю? А я точно много чего не знаю :)
доброе утро. Я сегодня проснулся и решил, что статейку накидаю. Так что сегодня я тебе не отвечу. Более тщательно подготовлю материал )
спасибо, будет интересно почитать. Статья лучше, чем ответ :)
Стратегия: Если Low>MA – покупаем, если MA>High – продаем» с стоп-лоссом и тейк-профитом.
Программа:
Comission=0.035;
SetOption( «CommissionAmount», Comission); /* commissions величина */
FixedDollarAmount = 100000;
PositionSize=FixedDollarAmount;
SetOption( «CommissionMode», 1); /* set commissions в процентах от трейда */
SetOption( «initialequity», FixedDollarAmount); /* starting capital */
SetOption( «MaxOpenPositions», 1);
SetOption( «AccountMargin», 100);
//~~~~~~~~~~~~~~~~~
y1=MA(C,500);
Buy=IIf(L>y1,1,0);
Sell=IIf(y1>H,1,0);
Buy = ExRem( Buy, Sell ); Sell = ExRem( Sell, Buy );
Cover=Buy; Short=Sell;
ApplyStop(stopTypeLoss, stopModePercent,0.75, 1) ;
ApplyStop(stopTypeProfit, stopModePercent,6,1) ;
Plot(y1,»y1?,colorRed,styleBar|styleNoLine);