Избранное трейдера Karim
В прошлый раз http://smart-lab.ru/blog/329488.php предложил добавить к скользящим средним каких-нибудь сигналов/индикаторов, чтобы использовать в стратегии для примера. Но ни от кого идей не поступило.
Подумав в указанном направлении, решил добавить в стратегию поиск шаблона/паттерна. Для поиска шаблона буду использовать корреляцию. Такая идея у меня была давно, но никак не доходили руки её проверить. Поэтому устрою проверку её эффективности в стратегии, используемой для примера. Появляется какая-то польза и для меня, так как результат мне не известен и полученные наработки (код) можно будет использовать в дальнейшем.
Сама идея проста – задаем последовательность значений, описывающих некоторое изменение цены, например:
Tpl = { 1, 2, 3, 4, 5, 4, 4.5, 3.5, 4, 3 };
Если указанную последовательность изобразить графически, то получим картинку, показанную на рисунке.
Если говорить образно. То, чтобы отправить сообщение на сервер, нам просто нужно сформировать нужную строку со всеми данными и отправить ее на биржу. Ну например:
8=FIX.4.4;9=78;35=A;49=FG;56=tgFhcfx901U05;34=1;52=20160212-11:42:51.812;98=0;108=3000;141=Y;10=047;
Если быть внимательным, то мы увидим, что кол-во символов в строке у нас 100, а в заголовке сообщения мы передаем, что 78 (9 = 78). По правилам протокола FIX, длину сообщения нужно считать без учета концовки и первых двух полей заголовка. А именно:
С длиной сообщения разобрались. Теперь про разделитель. Пока в моем скрине это ";". В документациях западных написано что это символ SOH. Чтобы однозначно ответить на этот вопрос, я запустил прилагаемого клиента биржи и сниффером стал перехватывать сообщения между клиентом и биржей. Кстати, программа ведет логи, и их общение выглядит так (зеленое — передача запроса на биржу, красное — ответ от биржи)://Получаем ip сервера
IPAddress ipAddr = IPAddress.Parse(server);
IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, port);
//Создаем заголовк
HeaderMessage msHeader = new HeaderMessage
{
BeginString = «FIX.4.4»,
MsgType = «A», //Тип сообщения на установку сессии
SenderCompID = "",
TargetCompID = «FG»,
MsgSeqNum = 1
};
//Создаем сообщение на подключение onLogon
LogonMessage msLogon = new LogonMessage
{
EncryptMethod = 0,
HeartBtInt = 3000,
ResetSeqNumFlag = true
};//Вычисляем длину сообщения
msHeader.BodyLength = msHeader.GetHeaderSize() + msLogon.GetMessageSize();
//Создаем концовку сообщения
TrailerMessage msTrailer = new TrailerMessage(msHeader.ToString() + msLogon.ToString());//Формируем полное готовое сообщение
string fullMessage = msHeader.ToString() + msLogon.ToString() + msTrailer.ToString();
Console.WriteLine(«Сообщение для отправки {0}»,fullMessage);//Создаем сокет для подключения
sSender = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
//Подключаемся
sSender.Connect(ipEndPoint);
Console.WriteLine(«Сокет соединился с {0} », sSender.RemoteEndPoint.ToString());
byte[] msg = Encoding.UTF8.GetBytes(fullMessage);
//Отправляем сообщение
int bytesSent = sSender.Send(msg);
Console.WriteLine(«Отправил {0} байт», bytesSent.ToString());
//Получаем ответ от сервера
byte[] bytes = new byte[1024];
int bytesRec = 0;
bytesRec = sSender.Receive(bytes);
Console.WriteLine(«Ответ от сервера: {0}», Encoding.UTF8.GetString(bytes, 0, bytesRec));
Пост о том, что нужно знать алготрейдеру — программисту Си Шарп. Какими базовыми знаниями надо обладать для того чтобы писать Роботов в СтокШарп / ВелсЛаб / ТсЛаб Api / SmartCom Api. Это не про кубико-трейдинг. Это про программирование.
Пост полезен в первую очередь трейдерам начинающим свой путь в алго, как дорожная карта. Чтобы не возникало желания изучать SmartCom Api на следующий день после изучения базовых типов данных.
Это вторая часть из серии статей Си Шарп Алго. Начало здесь.
План статьи:
1) Кто такой программист
2) Проба сил
3) Базовые знания языка
4) Продвинутые знания
5) Заключение
Анализ объемов – популярная тема среди трейдеров. С 2007 года тема объемов получила большое развитие, и на данный момент есть множество платформ для анализа объемов, и достаточно много методик работы с объемом.
Цель статьи – объяснить недостатки стандартных инструментов и показать преимущества использования алгоритмов анализа Level 1.
Разделим условно анализ объемов по Level 1 на два типа:
Данный анализ основан на нефильтрованных тиковых данных с биржи. Обычно принято анализировать ленту принтов в виде таблицы/списка. Исходя из полученных данных, трейдер принимает то или иное решение, читая ленту: