Пишем статью "Как составить Техническое задание на торгового робота" - страница 6

 
Aleksey Vyazmikin:

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

Просто надо учитывать это обстоятельство, и договариваться о разумных сроках.


Тех.задание - это такая штука, исполнение которого может объективно проверить третье лицо. Иначе это задание для школьного сочинения " про лето"


Про добро

 
Maxim Kuznetsov:


Тех.задание - это такая штука, исполнение которого может объективно проверить третье лицо. Иначе это задание для школьного сочинения " про лето"

За сочинение 5 - отличное воображение!

Но, что-то Вы перескочили с темы - я же утверждаю, что тестирование обязательно на реальных данных и Заказчик должен об этом знать, а исполнитель должен это учитывать в заявленных сроках.

 
Aleksey Vyazmikin:

За сочинение 5 - отличное воображение!

Но, что-то Вы перескочили с темы - я же утверждаю, что тестирование обязательно на реальных данных и Заказчик должен об этом знать, а исполнитель должен это учитывать в заявленных сроках.

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

За чей счёт праздник жизни ? и как вы все совместно удостоверитесь что задание выполнено ??

 
Maxim Kuznetsov:

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

За чей счёт праздник жизни ? и как вы все совместно удостоверитесь что задание выполнено ??

Советник должен писать логи, есть служебные логи терминала, исходя из этого можно проверить работу с ордерами и логику советника.

В чём проблема? Да, я реально сталкивался с рабочим советником в тестере, который не работал на реальном счете надлежащим образом, да Исполнитель утверждал, что всё так и должно быть, арбитраж отмалчивался, пока я не вытащил кусок кода и ткнул Исполнителя в него носом. Потратил кучу своего времени и нервов на некомпетентность Исполнителя, поэтому не вижу проблем, если Исполнитель подождет своего вознаграждения.

Или, может я что-то не понимаю, приведите более развернуто Ваши доводы для предметного обсуждения.

 
Maxim Kuznetsov:

А зачем всё это ?

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

Заказчик должен сказать (письменно, не видео или скайп):

- я использую вот эти вот индикаторы и скрипты

- придерживаюсь вот таких вот правил

- наторговал на более-менее официальной всем доступной деме за неделю-месяц-год вот столько. А вот в другой период вот так. Всё опционально подкреплено копированием на центовый счёт.

- нужно автоматизировать

Исполнитель оформляет и согласует ТЗ (в виде понятным обеим сторонам),пишет сову и если в тестере всё более-менее сошлось с означенным периодом, значит советник сделан.

Варианты - надо проверять на деме/цент-реале/прочее, ето уже long-term-cooperation и это выходит за рамки фриланса

Я во фрилансе по многим причинам не участвую, но написание ТЗ стоит денег и часто немалых. А, как я смотрю, средний чек во фрилансе $50. B что, из этой и так жалкой суммы еще выцарапать на оплату Исполнителю за написание ТЗ? Или он будет писать за бесплатно?

 

Еще немного добавил в статью - дописал раздел  Что должно быть в Техническом задании и написал Где взять Техническое Задание, если сам не можешь составить

Что нужно для заказа торгового робота

Торговые роботы - это программы, которые выполняют заложенные в них алгоритмы. Алгоритмы представляют из себя набор действий, которые необходимо выполнить в случае появления того или иного события. Например, самое часто встречающаяся задача в алготрейдинге - определение события "Новый бар", при появлении которого робот проверяет появление торговых сигналов и выполняет по ним необходимые действия.

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

Вам необязательно провести за монитором торгового терминала годы, чтобы разработать свою торговую стратегию. Сейчас в интернете и в книгах опубликованы сотни проверенных идей, которые вы можете попробовать. И даже если вы не совсем уверены в своих силах по программированию, это не является преградой. Сервис Фриланс поможет вам найти подходящего разработчика и безопасно оплатить выполненную работу.

Но прежде чем бросаться в увлекательную стихию алготрейдинга, мы рекомендуем вам прочитать полезные статьи по теме:

Почему важно иметь хорошее Техническое Задание

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

Описание торговой стратегии необходимо оформить в виде Технического Задания. И чем лучше и четче оно будет составлено, тем меньше будет недопонимания между вами, как заказчиком, и программистом, как исполнителем вашего Заказа.

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

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

Выработайте в себе навыки бюрократа, который любит раскладывать всё по полочкам. Вам это обязательно пригодится. Да и программисты любят четкие проработанные заказы.

Что должно быть в Техническом задании

Торговая идея

Для быстрого ввода в суть торговой стратегии посвятите первый абзац вашего Технического заказа идеи/гипотезе, которая в ней заложена. Например: "Если цена два раза подходит к уровню сопротивления и каждый раз откатывается, то в третий раз она его, как правило, пробивает".  Тут можно приложить график с нанесенными линиями сопротивления/поддержки, наложенными индикаторами и подписями, которые иллюстрируют ситуацию. Для описания идеи не требуется давать конкретные цифры или алгоритмы расчета - на данном этапе не требуется объяснять каким образом мы определяем:

  • уровень сопротивления,
  • пробой уровня,
  • понятие "как правило".

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

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

Термины

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

Торговые Сигналы

Далее вы уже готовы составить третий самый важный раздел - Торговые Сигналы - в котором опиывается при каких условиях, состоянии рынка, показаниях индикаторов происходит покупка. Для описания каждого условия,  необходимого для генерации сигнала на покупку, необходимо выделить числовой параметр, от которого зависит появление сигнала. Например, для скользящей средней это будет тип сглаживания и период. Эти важные параметры выносятся во входные параметры будущего советника. Опишите отдельно условие для продажи, даже если они просто противоположны условиям для покупки - иногда вылезают тонкости, которые программист может понять не так как вы. Например, для покупки задано условие "Показатель>0" - что написать для продажи? "Показатель<0" или "Показатель<=0"?

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

Скриншоты и блок-схемы

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

Время жизни сигналов/ордеров/позиций

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

Сопровождение открытых позиций и отложенных ордеров

Если ваша торговая стратегия подразумевает требует установку уровней StopLoss и TakeProfit, дайте алгоритм расчета. При необходимости гибкого подтягивания/передвижения этих уровней также необходимо описать условия для проведения таких операций. Модификацию уровней SL/TP можно делать как на открытии нового бара, так и на каждом тике. Необходимо явно указать этот момент в Техническом задании и понимать разницу в режимах тестирования торговый стратегий. Рекомендуем ознакомиться со статьей Тестирование торговых стратегий на реальных тиках.

Где взять Техническое Задание, если сам не можешь составить

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

Исполнитель в итоге может на свой страх и риск довести работу до конца и выдать Заказчику торгового робота. Но в этом случае помимо потери времени на обсуждение каждого нового вопроса в неясном ТЗ есть также и вероятность попадания работы в Арбитраж. Потому что при приемке и проверке такой работы Заказчик вдруг обнаруживает, что сделки совершаются не так как он предполагал, но не смог описать. И конечно же, он обвинит в этом случае Исполнителя, что тот нарушил некие пункты Технического задания и неверно запрограммировал робота. Арбитраж в таких случаях быстро понимает разницу в компетенции обеих сторон выносит свое решение, основываясь на приложенном к заказу Техническом Задании. Согласно Правил Фриланса, никакая переписка на стороне до и во время выполнения Заказа в расчет не принимаются:

При рассмотрении предмета спора в Арбитраже основанием для принятия решения служит только Техническое Задание.

В жизни возможен и такой вариант: у вас есть строгие торговые правила, но по каким-то причинам вы не можете самостоятельно составить Техническое Задание. Например, не уверены как правильно описать некоторые вещи или требуется помощь специалиста в математике, нейросетях, машинном обучении, программировании и так далее. В этом случае вы можете заказать создание Технического задания также во Фрилансе, для этого подойдут категории "Консультация по программированию" или "Другое".

Выберите одну из этих двух категорий, назовите "Создание ТЗ для заказа торгового робота" и укажите начальную стоимость работы, как вы это представляете. Опытный разработчик торговых систем поможет вам правильно сформулировать Правила вашей стратегии, так чтобы они были понятны другому программисту. При этом вы должны уметь работать с графиками, индикаторами и графическим объектами, чтобы показать с помощью скриншотов сетапы ваших торговых сигналов.

Программист разберется в вашей торговой системе и поможет составить вам описание торгового алгоритма, если это возможно. Если какие-то понятия вы не можете сформулировать самостоятельно (например, "импульс" или "отскок от уровня"), он может дать вам готовые идеи исходя из своего опыта. Как правило, любую ситуацию на рынке можно описать логически (а потом и программно) с какой-то вольностью интерпретации. И эту вариацию можно всегда выразить неким параметром, который вы потом будет оптимизировать в своем советнике.

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

Какие термины использовать

... лучше описать термины, в которых не уверены, чтобы понимать друг друга

    В самом ТЗ термины выделять жирным - пусть исполнитель обратит на них внимание и задаст вопрос, если что непонятно

    Нельзя отсылать на другие источники (сайты/книги и т.д.) Всё должно быть описано здесь и сейчас, никаких "потом по скайпу объясню"

Что писать в описании работы во Фрилансе

... нужна только общая формулировка - трендовая, контртредовая. на пробитие уровней (как определяются уровни вкратце), есть ли индикаторы/Price Action/использование тиков

Общая идея торговой стратегии

... торгуем по тренду, тренд определяем так-то, входим на откате, откат опредеялем так-то, не торгуем вечером и утром

Описание сетапа на ожидание Сигнала

... необходимо формирование флета с последующим пробитием/ или ждем завершения европейской сессии и принимаем сигналы только в направлении её движения

Описание Сигнала

... Технические параметры описания - тренда/отката/пробоя - всё формализовано строго

    Лучше Сигналы Buy и Sell сначала отлаживать отдельно

   Лучше будет если советник выставляет метки/объекты сигналов на графике

   Лучше если будут отдельно сделаны индикаторы сигналов

Время жизни Сигнала

... как долго имеет силу сигнал - в барах / часах / до конца сессии/дня

Выставление ордеров и открытие позиций

... есть ли какие особенности, например, не ставим сразу SL/TP ,

   или  сколько попыток делаем для входа в рынок,

  или    выставление разных oredermagic/ordercomment в зависимости от времени/сетапа/паттерна

 что-то еще

Сопровождение торговой позиции/ордера

... есть трейлинг стоп или нет

    когда включаем TS

    двигаем ли отложенные ордера за ценой/против цены

    отслеживаем текущую прибыль/убыток по открытой позиции

    еще что-то

Отмена ордера и закрытие позиции

... удаляем ордера по времени/кол-ву баров/окончанию периода/ появлению противоположного сигнала/ пропаже сетапа

... закрываем позицию по времени/кол-ву баров/окончанию периода/ накопленной прибыли/ появлению противоположного сигнала/сетапа

     еще что-то

Расчет лота для выставления ордера

.... от баланса

      фиксированный

      от накопленной прибыли

      по результатам последних N трейдов

      от риска (диистанции SL)

      еще что-то

Обработка торговых ошибок и состояния окружения

... подробный логи при отправке торговых приказов

     обработка перезапуска терминала/коннекта/сервера

      обратная связь через мессенджеры/email

Разница между торговлей на открытии бара и внутри бара

...  сигналы могут пропадать и появляться в течение жизни бара

Тиковые/скальперские стратегии

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

    Любое ухудшение условий может убить стратегию

Сетки, мартингейлы, усреднения и обратная сторона этих улучшений

... Что это такое, почему они популярны и насколько могут помочь временно вытянуть стратегию.  Риск увеличивается, хотя может удлинить жизнь плохой стратегии

На что обратить внимание при выборе исполнителя

... Вопросы по существу

    Не умничает, чтобы произвести впечатление

    Четко называет сроки

    Указывает сразу непоянтные места в ТЗ, а не через 2 месяца обсуждения

    Хороший программист ценит своё и ваше время - поэтому любит проработанное непротиворечивое ТЗ

Что не может сделать за вас программист

  Превратить убыточную стратегию в зарабатывающего робота

  Провести оптимизацию и выявить все недостатки

   Написать программу без ошибок - они все равно будут.  Найти их и описать понятным образом - ваша задача.


 
Rashid Umarov:

...

Скриншоты и блок-схемы

Для создания скриншотов и блок-схем в интернете полно бесплатных удобных программ. ...

Блок-схемы -- самая бесполезная, времязатратная и практически нереализуемая часть ТЗ.

Чтобы это понять -- можно провести маленький и предельно простой эксперимент -- разработчикам сервиса Фриланс поставить задачу: "Составить блок-схему на отрисовку индикатора МА" -- а затем оценить по двум критериям: 1) правильность и 2) понятность.

 
Andrey F. Zelinsky:

Блок-схемы -- самая бесполезная и практически нереализуемая часть ТЗ.

Чтобы это понять -- можно провести маленький и предельно простой эксперимент -- разработчикам сервиса Фриланс поставить задачу: "Составить блок-схему на отрисовку индикатора МА" -- а затем оценить по двум критериям: 1) правильность и 2) понятность.

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

 
Aleksey Vyazmikin:

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

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

А затем это всё проверить с точки зрения программной реализации -- иначе зачем тогда составлять блок-схему?

Такому заказчику нельзя будет показывать фамилию разработчика не только до заключения соглашения, но и после его выполнения (если оно с таким начальным уровнем заказчика вообще состоится когда-нибудь) -- "кто умножает познания, умножает скорбь" (Екк. 1:17-18)


p.s. Повторюсь. Проверить мой тезис о практической бесполезности составления блок-схемы (любой) -- предельно просто.

Достаточно поставить задачу перед разработчиками сервиса Фриланс -- написать блок-схему на индикатор МА.

Тезис №2 -- справится с задачей не более 5-10%.


p.s.2 Вопрос 1 -- на уроках информатики (в школе или в институте) -- кто (какой процент) считал составление блок-схемы нужным и полезным занятием?

Вопрос 2 -- кто (какой процент) за свою практическую деятельность составили блок-схему сложнее, например, "поиска максимального элемента в N-мерном массиве".

 
Andrey F. Zelinsky:

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

А затем это всё проверить с точки зрения программной реализации -- иначе зачем тогда составлять блок-схему?

Такому заказчику нельзя будет показывать фамилию разработчика не только до заключения соглашения, но и после его выполнения (если оно с таким начальным уровнем заказчика вообще состоится когда-нибудь) -- "кто умножает познания, умножает скорбь" (Екк. 1:17-18)

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

Советник - это не законченный продукт, он всегда будет подлежать доработки, пока у заказчика будет интерес к своей идеи, поэтому этому Заказчику лучше сразу позаботится о возможных доработках, а для этого код должен быть определенной структуры. До меня это в своё время дошло после 5, наверное, заказанного советника во фрилансе. Высший пилотаж идиотизма, это когда логику принятия торговых решения запихивают в торговые функции - не удивительно, что такой советник потом подлежит не доработки, а переработке, особенно если Исполнитель будет уже другое лицо.

Причина обращения: