evge писал(а):в логах ошибка или на графике цен АД4 ?
Проверил котировки на TradingView - там тоже самое, что у нас в терминале. Один в один. Получается. что это ошибка в логах.

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

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




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


Код: Выделить всё
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();
}
evge писал(а):Ещё один код индикатора в котором достаточно указать номинацию и уникальный код участника.

Вернуться в «Общие вопросы по разработке»
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 21 гость