Избранное трейдера BaZa86
Если говорить образно. То, чтобы отправить сообщение на сервер, нам просто нужно сформировать нужную строку со всеми данными и отправить ее на биржу. Ну например:
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));
Я был бы очень рад, счастлив и благодарен, если бы в мои 25 лет, я бы прочитал такой пост.
Или хотя бы перед кризисами 85-91 гг. и 98 года, которые могут легко повториться.
Когда я долго не мог поверить, что такое вообще возможно в экономике (не смотря на то, что я к.э.н.) и политике: гиперинфляция, «приватизация вкладов населения» Сбером, снова гиперинфляция, ЮКОС, коррупция и др.
Поэтому решил его написать для других. Чего НЕ стоит делать со своими деньгами и инвестициями. Что делать, вы сами и без меня знаете, надеюсь.
Однако помните, что все нижеприведенные советы и рекомендации, это всего лишь «мой собственный путанный опыт», как поется в одной песне (она ниже, как дополнение к посту).
Итак, поехали:
1. Не держите все деньги и/или активы в одном банке, у одного брокера, в одном инструменте: диверсифицируйте и хеджируйте.
2. Не находитесь в рублях в долгосрочных позициях: только краткосрочные спекуляции и среднесрочные инвестиции, причем среднесрочные инвестиции на небольшую часть своего портфеля и/или хеджируйте их.
3. Не держите валюту только в российских банках (имеется ввиду юрисдикция): в случае глобального экономического или политического кризиса эти счета ничего не будут стоить, идеальный вариант три банка: РФ и два нерезидента в разных юрисдикциях.
4. Уже в 25 лет начинайте формировать себе пенсионный фонд, строго по правилам п. 1-3 выше, откладывайте не менее 8-10% от своего заработка ежемесячно.
5. Даже если у вас цель стать богатым владельцем компании, олигархом и т.п., этот фонд вам никогда не помешает, а будет защитным активом, на случай кризисов.
6. Не инвестируйте в недвижимость с низкой отдачей/рентабельностью. Все больше ликвидной недвижимости в мире, с каждым годом, превращается из актива в пассив, т.е. будет просить кушать по налогам и содержанию/поддержанию что-то около того, что она приносит. Исключение: быстрорастущие рынки (которых все меньше и меньше).
7. Не инвестируйте в страны с недемократической системой управления, не держите там свои активы. Как бы не казались их проекты или активы привлекательными.
8. В период рецессии, предкризисных ситуаций и кризисов всегда выводите свою прибыль ежедневно, конвертируйте ее в другие 2-3 валюты, при этом соблюдая правило 3.