Общие вопросы по разработке > ЛЧИ 2018 - как лог сделок вынести на график?

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
m4Dmitry
Сообщения: 72
Зарегистрирован: 21 май 2018, 22:04
Благодарил (а): 60 раз
Поблагодарили: 3 раза

ЛЧИ 2018 - как лог сделок вынести на график?

Непрочитанное сообщение m4Dmitry » 04 окт 2018, 17:41

Камрады!!!

Ну очень интересно посмотреть сделки самых успешных и не очень успешных участников ЛЧИ 2018.

На сайте http://investor.moex.com есть возможность скачать сделки в xls формате.

А вот как бы их вынести в терминал?
Вложения
2_183360.csv
(38.37 КБ) 1946 скачиваний
2018-10-04_16-39-37.png
2018-10-04_16-39-37.png (6.2 КБ) 37179 просмотров
2018-10-04_16-36-17.png
2018-10-04_16-36-17.png (9.72 КБ) 37179 просмотров

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: ЛЧИ 2018 - как лог сделок вынести на график?

Непрочитанное сообщение evge » 04 окт 2018, 17:49

Хорошая идея!

реализую, как появится время, если меня не опередят :)
никогда такого не было и вот опять

m4Dmitry
Сообщения: 72
Зарегистрирован: 21 май 2018, 22:04
Благодарил (а): 60 раз
Поблагодарили: 3 раза

Re: ЛЧИ 2018 - как лог сделок вынести на график?

Непрочитанное сообщение m4Dmitry » 04 окт 2018, 18:07

evge писал(а):Хорошая идея!
реализую, как появится время, если меня не опередят :)


Вот такой ресурс нашел - https://atikhonov.shinyapps.io/lchi2018/#dashboard-4 но что-то он тупит и т.д.
И вот такой топик был на СмартЛабе https://smart-lab.ru/blog/220596.php

Аватара пользователя
Simonov
Сообщения: 89
Зарегистрирован: 20 сен 2017, 11:36
Благодарил (а): 83 раза
Поблагодарили: 20 раз

Re: ЛЧИ 2018 - как лог сделок вынести на график?

Непрочитанное сообщение Simonov » 04 окт 2018, 18:28

Вау! Какая идея классная. Неистово плюсую. Евгений Алексеевич, уповаем, крестимся и молимся! Надеемся и верим. :lol:

m4Dmitry
Сообщения: 72
Зарегистрирован: 21 май 2018, 22:04
Благодарил (а): 60 раз
Поблагодарили: 3 раза

Re: ЛЧИ 2018 - как лог сделок вынести на график?

Непрочитанное сообщение m4Dmitry » 04 окт 2018, 23:09

Simonov писал(а):Вау! Какая идея классная. Неистово плюсую. Евгений Алексеевич, уповаем, крестимся и молимся! Надеемся и верим. :lol:

:D :D :D

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: ЛЧИ 2018 - как лог сделок вынести на график?

Непрочитанное сообщение evge » 05 окт 2018, 14:26

Уже есть результаты :)

На примере BRX8, RIZ8

Участник: Qqqq2018

на графике сделки, внизу объем (покупка - зеленым, продажа - красным)

Investor-Moex-Com-2_182782-BRX-01.png
BRX8, Qqqq2018
Investor-Moex-Com-2_182782-BRX-01.png (35.45 КБ) 37100 просмотров

Investor-Moex-Com-2_182782-RIZ8-01.png
RIZ8, Qqqq2018
Investor-Moex-Com-2_182782-RIZ8-01.png (36.89 КБ) 37095 просмотров


Код чуть-чуть приведу в порядок и выложу тут
никогда такого не было и вот опять

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: ЛЧИ 2018 - как лог сделок вынести на график?

Непрочитанное сообщение evge » 05 окт 2018, 14:38

Предварительный вариант.

Если что-то не так, сообщайте.

Видел баг, если отмотать фьючерс далеко назад в историю, то можно увидеть фантомные сделки по ценам которых не было :)

Код вывода сделок и определения бара надо будет чуть довести до ума позже.

Код: Выделить всё

function Initialize()
{
IndicatorName = "Trades";
PriceStudy = true;   
AddInput("I", Inputs.Candle);   

AddSeries("CountBuy", DrawAs.Custom, Color.Green, AxisType.ZeroBased, true, Axes.New);
AddSeries("CountSell", DrawAs.Custom, Color.Red, AxisType.ZeroBased, true, Axes.New);
AddSeries("Buy", DrawAs.Custom, Color.Green);   
AddSeries("Sell", DrawAs.Custom, Color.Red);   

AddGlobalVariable("C", Types.DoubleList); // кол-во
AddGlobalVariable("Price", Types.DoubleList); // цена
AddGlobalVariable("DT", Types.DoubleList); // дата и время
AddGlobalVariable("Type", Types.IntList); // тип

AddGlobalVariable("NeedRead", Types.Boolean, true); // читать файл?
}

function Evaluate()
{

// evge 05.10.2018 http://alfadirect4.ru

// скачиваем сделки участника с страницы конкурса ЛЧИ
// http://investor.moex.com/ru/statistics/2018/
// файл распаковываем и указываем путь в переменной File (ниже)

// Считываем параметры сделок из файла File (1 раз) в списки DoubleList
// ФОРМАТ .csv файла: Дата время (ГГГГ-ММ-ДД HH:MM:SS.000);Тикер;Кол-во;Цена
if (C.Count == 0 && NeedRead)
{
   // Укажите файл сделок ЛЧИ
   string File = @"C:\\temp\\1_182704.csv";   
      
   var Ticker = I.VirtualSecurity.Split('=')[0];
   string S = "";
   
   if (System.IO.File.Exists(File))
   {
   System.IO.StreamReader F = new System.IO.StreamReader(File);
   while (!F.EndOfStream)
   {   
      S = F.ReadLine();
      string[] Data = S.Split(';');
      if (Ticker != Data[1].Trim()) continue;         
      if (Data.Count() >= 4)
      {         
         var count = double.Parse(Data[2]);
         C.Add(count);
         Price.Add(double.Parse(Data[3].Replace(".",",")));
         var D = DateTime.ParseExact(Data[0].Substring(0, 19), "yyyy-MM-dd HH:mm:ss", null);
         DT.Add(D.ToBinary());
         if (count < 0)
            Type.Add(-1);
         if (count > 0)
            Type.Add(1);
      }
   }
   F.Close();
   }
NeedRead = false;
} // C == 0

for (var x = 0; x < C.Count; x++)
{   
   long b = Convert.ToInt64(DT[x]);
   DateTime d = DateTime.FromBinary(b).Date;
   TimeSpan t =  DateTime.FromBinary(b).TimeOfDay;   
   if (BarDate(0) == d && BarDate(1) != d && BarTime(0) == AsTime(0,0,0) && BarTime(1) == AsTime(0,0,0))
   {
      if (Type[x] > 0) { Buy[0] = Price[x]; CountBuy[0] += C[x]; }
      if (Type[x] < 0) { Sell[1] = Price[x]; CountSell[0] += C[x]; }
   } else
   if (BarDate(0) == d && t == BarTime(0))
   {
      if (Type[x] > 0) { Buy[0] = Price[x]; CountBuy[0] += C[x]; }
      if (Type[x] < 0) { Sell[0] = Price[x]; CountSell[0] += C[x]; }
   } else
   if (
      (BarDate(0) == d && t > BarTime(1) && t < BarTime(0))
         ||
      (BarDate(1) == d && BarDate(0) > BarDate(1) && t > BarTime(1) && t > BarTime(0))
      )
   {
      if (Type[x] > 0) { Buy[1] = Price[x]; CountBuy[1] += C[x]; }
      if (Type[x] < 0) { Sell[1] = Price[x]; CountSell[1] += C[x]; }
   }
}

Buy.DrawArrowUp();
Sell.DrawArrowDown();
CountBuy.DrawHistogram();
CountSell.DrawHistogram();

}
никогда такого не было и вот опять

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: ЛЧИ 2018 - как лог сделок вынести на график?

Непрочитанное сообщение evge » 05 окт 2018, 14:41

После добавления индикатора, лучше сразу увеличить размер для меток, как на скриншоте.

Investor-Moex-Com-01.png
Investor-Moex-Com-01.png (21.68 КБ) 37089 просмотров
никогда такого не было и вот опять

Аватара пользователя
Simonov
Сообщения: 89
Зарегистрирован: 20 сен 2017, 11:36
Благодарил (а): 83 раза
Поблагодарили: 20 раз

Re: ЛЧИ 2018 - как лог сделок вынести на график?

Непрочитанное сообщение Simonov » 05 окт 2018, 14:56

Класс! Спасибо большое! А с чем может быть связан глюк "фантомных сделок"? 8-)

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: ЛЧИ 2018 - как лог сделок вынести на график?

Непрочитанное сообщение evge » 05 окт 2018, 15:13

Код выше поправил,

Если сделок нет на текущем графике, слишком нудно читать пыталось файл на каждом баре и рождались тормоза в терминале :)
никогда такого не было и вот опять


Вернуться в «Общие вопросы по разработке»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 15 гостей