Подумал:
- хочу стабильно зарабатывающий алгоритм
- который работает только лимитниками
- усредняется на убыток
- поэтому редко сливает
- и часто зарабатывает по чуть-чуть
Придумал тупейшую схему.
Прогнал по графику визуально за 2 или 3 часа за 2012 год.
Записал все сделки в таблицу гугл докс (сначала написать эксель, но потом понял, что экселем я дано не пользуюсь).
Получил результат:)
Совершенно однозначно, что это не работает.
Какие мысли появились дальше?
вручную это тестировать невозможно.
надо искать инструменты, годные для автоматизации и тестирования.
Порыл инфу по смартлабику, составил статью финансового словаря:
тестирование торговых систем.
Было принято решение освоить программу
TSLab для целей тестирования.
Поставил программу. Не без геморра разобрался как подключить исторические данные к TSLab. Далее, тупо набрал TSLab в поиске Youtube и посмотрел тупо первый попавшийся вебинар:
http://youtu.be/fJ8rCxG9Vas
Параллельно с мужиком начал лабать блок-схему. Далее к мужику на середине вебинара интерес пропал, стало понятно, как всё делается. Всё непонятное смотрел в онлайн доке к TSLabу:
http://www.tslab.ru/docs/online/
Если честно, для меня стало откровением, насколько геморройно оказалось простейший алгоритм описать в строго формализованных формах. Например, как толково найти последний максимум на графике, который ты глазами вроде видишь, а как описать в формулах — не понимаешь:))))
Три дня **ли, и вот он первый мой алгорим, точь в точь, как тот, что пришел мне в голову. Я специально по ходу его никак не менял, потому что мне хотелось тупо запрограммить ту хрень, которая пришла мне в голову. Программировать естественно ни разу не пришлось. Все еще проще чем в экселе.
На самом деле, конечно софт TSLab меня порадовал. Для начинающего — самое то. Все можно самостоятельно освоить. Максимально просто. Лично я даже не представляю, как еще бы я мог это сделать за такое относительно короткое время без всякой квалификации.
Ну и очевидной результат суперсистемы:))
Это без оптимизации параметров, без ничего. Просто голый результат. Результат, который мне принес удовлетворение, потому что я сделал что-то новое для себя.
Выводы:
- теперь я могу проверить результативность более менее несложной системы
- тестируя систему №1, родилась масса идей, как ее недостатки обернуть в прибыль:)
- теперь можно заниматься интересными стат. исследованиями, а не тупым пялением в график с фьючерсом РТС.
- 2 шаг — простестировать собственную торговую систему на исторических данных в жестко формализованном виде. Наверняка ведь она не будет зарабатывать 70% в месяц:)
На все про все на освоение изложенного выше и на сопутствующую хрень у меня ушла где-то неделя (часа по 2 в день).
Пока все делал, записывал свои действия, встречающиеся проблемы и нахождение их решения. Документация заняла 8 страниц 9 шрифтом.
Удачи в алго-поприще!
Изиланг на устаревшей Омеге позволит сделать начинающему алготрадеру любую хрень кроме портфельного тестирования, HFT итд.
«Никогда не говори НИКОГДА» ;) еще одно лично проверенное правило жизни :)
ответ банальный — фракталы =)
Всё уже давно придумано. См. индикатор фрактальных экстр. и мин.
Лично TSlab в глаза не видел, но этот индюк штука базовая. Должен быть.
Сам выбрал WLD (только начал). Но с программированием дружу давно, а вот кубики крашеные раскладывать задолбался бы. Это ж сколько их получится! =)
И по поводу последнего максимума — минимума, есть индикатор ZigZag.
Метатрейдер пробовал поначалу, но в нём тесно. Очень убогий макроязык.
Омега — это чудо из 2000-го года (не развивается).
Метасток — вообще прошлый век! Жуть.
S# — слишком муторно для начала. Хочется сразу что-то получить на выходе =)
В нем нет блок-схем, но там свой визуальный редактор есть
1. я скачал ТС Лаб с сайта. Разве у меня не посл версия? Или тслаб 1.2 это более ранняя версия?
2. Я не допер как рисовать прямоугольник в редакторе, чтобы выделить функционал в отдельный блок.
При кажущейся простоте программы она всё же требует некоторого навыка в работе. лучше пройти обучение www.tslab.ru/soft/learning/ или попробовать научиться самому по видеоматериалам www.tslab.ru/soft/video/ (для старой версии).
Предлагаю термины в словарь — кубокодер (по известной аналогии) и кубиквант.
using System.Collections.Generic;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.Script.Optimization;
using TSLab.Script.Helpers;
namespace TSLab.Samples
{
public class HiLoSample: IExternalScript
{
// Параметры оптимизации для длинных позиций задаются при помощи типа OptimProperty.
public OptimProperty HighPeriod = new OptimProperty(20, 10, 100, 5);
public OptimProperty LowPeriod = new OptimProperty(10, 10, 100, 5);
// Параметры оптимизации для коротких позиций так же задаются при помощи типа OptimProperty.
public OptimProperty Low2Period = new OptimProperty(20, 10, 100, 5);
public OptimProperty High2Period = new OptimProperty(10, 10, 100, 5);
public virtual void Execute(IContext ctx, ISecurity source)
{
// Вычисляем максимумы и минимумы.
// Используем GetData для кеширования данных и ускорения оптимизация.
// При неиспользовании кэша увеличивается объем обрабатываемых данных, что ведет к сильному замедлению оптимизации.
// Следует учесть, что необходимо перечислить абсолютно все изменяемые переменные используемые в вычислениях.
// Не соблюдение этого правила приведет к некорректной работе и результатам оптимизации.
IListhigh = ctx.GetData(«Highest», new[] {HighPeriod.ToString()},
delegate { return Series.Highest(source.HighPrices, HighPeriod); });
IListlow = ctx.GetData(«Lowest», new[] {LowPeriod.ToString()},
delegate { return Series.Lowest(source.HighPrices, LowPeriod); });
IListhigh2 = ctx.GetData(«Highest», new[] {High2Period.ToString()},
delegate { return Series.Highest(source.HighPrices, High2Period); });
IListlow2 = ctx.GetData(«Lowest», new[] {Low2Period.ToString()},
delegate { return Series.Lowest(source.HighPrices, Low2Period); });
// Берем основную панель (Pane).
IPane mainPane = ctx.First;
// Отрисовка графиков.
mainPane.AddList(string.Format(«High({0}) [{1}]», HighPeriod, source.Symbol), high, ListStyles.LINE,
0x00ff00, LineStyles.SOLID, PaneSides.RIGHT);
mainPane.AddList(string.Format(«High2({0}) [{1}]», High2Period, source.Symbol), high2, ListStyles.LINE,
0x00ff00, LineStyles.DASH, PaneSides.RIGHT);
mainPane.AddList(string.Format(«Low({0}) [{1}]», LowPeriod, source.Symbol), low, ListStyles.LINE,
0xff0000, LineStyles.SOLID, PaneSides.RIGHT);
mainPane.AddList(string.Format(«Low2({0}) [{1}]», Low2Period, source.Symbol), low2, ListStyles.LINE,
0xff0000, LineStyles.DASH, PaneSides.RIGHT);
// =================================================
// Торговля.
int barsCount = source.Bars.Count;
for (int i = 0; (i < barsCount); i++)
{
IPosition le = source.Positions.GetLastActiveForSignal(«LE»);
if (le == null)
{
// Если нет активных длинных позиций, выдаем условный ордер на создание новой позиции.
source.Positions.BuyIfGreater(i + 1, 1, high[i], «LE»);
}
else
{
le.CloseAtStop(i + 1, low[i], «LX»);
}
IPosition se = source.Positions.GetLastActiveForSignal(«SE»);
if (se == null)
{
// Если нет активных коротких позиций, выдаем условный ордер на создание новой позиции.
source.Positions.SellIfLess(i + 1, 1, low2[i], «SE»);
}
else
{
se.CloseAtStop(i + 1, high2[i], «SX»);
}
}
}
}
}
или 9-11 кубиков ))
10 строчками и не пахнет )), не убедили
Торговой логики тут:
4 оптимизационных параметра
4 переменных
4 строчки сигналов
В амиброкере это займет если говорить о торговой логике строк этак 8 если писать размашисто и читабельно.
Хотя код ТСЛАб доставил, оно вообще доставляет во всех сишарповых но это пока безусловный чемпион в категории минимум смысла на строку.
Код Ами в хорошем стиле
Long_entry=Ref(HHV(H,Optimize(«lb»,10,10,100,10)),-1);
Long_exit=Ref(LLV(L,Optimize(«lb»,10,10,100,10)),-1);
short_entry=Ref(LLV(L,Optimize(«lb»,10,10,100,10)),-1);
short_exit=Ref(HHV(H,Optimize(«lb»,10,10,100,10)),-1);
Buy=H>Long_entry;
Sell=L<Long_exit;
Short=L<Short_entry;
Cover=H>Short_exit;
BuyPrice=Long_entry;
SellPrice=Long_exit;
ShortPrice=Short_entry;
CoverPrice=Short_exit;
Причем мы вальяжно описываем даже цены по которым исполняется ордер.
Если так нравится именно побарный цикл с сишарпом то посмотрите WL что ли, на меня отечественные поделки (тслаб трейдматик) произвели плохое впечатление. Таи и коммьюнити большое англоязычное и учебник.
на тслаб уже 1.5 года, работает стабильно, месяцами можно не заходить на сервер и всё будет работать, сама запускается, отключается, перезапускается, русскоязычная оперативная поддержка…
другой уровень в общем, имхо
Ну если оно работает так хорошо то может и есть смысл. Но рисечить на этом это мне кажется несколько странно.
Впрочем имхо как обычно.
Вы считаете бесплатность и русскоязычный интерфейс достоинством? Первое без комментариев в стране где все сидят на нелегальных операционках, второе как бы не достоинство так как русификации кривые, минимальный языковой багаж надо иметь.
Насчёт русификации западенских программ не знаю ничего, но TSLab это отечественный продукт и соответственно всё на русском. удобно.
А кодом — все просто и понятно. Красота.
«Пробовал?» — «НЕ! Но хрееень!»
Еще пару заходов на тот ресурс или ему подобные и смарт-лаб недосчитается вискитрейдеров и пары аналитегов с первой страницы, включая мальчиков в красных кепачках (на арендованных феррарях)
Так что, бро, ты осторожнее по интернету броди — тутошние бацаны с бабочками могут не понять :-)
(без обид — настроение тяпничное)
>хочу стабильно зарабатывающий алгоритм
Цель достойная. Учитывайте, что путь к ней занимает порядка 2-5 лет (если делать всё самому и с нуля).
Сам до ТСЛАБ не добрался, пока не вижу смысла.
Не знаю в чем лучше или хуже, но легче точно.
Я тестировала идеи в экселе по столбцам:
1. Условие для лонга, 0 или цена покупки.
2. Условие для шорта, 0 или цена продажи.
Дополнительно условия для закрытия, если они отличаются.
3. Если предыдущий 0 и «1» <> 0, тогда 1.
Если предыдущий 1 и «2» <> 0, тогда 0, иначе равно предыдущему.
4 наоборот для шорта.
Самое сложное было описать кривую капитала. Т.е. там такое четырёхэтажное условие, в которое сразу записываешь и проскальзывание и комиссию, если 3,4 меняют значение, но и изменение прибыли/убытка разное в случае, если позиция не меняется, если происходит вход, и если выход разные, иначе 0.
Протаскиваешь спокойненько всю таблицу этими формулами и на последние три столбца (лонг, шорт, оба) делаешь график.
Может, я и не очень понятно объяснила, но по крайней мере это только шесть-семь формул, и менять потом надо только первые два для изменения условий. Я там и лесенку делала, это значительно утяжеляет формулы, но всё реально )))
— Вариант 1. И тут, ура! цена пошла в гору. Слизываем с рынка жирный профит))
— Вариант 2. И тут @ля((( цена опять пошла вниз уже основательно. Срабатывает стоп и фиксируем жирного лося.
Если даже Тимофей… начал снова испытывать контртрендовые стратегии с усреднениями убыточных поз :) Толи еще в переди…