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

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
Аватара пользователя
Simonov
Сообщения: 89
Зарегистрирован: 20 сен 2017, 11:36
Благодарил (а): 83 раза
Поблагодарили: 20 раз

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

Непрочитанное сообщение Simonov » 08 окт 2018, 08:06

evge писал(а):в логах ошибка или на графике цен АД4 ? :)

Проверил котировки на TradingView - там тоже самое, что у нас в терминале. Один в один. Получается. что это ошибка в логах. 8-)

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

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

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

Таких сделок не мало, посмотрел на RSTI, вижу что встречаются нередко.
Возможно что это такое странное округление времени в логах конкурса до минут.

Во всех этих странных случаях вижу что на предыдущем баре есть такая цена.

2018-10-03 17:12:00.000;RSTI ;-51000;.79990
2018-10-03 17:12:00.000;RSTI ;-319000;.79980
2018-10-03 17:13:00.000;RSTI ;35000;.79610
2018-10-03 17:13:00.000;RSTI ;45000;.79620
2018-10-03 17:13:00.000;RSTI ;15000;.79620
2018-10-03 17:13:00.000;RSTI ;275000;.79640

Investor-Moex-Com-1_182704-RSTI-03.png
Investor-Moex-Com-1_182704-RSTI-03.png (34.51 КБ) 26245 просмотров
никогда такого не было и вот опять

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

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

Непрочитанное сообщение Simonov » 08 окт 2018, 08:23

evge писал(а):Возможно что это такое странное округление времени в логах конкурса до минут.

Наверняка так и есть. Другое объяснение сложно придумать. :geek:

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

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

Непрочитанное сообщение evge » 08 окт 2018, 09:52

можно было бы упростить получение данных от биржи по участнику введя только его КОД (номер) вида:

181893 и т.п.

Файлы всех сделок участников ЛЧИ здесь:

ftp://ftp.moex.com/pub/info/stats_contest/2018/all/

Соответствие кода и имени (ника) участника в этой таблице

ftp://ftp.moex.com/pub/info/stats_conte ... trader.csv

есть только небольшая "проблема" в том что сделки участников в архивах zip, распаковать прямо в АД4 не удается пока :)

если бы получилось это сделать, то можно было упростить процедуру настройки индикатора и для переключения между участниками не понадобилось бы лезть в код индикатора. Досточно было бы указать код участника в параметре индикатора и АД4 индикатор всю остальную работу взял бы на себя :)

Но пока только идея.

Но есть идея как обойти это ограничение на распаковку архива. Сам же хостинг alfadirect4.ru в помощь пойдёт. Можно распаковать на стороне хостинга и выдать уже результат распакованного файла для анализа в АД4 :)
никогда такого не было и вот опять

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

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

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

evge писал(а):если бы получилось это сделать, то можно было упростить процедуру настройки индикатора и для переключения между участниками не понадобилось бы лезть в код индикатора.

Идея отличная! Может Дмитрий Еремин что подскажет?

А для себя, на бытовом уровне, проблему с быстрым переключением между участниками соревнований и без необходимости постоянно редактировать код, решил следующим образом. Можно прописать в индикаторе путь к файлу с названием 1.csv, например. А потом просто переименовывать необходимые файлы в 1.csv при использовании, чтобы не переписывать в индикаторе путь с разными названиями каждый раз. Индикатор перезапускать после замены файла не надо, он будет подхватывать новые файлы автоматом.

И ещё момент. Если открыть в Экселе файл 1.csv и одновременно запустить индикатор, то индикатор не сможет выводить показания на график, так как файл будет заблокирован Экселем. Лучше всего действовать так: скачали архив, распаковали его, создали копию файла со сделками, переименовали копию в 1.csv для индикатора и не трогаем его. При этом, оригинал файла можно параллельно открывать Экселем, чтобы смотреть, какие инструменты использовал участник соревнований, и подключать их в терминале по мере надобности. 8-)

Mircl
Сообщения: 1
Зарегистрирован: 08 окт 2018, 10:21

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

Непрочитанное сообщение Mircl » 08 окт 2018, 10:56

День добрый, а можно вывести в индикатор. данные с мос биржи открытые позиции по производным финансовым инструментам

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

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

Непрочитанное сообщение evge » 08 окт 2018, 11:12

Добрый день!

По фьючерсам выше показано, выводятся сделки.

Открыта ли позиция на графике не будет ясно.

Хотя можно развить тему и показывать например уровнем открытую позицию.
никогда такого не было и вот опять

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

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

Непрочитанное сообщение Simonov » 08 окт 2018, 11:17

Он, скорее всего, имел в виду другие данные по открытым позициям. Вот эти. :)

Открытые позиции.PNG
Последний раз редактировалось Simonov 08 окт 2018, 11:21, всего редактировалось 2 раза.

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

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

Непрочитанное сообщение evge » 08 окт 2018, 11:18

Ещё один код индикатора в котором достаточно указать номинацию и уникальный код участника.

1 Лучший частный инвестор на фондовом рынке
2 Лучший частный инвестор на срочном рынке
3 Лучший частный инвестор на валютном рынке


Индикатор сделает запрос на alfadirect4.ru/investor.php с параметром user = уникальному коду участника и скачав zip файлы сделок по трем номинациям распакует их в alfadirect4.ru/investor, т.е. там будут доступны файл по ссылкам

alfadirect4.ru/investor/1_XXXXXX.csv, alfadirect4.ru/investor/2_XXXXXX.csv, alfadirect4.ru/investor/3_XXXXXX.csv, если таковые найдутся на странице конкурса

затем по указанной номинации в индикаторе произойдёт считывание данных из конкретного csv с alfadirect4.ru

Вот такая "нехитрая" схема, зато теперь достаточно указать номинацию и код участника, который можно увидеть из URL адреса статистики

Как пример, http://investor.moex.com/trader2018?user=182928, здесь видно что уникальный код участника это 182928

В остальном всё как прежде :)

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

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);   

//Номинация
//1   Лучший частный инвестор на фондовом рынке
//2   Лучший частный инвестор на срочном рынке
//3   Лучший частный инвестор на валютном рынке
AddParameter("Nom", 2);
//Уникальный идентификатор пользователя
//см. ссылку на странице статистики пользователя ?user=XXXXXX, где XXXXXX - уникальный идентификатор
AddParameter("User", 0);

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

// Считываем параметры сделок из файла File (1 раз) в списки DoubleList
// ФОРМАТ .csv файла: Дата время (ГГГГ-ММ-ДД HH:MM:SS.000);Тикер;Кол-во;Цена
if (C.Count == 0 && NeedRead && User != 0)
{
   // Генерируем csv
   // В alfadirect4.ru/investor/X_USER.csv из ftp://ftp.moex.com/pub/info/stats_contest/2018/all/X_USER.zip
   System.Net.WebClient wc = new System.Net.WebClient();
   wc.Encoding = System.Text.Encoding.UTF8;
   string result = wc.DownloadString("http://alfadirect4.ru/investor.php?user=" + Convert.ToString(User));
      
   // читаем
   System.Net.WebRequest req = System.Net.WebRequest.Create("http://alfadirect4.ru/investor/" + Convert.ToString(Nom) + "_" + Convert.ToString(User) + ".csv");
   System.Net.WebResponse resp = req.GetResponse();
   System.IO.Stream stream = resp.GetResponseStream();
   System.IO.StreamReader sr = new System.IO.StreamReader(stream);   
            
   var Ticker = I.VirtualSecurity.Split('=')[0];
   string S = "";
   
   while ((S = sr.ReadLine()) != null)
   {   
      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);
      }
   }
   
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[0] = 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();

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

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

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

Непрочитанное сообщение Simonov » 08 окт 2018, 11:32

evge писал(а):Ещё один код индикатора в котором достаточно указать номинацию и уникальный код участника.

Этот вариант намного круче! Спасибо, гений Евгений! :D


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

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

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