﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">событие NewCustomTables не возвращает изменившиеся строки</title>
  <id>~/topic/2911/sobytie-newcustomtables-ne-vozvrashshaet-izmenivshiesya-stroki/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-04T21:03:52Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=2911" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/20625/</id>
    <title type="text">Разобрался. Это я недосмотрел и тупо скопировал класс QuikCandle из примера, а там по умолчанию // И...</title>
    <published>2012-08-02T12:25:58Z</published>
    <updated>2012-08-02T12:25:58Z</updated>
    <author>
      <name>Ranlod</name>
      <uri>https://stocksharp.com/users/28296/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Разобрался. Это я недосмотрел и тупо скопировал класс QuikCandle из примера, а там по умолчанию &lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
[Identity]// Из-за того что не убрал атрибут из примера и не приходили изменённые строчки как новые
[InnerSchema]
public QuikCandleDateTime DateTime { get; set; }&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/20615/</id>
    <title type="text">событие NewCustomTables возвращает только новые строки. Хотя в документации написано В случае, если ...</title>
    <published>2012-08-01T18:22:55Z</published>
    <updated>2012-08-01T18:22:55Z</updated>
    <author>
      <name>Ranlod</name>
      <uri>https://stocksharp.com/users/28296/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">событие NewCustomTables возвращает только новые строки. Хотя в документации написано &lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Quote:&lt;/span&gt;&lt;div class="innerquote"&gt;В случае, если ни одно из полей не было помечено атрибутом IdentityAttribute, то событие QuikTrader.CustomTablesChanged не будет никогда вызываться, и все изменения будут приходит как новые строчки через QuikTrader.NewCustomTables.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Посмотрел в отладчике, возвращается только одна строка с новым временем. Я и не знаю что я делаю не так.&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
trader.NewCustomTables += (type, objects) =&amp;gt;
{
// нас интересует только QuikCandle
   if (type == typeof(QuikCandle))
   {
       List&amp;lt;QuikCandle&amp;gt; QC = (List&amp;lt;QuikCandle&amp;gt;)objects.Cast&amp;lt;QuikCandle&amp;gt;();

       for (int i = 0; i &amp;lt; QC.Count; i++)
       {
           string datatime = QC[i].DateTime.Date + QC[i].DateTime.Time;
           DataRow newrow = dt.NewRow();
           object searh = datatime;
           newrow.ItemArray = new object[] {QC[i].DateTime.Date, QC[i].DateTime.Time, datatime, QC[i].OpenPrice, QC[i].HighPrice, QC[i].LowPrice, QC[i].ClosePrice, QC[i].Volume };
           if ((Convert.ToInt32(QC[i].DateTime.Time) &amp;gt;= nach) &amp;amp; (Convert.ToInt32(QC[i].DateTime.Time) &amp;lt;= konec))
           {

               if (!dt.Rows.Contains(searh)) //Если значение не существует в бд то добавляем
               {
                  dt.Rows.Add(newrow);
                  Console.WriteLine(dt.Rows[dt.Rows.Count - 1][2] + &amp;quot; &amp;quot; + dt.Rows[dt.Rows.Count - 1][3]);
               }
               else //Если значение есть то проверяем изменилось ли оно(Вот эта часть инструкции не работает из-за того что всегда возвращается только новое значение)
               {
                  bool log = true;
                  Console.WriteLine(dt.Rows.Find(datatime).ItemArray[2]);
                  for (int z = 3; z &amp;lt; newrow.ItemArray.Length; z++)
                  {
                      if (Convert.ToDecimal(dt.Rows.Find(datatime).ItemArray[z]) != Convert.ToDecimal(newrow.ItemArray[z]))
                      {
                           log = false;
                           break;
                      }
                  }
                  if (log)
                  {
                     dt.Rows.Find(datatime).ItemArray = new object[] { QC[i].DateTime.Date, QC[i].DateTime.Time, datatime, QC[i].OpenPrice, QC[i].HighPrice, QC[i].LowPrice, QC[i].ClosePrice, QC[i].Volume };
                     Console.WriteLine(dt.Rows.Find(datatime).ItemArray[2] + &amp;quot; &amp;quot; + dt.Rows.Find(datatime).ItemArray[3]);
                  }
               }
          }
      }
   }
};&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;По идее, если я правильно понял из документации, событие должно возвращать изменяющиеся строки как новые и вторая чать инструкции должна работать.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>