Избранное трейдера chuikapridi
Хотя любой алгоритм торгует в режиме реального времени, на запуске ему все еще нужна история цены для вычисления начальных значений её индикаторов и функций анализа цены. Без доступа к ценовой истории вам бы пришлось ждать пару дней до размещения первой сделки. Так как это не слишком практично, ценовая история является существенной функцией API.
Брокер А предоставляет историю цены без особых проблем. Я могу не верить ему. Поэтому нам снова нужно запустить “фабрику запросов”, сгенерировать запросы и ответы, и приблизительно 50 строк текста программы позволят загрузить историю цены. Брокер не взимает сборы за эти цены (вы даже можете загрузить их с демо-счетом) и, по крайней мере недавние данные, с 2010 и выше, находятся в приемлемом качестве. Восемь из десяти очков для истории цены брокера А.
Представляю вашему вниманию робота на основе индикатора Индекс Товарного Канала (Commodity Channel Index, сокращенно CCI). Данный робот позволит вам торговать трендовую или контртрендовую стратегию на рынке ММВБ акциями или фьючерсами. Робот анализирует индикатор и принимает на основе этого торговые решения, позволяя тем самым автоматизировать торговлю. В этой статье расскажу, как запустить робота и опишу торговый алгоритм, реализованный в механической торговой системе (МТС).
План:
1) Как установить робота на основе CCI под Quik;
2) Как использовать;
3) Заключение
1) Как установить робота
Разархивируйте и сохраните в удобном месте. Для запуска нескольких копий сделайте доп. копии папок робота и установите соответствующие настройки.
Запускаем CCI.
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Text;
using System.Timers;
using System.Threading;
using XlDde;namespace ConsoleApplication2
{
class Program
{
const string service = «myDDE»;
const string candleSPOT = «SPOT»;
static void Main(string[] args)
{
using (XlDdeServer server = new XlDdeServer(service))
{
server.AddChannel(candleSPOT, new SPOTChannel());
server.Register();Console.WriteLine(«DDE server ready. Press Enter to exit.\n\n»);
Console.ReadLine();
}
}
}
// **********************************************************************
// * Классы DDE каналов с обработчиками данных *
// **********************************************************************
class SPOTChannel: XlDdeChannel
{
//static int time2 = 1000;
static int em = 7;
static int m = 1200;
static int[] NM = new int[em];
static int NMM = 0;
static int LastMinute = 0;
static int mm = 1638400;
static double[] Price_trade = new double[mm];
string[] EM_trade = new string[mm];
static int[] Time_trade_I = new int[mm];
static int[] Volume_trade = new int[mm];
static int[,] Time = new int[em,m];
static double[,] O = new double[em,m];
static double[,] H = new double[em,m];
static double[,] L = new double[em,m];
static double[,] C = new double[em,m];
static double[,] V = new double[em,m];
protected override void ProcessTable(XlTable xt)
{
//int time3 = 1000;
int[] nach = new int[em];
int nach1 = 0;
int i = 0;
int j = 0;
int s = 0;
int curHour = 0;
int curMin = 0;
int curDay = 0;
int curSec = 0;
int curDay_1 = 0;
string name;
string[] bf;
string[] EM = new string[em];
DateTime moment;
string[] Time_trade = new string[mm];
Окей, 100 плюсов есть. Обещанный способ угадывания гэпа.
Идем к сайлентбобу: smart-lab.ru/blog/206454.php
Что видим:
1) только лонг
2) работает с 2011 года, до этого времени нет
3) сделок с весны 2011 до сентября 2014 мало — 123 штуки — событие с одной стороны редкое, а с другой вполне себе равномерно распределено по году (смотрим эквити). Процент выигрыша 65, профит фактор 2,77.
4) паттерн достаточно очевидный чтобы его было не жалко отдать сматрлабовцам.
Какое у нас редкое равномерно распределенное очевидное событие? День недели. Строим простейший скрипт и смотрим есть ли закономерности в Си по дням недели.
Чего видим? в пятницу у нас гэп скорее вверх, причем профит фактор сразу 2,56. Смотрим на эквити:
Все красиво, похоже предположение верное. На следующем шаге добавляем фильтр в стиле «на момент входа снизились не более чем на определенную величину от закрытия предыдущего дня». Часть сделок отсеиваем, улучшаем ПФ на 0,39. Радуемся, исследуем дальше, встраиваем в свои системы.
А заодно начинаем думать почему так может происходить, и почему до 2011 было по-другому. До мая 2010 пятничный гэп в целом повторял движение самого Си, а с мая 2010 до начала 2011
На смартлабе очень мало чего можно почитать начинающему алготрейдеру. Если кто и пишет — все больше эквити выкладывают, а на идеи стратегий даже не намекают. Один из товарищей которых я читаю — silentbob ( http://smart-lab.ru/profile/silentbob/ ). Он периодически выкладывает что-то из своих наблюдений, на основе которых вполне пишутся рабочие стратегии.
В своё время он предлагал выложить выложить устойчивый метод угадывания гэпа вверх в Си за 350 плюсиков
smart-lab.ru/blog/206454.php
За плюсики смартлабовцы метод не выкупили и для многих он остался загадкой)) Эквити у метода была вот такая:
Идея простая: покупаем в 23-45 при выполнении определенных условий и продаем в 10-15. Я потратил какое-то время и постарался найти стратегию с похожими параметрами. Совсем такой же у меня не получилось, но что то все таки нашел:
Нашли интереснейший пост в западных интернетах. В нём говориться про проблемы API и не очень хорошее отношение брокеров к алгоритмическим трейдерам.
Т.ч. проблемы АПИ актуальны не только в России. Это повсеместно...
Какое бы программное обеспечение мы не использовали для автоматизации торговли, всем нам нужна связь брокера с алгоритмом, чтобы получить ценовые предложения и места для торговли. Очевидно, простая задача. И почти любой брокер поддерживает её через такие протоколы, как FIX, на автоматизированной платформе типа MT4™, или через специальный API. Но если Вы уверены, что сможете быстро соединить торговое ПО с API брокера, то будете неприятно удивлены. Уважаемые брокеры – пожалуйста, прочтите этот пост и попытайтесь сделать жизнь программистов немного проще!
API брокера позволяет программному обеспечению торговать, получать ценовые предложения и загружать историю цены. Эти три функции являются неотъемлемой частью автоматизированной системы. Хорошо, когда имеются дополнительные функции, которые восстанавливают торговый статус, статус счета и параметры актива. Это шесть-семь функций, нужных, когда вы считаете вход/выход из системы. У API брокера зачастую же более 100 функций. Таким образом, следует предположить, что, по крайней мере, 6 из них должны быть охвачены. Но, к сожалению, это не так и неудачи начинаются уже с установки и запуска API.
Здравствуйте дорогие друзья!
Хочу проверить влияние спреда IV-HV на результат торговли, если куплен стредл на центральном страйке и выравнивать дельту фьючем каждый день.
Сдесь и далее в следующих статьях:
IV — подразумеваемая волатильность центрального страйка
HV — историческая волатильность приведенная к годовой
Спред — разница между IV и HV
Все дальнейшие расчеты и скриншёты приведены для инструмента RI.
Формула по рассчету HV:
Сначала рассчитывается средний дневной ход цены (HV_EMA) в процентах
HV_EMA=HV_EMA(t-1) + Alfa * (100 * (Abs(PRICE_F — Prev_PRICE_F) / Prev_PRICE_F) — HV_EMA(t-1))
где:
HV_EMA(t-1) — средний дневной ход цены на предыдущем шаге (дне)
Alfa — коэффициент сглаживания (0...1)
PRICE_F — цена фьючерса на текущем шаге (дне)
Prev_PRICE_F — цена фьючерса на предыдущем шаге (дне)
Если проще сказать то HV_EMA это экспоненциальная средняя дневных изменений цены фьючерса взятых по модулю.
У нас получается дневная волатильность. Далее приводим дневную волатильность к годовой:
HV=HV_EMA * КОРЕНЬ(252)
Почему я взял 252? Потому что в году примерно 252 рабочих дня, хотя этот вопрос спорный какой коэффициент брать 252 или 365.
Все, теперь у нас есть историческая волатильность приведенная к годовой и её можно теперь сравнивать с подразумеваемой.
Методом тупого перебора я перебрал все коэффициенты Alfa и определил, что у коэффициента Alfa=0,06 наименьшее среднеквадратичное отклонение между IV и HV, его то и возьмем для дальнейших исследований.
Посчитаем разность между IV и HV и построим график этого спреда