Избранное трейдера imperativ

Этот эффект я назвал «скальп стопов». Он носит очень краткосрочный характер и непременно работает уже много лет. Хотя здесь дело далеко не в одних стопах. Просто в один конкретный момент происходит очень большой перекос ордеров на покупку/продажу, и цена зачастую краткосрочно улетает и дальше по направлению перекоса. Затем возвращается обратно.
Суть такая: берем уровни максимума и минимума за предыдущий час (час значит не 60 последних минут, а временной интервал с 10:00 по 11:00 и т.д.), далее ставим стоп-лимит на покупку по цене максимума и стоп-лимит на продажу по минимуму. Ордер может сработать только 1 раз в текущем часу. Кроем сразу же на открытии следующего минутного бара. Больше никаких условий.
Пример сделки:

Кривая доходности и параметры с 2009 по 2016 годы (сделок на гэпе первой минуты нет, вечерняя сессия также не включена). Фактор восстановления впечатляет.

Если говорить образно. То, чтобы отправить сообщение на сервер, нам просто нужно сформировать нужную строку со всеми данными и отправить ее на биржу. Ну например:
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, длину сообщения нужно считать без учета концовки и первых двух полей заголовка. А именно:

Зеленым я отметил именно разделители. Как вы уже видите, это просто в шестнадцатеричном виде код 01. То есть, в нашу строку в виде разделителей, нужно вставлять код 01. Также я отметил для себя последовательность полей в сообщении. Почему то в другом порядке у меня вызывало ошибки (возможно тут я не прав)
Ну и контрольная сумма. Контрольная сумма считается над всем сообщением, за исключением концовки. То есть в расчет берется только заголовок и само сообщение. Для этого, мы переводим каждый символ в его Ascii код и вычисляем их сумму. Полученную сумму делим по модулю 256. Это и будет контрольной суммой сообщения. При этом, значение должно быть трехзначным. Если мы получаем 2 знака, то подставляем 0 слева (например, если контрольная сумма = 68, то должны передать значении 068).
Как видим, первый метод строит нужную строку из полей. Обратите внимание, там присутствует наш разделитель в виде спец символа \u0001. Второй метод вычисляет размер заголовка (чтобы потом высчитывать размер сообщения). Надо обратить внимание, что при передачи времени, миллисекунды должны указываться в трехзначном формате (даже если миллисекунды = 52, то передаем 052). Следующие классы строятся по аналогии.

//Получаем 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));




День 7, 11 января.
Геп утром был больше ожидаемого, но меньше допустимого.

« Голос истины неизящен, а изящная речь лжива. Нравственный человек не красноречив, а красноречивый — лжец»
Лао-Цзы
В книге Новые измерения. Билла Вильямса, даётся трендовая стратегия, которая при минимальных изменениях может торговаться на российской бирже. Эта книга — склад Граалей. В ней есть адаптивный к волатильности вход на пробое, пирамидинг по тренду, бесконечное удержание позиции по тренду. Три столпа алгоритмиста-трендовика которые изменят Вашу жизнь навсегда. Всё это дано на уровне полного описания действий, как в блок-схеме.
