Начну издалека, я не тороплюсь, у меня выходной)). В 2009 году устроился я на первое своё место работы и … собственно, работал. И вроде всё не плохо и вроде деньги платят и вроде было повышение после года работы и вроде полу-руководящая должность. Но что-то не то. Душа рвалась в высь. Все эти люди вокруг, которые в 17:00 вставали и дружно уходили, всё это нытьё про низкую з.п. и неинтересную работу. У меня периодически возникали словесные баттлы с коллегами на тему: может ли работа приносить удовольствие. Против меня как молодого специалиста применялся железобетонный аргумент «ты ещё молодой, зеленый, пороха не нюхал, жизнь она не сахар, работа не праздник». И на фоне нарастающего несогласия с системой, с необходимостью приходить к конкретному времени, необходимостью прикладывать пропуск при проходе на работу и с, на фоне моего категорического неприятия таких вещей как «памятная серебряная ложечка за выслугу 15 лет в компании» у меня начинается увлечение финансовыми рынками. Если начинать прям совсем с начала, то это был даже не форекс, это были…webmoney, мне сразу понравилась идея чисто с компа, ни куда не перемещаясь, ни с кем не общаясь, зарабатывать деньги. Начинал я с тамошнего обменного сервиса, свои небольшие деньги гонял туда сюда, если привести аналогию с биржей, то вставал в стакан и ждал пока исполнят, потом переворачивался. Побаловался так немного. Идея понравилась.
Несмотря на то, что некоторые меня знают как человека рекламирующего и рекомендующего MT5 для фортс, в очередной раз накипело. Хочется собрать отзывы в кучу и попытаться обратить внимание метаквотсов на них. Главное, в погоне за светлым будущим — сохранить конструктивность :)
Просьба позвать Метаквотсов в ветку и вывести на главную, не плюсиков ради, а результата для.
Главная оговорка: я думаю, что главным врагом [алго] трейдинга на московской бирже является сама биржа, с ее конскими комиссиями, нестабильностью и штрафами за неэффективные транзакции :) Если не заленюсь — напишу про это отдельный пост.
Начну с не алго. Скажу сразу, руками торгую очень мало, и на UI мне почти все-равно, но с MT5 есть «общетрейдерские проблемы», которые важны не только для алго, но и для вполне себе ручных трейдеров:
1) На сколько мне известно всего 2 брокера предлагают MT5. Это лучше чем 0, но далеко до идеала. В частности есть брокеры предлагающие интересные анлимы и плечи, но у них нет MT5 :)
PS
В настоящее время ведем работу по созданию алгоритмического хедж-фонда открытого типа. Юрисдикция фонда РФ. Стоимость обслуживания фонда на порядки ниже, чем для западных аналогов. Подробнее — в личке.
Надоела несистемность процесса создания торговых систем, пробую её систематизировать. Набросал этапы создания торговой системы. Как всегда грааль в деталях, так что буду детализировать этапы, ну и в целом прогонять процесс по данным этапам и смотреть, насколько такая схема жизнеспособна, буду её дополнять и корректировать на основе обратной связи от «живого» использования этой схемы.
p.s. Верстка — это, похоже, не моё, совладать с таблицей нормально мне так и не удалось)
Лениво бродив по западному интернету, нашел интересную стратегию, которая своими корнями уходит к некоему Larry Connors. Стратегия построена на простом RSI с периодом 2.
Суть ее в следующем:
покупаем индексный ETF, когда значение меньше 15 на закрытии дня (да, это можно сделать без проблем и проскальзываний на всех ликвидных ETF) и продаем, когда клоуз текущего дня выше хая предыдущего (можете придумать свои выходы, стратегия не очень-то чувствительна к выходам).
В общем MR в чистом виде. И в принципе это должно работать на большинстве ETF развитых рынков.
Тестил на Multicharts.Net, код ниже.
using System; using System.Drawing; using System.Linq; using PowerLanguage.Function; using ATCenterProxy.interop; namespace PowerLanguage.Strategy { public class rsi_2_spy : SignalObject { public rsi_2_spy(object _ctx):base(_ctx){} private IOrderMarket buy_order; private IOrderMarket sell_order; private RSI m_RSI; private VariableSeries<Double> m_myrsi; private ISeries<double> Price { get; set; } protected override void Create() { // create variable objects, function objects, order objects etc. buy_order = OrderCreator.MarketThisBar(new SOrderParameters(Contracts.Default, EOrderAction.Buy)); sell_order = OrderCreator.MarketThisBar(new SOrderParameters(Contracts.Default, EOrderAction.Sell)); m_RSI = new RSI(this); m_myrsi = new VariableSeries<Double>(this); } protected override void StartCalc() { // assign inputs Price = Bars.Close; m_RSI.price = Price; m_RSI.length = 2; } protected override void CalcBar(){ // strategy logic m_myrsi.Value = m_RSI[0]; if (Bars.Close[0]>Bars.High[1]){ sell_order.Send(); return; } if (m_RSI[0]<15){ buy_order.Send(); } } } }
Недавно интересовался мнением смартлабовцев по поводу тестирования стратегий, удивился многообразию вариантов и мнений. Теперь хочу обобщить тему и обсудить элементы в целом “сферического торгового автомата в вакууме”.
Если цель торгового автомата: максимизация прироста капитала, за счёт совершения операций купли\продажи финансовых инструментов, то из этой цели следуют две функции:
Совершение операций купли/продажи (для приведения фактических позиций к целевым позициям).
Расчёт целевых позиций.
Таким образом, получаем два элемента: “привод” — реализует первую функцию и “советник” — реализует вторую функцию.
“Инструкцию” о том как получать целевую позицию задаёт “конфигурация” советника (т.е. конфигурация = признаки + алгоритм + параметры).
Логично использовать ту конфигурацию, по которой максимальный ожидаемый прирост капитала. Элемент осуществляющий выбор наиболее эффективной конфигурации назовём “селектор”.