Сообщество. StockSharphttps://stocksharp.ru/handlers/atom.ashx?category=community&page=222Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T15:00:27Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/topic/2186/робот качает старую информацию из Квика2011-11-30T09:13:41Z2011-11-30T09:13:41Zvaderhttps://stocksharp.ru/users/28223/info@stocksharp.ruПри запуске робота приходит информация о заявке, даже если нет активных заявок.<br />Такой код кидает MessageBox при установлении соединения.<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
private void OnNewOrder(IEnumerable<Order> orders)
{
MessageBox.Show(orders.Last().Comment.ToString());
this.GuiAsync(() => this.Orders.AddRange(orders));
}
</pre>
</div></div><br /><br />Также, иногда при включении робота приходит информация о заявках, которые были сняты ещё при прошлом запуске робота. Т.е. робот поработал, ставил ,снимал заявки, был выключен. Потом запускаем программу и ему приходит информация об отменённых заявках.<br />https://stocksharp.ru/topic/2185/QuikTerminal.Login exception2011-11-30T06:48:32Z2011-11-30T06:48:32ZSupervisorhttps://stocksharp.ru/users/27975/info@stocksharp.ruСобственно теперь вываливается следующее:<br />"Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена."<br />Насколько помню, до 4.0.6 было нормально.https://stocksharp.ru/topic/2184/Поддержка нескольких портфелей2011-11-29T17:56:51Z2011-11-29T17:56:51ZSergey Masyurahttps://stocksharp.ru/users/701/info@stocksharp.ruПривет,<br /><br />Как многие могли заметить сейчас в альфа-коннекторе вместо портфеля фактически используется счет, и при отправке ордеров всегда использется портфель "-000".<br />Сегодня потратил 300 рублей на открытие еще одного портфеля и клиринговой пары. В ближайшее время добавлю поддержку в альфа-коннектор.<br /><br />Так вот, это вероятно немного поломает текущие настройки Ваших роботов [flapper] <br /><br />Всем больших и очень больших профитов.<br /><br />PS: принимаю пожертвования на еду, пишите в личку [rolleyes]https://stocksharp.ru/topic/2183/Мертвая стратегия2011-11-29T16:16:36Z2011-11-29T16:16:36ZOvcharenkoVIhttps://stocksharp.ru/users/390/info@stocksharp.ruСобственно первый раз дошли руки до создания стратегии, до этого копался с базовыми элементами S#. В результате, следуя примеру, написал своего рода тестер(работает или нет), который открывает заявку, если цена меньше определенного числа, никаких ошибок VS не выдает, сделки регистрируются, но стратегия не подает никаких признаков жизни(даже при нажатии Start в логгере не пишется про запуск). До последнего не хотел обращаться к форуму, чтобы не загружать его банальными темами, но все же в итоге выкладываю все, что есть в проекте, так как решения вопроса так и не нашел.<br /><br />MainWindow:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
namespace MyStock
{
public partial class MainWindow
{
private readonly Dictionary<CandleToken, MainWindow> chart = new Dictionary<CandleToken, MainWindow>();
public AlfaTrader Trader;
public bool _isConnected;
public Portfolio _portfolio;
public CandleManager _candleManager;
private readonly ObservableCollection<Security> _securitiesSource = new ObservableCollection<Security>();
private readonly LogManager _logManager = new LogManager();
//private DateTime _lastCandleTime;
public readonly TimeSpan timeFrame = (TimeSpan)(AlfaTimeFrames.Minute1);
public IndStrategy _strategy;
private Security security;
private Security security_2;
public Ind _ind { get; private set; }
public MainWindow()
{
InitializeComponent();
Security.ItemsSource = _securitiesSource;
Security_2.ItemsSource = _securitiesSource;
var From = DateTime.Today - TimeSpan.FromDays(1);
var To = DateTime.Now;
_logManager.Listeners.Add(new FileLogListener());
var security = (Security)SelectedSecurity;
}
public void button1_Click(object sender, RoutedEventArgs e)
{
try
{
if (!_isConnected)
{
if (Trader == null)
{
var monitor = new MonitorWindow();
monitor.Show();
Trader = new AlfaTrader
{
Login = textBox1.Text,
Password = passwordBox1.Password
};
Trader.NewSecurities += securities => this.Dispatcher.BeginInvoke((Action)(() => _securitiesSource.AddRange(securities)));
Trader.NewPortfolios += portfolios => this.Dispatcher.BeginInvoke((Action)(() => portfolios.ForEach(Trader.RegisterPortfolio)));
Trader.NewSecurities += securities => this.Dispatcher.BeginInvoke((Action)(() => securities.ForEach(Trader.RegisterTrades)));
_logManager.Listeners.Add(new GuiLogListener(monitor));
_logManager.Sources.Add(Trader);
_logManager.Sources.Add(_strategy);
}
Trader.Connect();
Trader.StartExport();
_candleManager = new CandleManager(Trader);
}
}
catch (Exception)
{
//System.Windows.MessageBox.Show(this, ex.Message, "Error");
//return;
}
}
protected override void OnClosing(CancelEventArgs e)
{
base.OnClosing(e);
}
private void button2_Click(object sender, RoutedEventArgs e)
{
Trader.Disconnect();
}
private void textBox1_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
{
}
private void passwordBox1_PasswordChanged(object sender, RoutedEventArgs e)
{
}
public Security SelectedSecurity
{
get { return (Security)Security.SelectedValue; }
}
public Security SelectedSecurity_2
{
get { return (Security)Security_2.SelectedValue; }
}
public void SecuritySelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
public void Security_2_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
private void button3_Click(object sender, RoutedEventArgs e)
{
if (_strategy == null)
{
var ind = new Ind();
security = (Security)SelectedSecurity;
// создаем торговую стратегию
_strategy = new IndStrategy(_candleManager, ind, timeFrame)
{
Volume = 1,
Security = (Security)SelectedSecurity,
Trader = Trader,
TimeFrame = timeFrame,
};
// начинаем получать текущие сделки (для построения свечек реального времени)
Trader.RegisterTrades(security);
//Trader.GetHistoryData(security, timeFrame,
// new Range<DateTime>(DateTime.Today - TimeSpan.FromDays(5), Trader.MarketTime));
_lastHistoryCandle = timeFrame.GetCandleBounds(Trader).Min;
// регистрируем наш тайм-фрейм
_candleManager.RegisterTimeFrameCandles(security, timeFrame);
}
if (_strategy.ProcessState == ProcessStates.Stopped)
{
// запускаем процесс получения стакана, необходимый для работы алгоритма котирования
Trader.RegisterQuotes(_strategy.Security);
_strategy.Start();
}
else
{
Trader.UnRegisterQuotes(_strategy.Security);
_strategy.Stop();
}
}
}
}</pre>
</div></div><br /><br />"Индикатор"[huh] <br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
using System;
namespace MyStock
{
public class Ind : BaseIndicator<decimal>
{
public Ind()
: base(typeof(TimeFrameCandle))
{
}
public override bool IsFormed
{
get { return true; }
}
public override decimal OnProcess(IIndicatorValue input)
{
return input.GetValue<TimeFrameCandle>().ClosePrice;
}
}
}</pre>
</div></div><br /><br />Стратегия:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
namespace MyStock
{
using System;
using StockSharp.Algo;
using StockSharp.Algo.Candles;
using StockSharp.Algo.Indicators;
using StockSharp.Algo.Indicators.Trend;
using StockSharp.Algo.Strategies;
using StockSharp.BusinessEntities;
using StockSharp.AlfaDirect;
public class IndStrategy : TimeFrameStrategy
{
public readonly CandleManager _candleManager;
public bool _isSmaller;
private DateTime _nextTime;
public IndStrategy(CandleManager candleManager, Ind Ind1, TimeSpan timeFrame)
: base(timeFrame)
{
_candleManager = candleManager;
this.ind = Ind1;
}
public Ind ind { get; private set; }
protected override void OnStarting()
{
_isSmaller = this.ind.LastValue < 200;
_nextTime = base.TimeFrame.GetCandleBounds(base.Trader).Max;
base.OnStarting();
}
protected override ProcessResults OnProcess()
{
if (base.ProcessState == ProcessStates.Stopping)
{
base.CancelActiveOrders();
return ProcessResults.Stop;
}
if (base.Trader.MarketTime < _nextTime)
{
return ProcessResults.Continue;
}
var candle = _candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, _nextTime - base.TimeFrame);
if (candle == null)
{
if ((base.Trader.MarketTime - _nextTime) > TimeSpan.FromSeconds(10))
_nextTime = base.TimeFrame.GetCandleBounds(base.Trader.MarketTime).Max;
return ProcessResults.Continue;
}
_nextTime += base.TimeFrame;
this.ind.Process((DecimalIndicatorValue)candle.ClosePrice);
var isSmaller = this.ind.LastValue < 200;
if (isSmaller == true)
{
var direction = isSmaller ? OrderDirections.Sell : OrderDirections.Buy;
var order = this.CreateOrder(direction, base.Security.GetMarketPrice(direction), 1);
var strategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
base.ChildStrategies.Add(strategy);
_isSmaller = isSmaller;
}
return ProcessResults.Continue;
}
}
}
</pre>
</div></div><br /><br />Очень надеюсь на хелп, а то стопорится все что можно<br /> <br /><br /><br />https://stocksharp.ru/topic/2182/Где взять файл OpenQuant.exe?2011-11-29T10:12:59Z2011-11-29T10:12:59Ztraderhttps://stocksharp.ru/users/556/info@stocksharp.ruЗдравствуйте!<br /><br />Установил программу установщиком, в папке с программой нет файла самого приложения OpenQuant.exe?<br />https://stocksharp.ru/topic/2181/Время выставления заявки2011-11-28T21:30:11Z2011-11-28T21:30:11Zvk37https://stocksharp.ru/users/6296/info@stocksharp.ruПодскажите, пожалуйста, как измерить промежуток времени между подачей заявки моим роботом и временем регистрации заявки на бирже?https://stocksharp.ru/topic/2179/Котировщик не выставляет заявки2011-11-28T18:18:08Z2011-11-28T18:18:08Zmdvhttps://stocksharp.ru/users/6039/info@stocksharp.ruОбновился с 4.03 до 4.06. Верифаер пишет, что таблицы настроены правильно. После запуска котирования ничего не происходит. Как можно попробовать выяснить, в чем тут дело?<br /><div class="quote"><span class="quotetitle">Цитата:</span><div class="innerquote">22:05:25.820 | | TLS | Стратегия хочет продать 1.<br />22:05:25.839 | | MQS | Стратегия запущена.<br />22:05:25.909 | | MQS | Правило 'Изменение стакана инструмента RIZ1@RTS' активировано.<br />22:05:25.913 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:26.133 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:26.140 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:26.399 | | MQS | Правило 'Изменение стакана инструмента RIZ1@RTS' активировано.<br />22:05:26.649 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:27.413 | | MQS | Правило 'Изменение стакана инструмента RIZ1@RTS' активировано.<br />22:05:27.444 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:27.460 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:27.710 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:27.975 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:28.240 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:28.427 | | MQS | Правило 'Изменение стакана инструмента RIZ1@RTS' активировано.<br />22:05:28.770 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:29.441 | | MQS | Правило 'Изменение стакана инструмента RIZ1@RTS' активировано.<br />22:05:30.461 | | MQS | Правило 'Изменение стакана инструмента RIZ1@RTS' активировано.<br />22:05:30.633 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:30.898 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:31.462 | | MQS | Правило 'Изменение стакана инструмента RIZ1@RTS' активировано.<br />22:05:32.488 | | MQS | Правило 'Изменение стакана инструмента RIZ1@RTS' активировано.<br />22:05:33.488 | | MQS | Правило 'Изменение стакана инструмента RIZ1@RTS' активировано.<br />22:05:34.507 | | MQS | Правило 'Изменение стакана инструмента RIZ1@RTS' активировано.<br />22:05:34.570 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:34.819 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:35.550 | | MQS | Правило 'Изменение стакана инструмента RIZ1@RTS' активировано.<br />22:05:35.596 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:35.862 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:35.924 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:35.955 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:36.205 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:36.392 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:36.392 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:36.548 | | MQS | Правило 'Изменение стакана инструмента RIZ1@RTS' активировано.<br />22:05:36.642 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:36.907 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:37.172 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:37.188 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:37.453 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:37.453 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:37.546 | | MQS | Правило 'Изменение стакана инструмента RIZ1@RTS' активировано.<br />22:05:37.698 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:37.950 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:38.468 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:38.468 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:38.561 | | MQS | Правило 'Изменение стакана инструмента RIZ1@RTS' активировано.<br />22:05:38.733 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:39.529 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:39.575 | | MQS | Правило 'Изменение стакана инструмента RIZ1@RTS' активировано.<br />22:05:40.073 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:40.330 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:40.331 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:40.588 | | MQS | Правило 'Изменение стакана инструмента RIZ1@RTS' активировано.<br />22:05:41.105 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' активировано.<br />22:05:41.143 | | MQS | Правило 'MQS - остановка' активировано.<br />22:05:41.144 | | MQS | Правило 'MQS - остановка' удалено.<br />22:05:41.144 | | MQS | Стратегия останавливается.<br />22:05:41.145 | | MQS | Заканчиваем котирование с неисполненным объемом равный 1.<br />22:05:41.146 | | MQS | Правило 'Изменение стакана инструмента RIZ1@RTS' удалено.<br />22:05:41.146 | | MQS | Заканчиваем котирование с неисполненным объемом равный 1.<br />22:05:41.147 | | MQS | Правило 'Изменение инструмента RIZ1@RTS' удалено.<br />22:05:41.147 | | MQS | Заканчиваем котирование с неисполненным объемом равный 1.<br />22:05:41.148 | | MQS | Правило 'Изменение позиции стратегии MQS' удалено.<br />22:05:41.155 | | MQS | Стратегия остановлена.</div></div>https://stocksharp.ru/topic/2178/Свечи с таймфреймом менее секунды2011-11-28T17:57:58Z2011-11-28T17:57:58Zvk37https://stocksharp.ru/users/6296/info@stocksharp.ruИспользую версию 3.2.11<br />Пробую сохранить сформированные свечи в тхт формат из Гидры. Таймфрейм для свечей менее секунды. Все, кроме отсутствия в дате долей секунд, формируется, похоже, правильно. В тхт экспортируются с точностью до секунды. Поменял txt_export_candles.st на:<br /><br />$candles:{$it.Time; format="dd.MM.yyyy"$, $it.Time; format="HH:mm:ss.FFFFFFF"$, $it.OpenPrice$, $it.HighPrice$, $it.LowPrice$, $it.ClosePrice$, $it.TotalVolume$<br />}$<br /><br />Все равно точность только до секунд. Похоже, что метод candleManager.GetCandles(token) в CandlesWindow формирует свечи со свойством Time с точностью до секунд. Можно повысить точность свойства Time?https://stocksharp.ru/topic/2177/SampleHistoryTesting - вопрос по формированию свечек2011-11-28T17:02:06Z2011-11-28T17:02:06ZLerahttps://stocksharp.ru/users/219/info@stocksharp.ruЗдравствуйте!<br /><br />При разборе примера "SampleHistoryTesting" (только начинаю осваивать s#), сталкнулась с проблемой, описанной <a href="http://stocksharp.com/forum/1125/Exchange-working-time/" title="http://stocksharp.com/forum/1125/Exchange-working-time/">здесь</a>, а именно:<br /><br />меняю значение timeframe на нестандартный (например, 7 минут) , получаю свечи 9:55, 10:02, 10:09,10:16 и тд. А нужны мне 10:00, 10:07, 10:14... Тогда я меняю значение _nextTime на base.TimeFrame.GetCandleBounds(base.Trader.MarketTime,Exchange.Rts.WorkingTime).Max, те чтобы значение _nextTime рассчитывалось относительно времени работы биржи. И теперь получаю свечки равные null.<br />Например, в 10:07 я хочу получить свечку 10:00, а она равна null... Ломаю голову, почему так происходит..?https://stocksharp.ru/topic/2176/как потсроить свечи по данным сохранённым в БД2011-11-28T09:30:17Z2011-11-28T09:30:17ZAlexK2https://stocksharp.ru/users/28616/info@stocksharp.ruкак я понял, сейчас гидра не может закачивать данные по сделкам из<br />квика. буду экспортить их через ODBC в базу.<br />теперь мне нужно построить по ним свечи. может у кого есть кусок кода<br />как это можно сделать? в документации не нашел :-(<br />https://stocksharp.ru/topic/2175/Можно ли извлечь прибыль из сезонности на рынке,используя простые методы?2011-11-28T08:48:44Z2011-11-28T08:48:44ZStockSharphttps://stocksharp.ru/users/341/info@stocksharp.rupratrader.livejournal.com<br /><br />Можно ли извлечь прибыль из сезонности на рынке,используя простые методы?<br />Да.<br /><br />Придется принять некие полу-аксиомы.<br />1)Все что есть у трейдера-это история.Здравый смысл по текущей ситуации тоже есть,но он лишь одна из форм использования истории.<br />2)Трейдинг основан на том предположении,что история будет повторяться.<br /><br />Интересное исследование сезонности опубликовано и расширено на российские индексы.<br />Суть проста.<br />1 ноября покупай,30 апреля продавай,все остальное время отдыхай.<br />Показатели эффективности такого подхода?<br />C 1960 года по сей день такие:<br />PF=4.33<br />Win%=73%<br />AvWin/AvLoss=1.64<br />Круто?<br /><br />продолжение по ссылкам<br /><br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAACHMX0gbJj-j0X-hUtbE6XZz2Q8mK-AehqU06fGyhsNr2ARVWZUJjmMx17aq1mq69Ng3_vy2pRUQrEQH_Gug__d" title="http://pratrader.livejournal.com/237029.html#comments
">http://pratrader.livejou...om/237029.html#comments
</a><br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAACHMX0gbJj-j0X-hUtbE6XZz2Q8mK-AehqU06fGyhsNr3hYyR0DNgaWnUDAkx0AZTVyEVD92UKBfTHVQb9mZKxK" title="http://pratrader.livejournal.com/236724.html#comments">http://pratrader.livejou...com/236724.html#comments</a>https://stocksharp.ru/topic/2174/После обновления 4.0.6 не работают правила2011-11-28T00:57:57Z2011-11-28T00:57:57Zpehashttps://stocksharp.ru/users/340/info@stocksharp.ruДоброго времени суток<br /><br />После обновления на версию 4.0.6, перестал работать вот такой код<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
this
.When(CandleToken.CandlesStarted())
.Do<IEnumerable<Candle>>(candles =>
{
var candle = candles.ElementAt(0);
};
</pre>
</div></div><br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:plain">
Ошибка 1 Делегат "System.Func<StockSharp.Algo.Strategies.StrategyRule<System.Collections.Generic.IEnumerable<StockSharp.Algo.Candles.Candle>>,System.Collections.Generic.IEnumerable<StockSharp.Algo.Candles.Candle>,System.Collections.Generic.IEnumerable<StockSharp.Algo.Candles.Candle>>" не принимает "1" аргументов C:\VS2010\AmBot\Strategy.cs 53 42 AmBot
</pre>
</div></div>https://stocksharp.ru/topic/2173/4.0.6 Trader.Connect() MethodAccessException2011-11-27T13:09:50Z2011-11-27T13:09:50ZRoman0https://stocksharp.ru/users/6034/info@stocksharp.ruЗаменил 4.0.5 на 4.0.6, внес изменения, нормально скомпилировалось, запускаю, Trader.Connect() выдает:<br /><div class="code"><strong>Код</strong><div class="innercode">Attempt by security transparent method 'Ecng.Interop.WinApi.GetProcessId(ManagedWinapi.Windows.SystemWindow)' to call native code through method 'Ecng.Interop.WinApi.GetWindowThreadProcessId(IntPtr, Int32 ByRef)' failed. Methods must be security critical or security safe-critical to call native code.<br />Attempt by security transparent method '#=qKfFOb$dmmYy_28XmokQi8u_CFnpAsKDaUbiigICkX9c=.DisposeNative()' to call native code through method '#=qKfFOb$dmmYy_28XmokQi8u_CFnpAsKDaUbiigICkX9c=.#=qui7SGkL$iNzM5199s$PjSQ==(IntPtr)' failed. Methods must be security critical or security safe-critical to call native code.<br />System.MethodAccessException<br />Stack Trace:<br /> at #=qKfFOb$dmmYy_28XmokQi8u_CFnpAsKDaUbiigICkX9c=.DisposeNative()<br /> at Ecng.Common.Disposable.Finalize()</div></div><br />После замены Ecng.*.dll на Change Set 11980 выдаваемое сообщение несколько изменилось:<br /><div class="code"><strong>Код</strong><div class="innercode">Attempt by security transparent method '#=qKfFOb$dmmYy_28XmokQi8u_CFnpAsKDaUbiigICkX9c=..ctor(System.String)' to call native code through method '#=qKfFOb$dmmYy_28XmokQi8u_CFnpAsKDaUbiigICkX9c=.#=qcmOMPVz4o0URNxOFjmfM4g==(System.String)' failed. Methods must be security critical or security safe-critical to call native code.<br />Attempt by security transparent method '#=qKfFOb$dmmYy_28XmokQi8u_CFnpAsKDaUbiigICkX9c=.DisposeNative()' to call native code through method '#=qKfFOb$dmmYy_28XmokQi8u_CFnpAsKDaUbiigICkX9c=.#=qui7SGkL$iNzM5199s$PjSQ==(IntPtr)' failed. Methods must be security critical or security safe-critical to call native code.<br />System.MethodAccessException<br />Stack Trace:<br /> at #=qKfFOb$dmmYy_28XmokQi8u_CFnpAsKDaUbiigICkX9c=.DisposeNative()<br /> at Ecng.Common.Disposable.Finalize()</div></div><br />Добавление [assembly: SecurityRules(SecurityRuleSet.Level1)] и <NetFx40_LegacySecurityPolicy enabled="true"/> ничего не изменило. Подскажите, пожалуйста, что нужно поправить.https://stocksharp.ru/topic/2172/Обновление до 4.0.6 и .NET 4.02011-11-27T09:38:29Z2011-11-27T09:38:29Zdestrhttps://stocksharp.ru/users/6306/info@stocksharp.ruLogManager.Listeners.Add(new ConsoleLogListener()); кидает исключение.<br /><br /><div class="quote"><span class="quotetitle">Цитата:</span><div class="innerquote">Attempt by security transparent method 'Ecng.Interop.WinApi.AllocateConsole()' to call native code through method 'Ecng.Interop.WinApi.AttachConsole(UInt32)' failed. Methods must be security critical or security safe-critical to call native code.</div></div><br />NetFx40_LegacySecurityPolicy не помогает или я не правильно его используюhttps://stocksharp.ru/topic/2171/Новый SmartCOM2011-11-25T18:06:02Z2011-11-25T18:06:02ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ruНеделю назад получил от АйТи новый СмартКом. Что изменилось - это вы в пресс релизе узнаете, но есть один большой плюс этой версии. Поддержка .NET 4.0. Из-за SmartTrader S# до сих пор не на четверке.<br /><br />Я протестировал, вроде работает. Ждать окончания тестирования АйТи Инвест особого желания нет, поэтому будем делать перевод на 4.0 в ближайшее же время. Запустят новый сервер в паблик - хорошо. Не запустят вовремя - переживем (как вариант, перейти временно или окончательно на Плазу).<br /><br />Новый инсталятор выложим в Коробку вместе с новым SmartTrader. Желаю все, кто использует СмартКом, скрестить пальцы, чтобы все взлетело.https://stocksharp.ru/topic/2170/АД 4.02011-11-25T16:05:04Z2011-11-25T16:05:04ZSergey Masyurahttps://stocksharp.ru/users/701/info@stocksharp.ru<a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAABMgrDr2Cai4d4QB-sBQ3yEqxa07oMX9jFCAEzZvy9akVysxj1wE1egNRkFRXsTK4YZyJeztEU3b_Q2KetPZtd83ncCqC1g0uCChK6uOkPEtA" title="https://alfadirect.ru/common/?page=dev_thread&p=&t=29187
">https://alfadirect.ru/co...read&p=&t=29187
</a><br /><br /> Текущая версия АД имеет значительное количество недостатков, но не будет подвергаться никакой модернизации, планируется к выводу из эксплуатации в 2012 году. Настоящий раздел форума не предназначен для обмена личными мнениями по вопросу качества ее работы. <br />В настоящее время в АБ завершается развертывание инфраструктуры для тестирования и эксплуатации новой платформы Интернет трейдинга: АД 4.0. В тестируемой версии АД4.0 среднее время возврата ID ордера (номера, присвоенного брокером), не превышает 1-2 мс с момента получения сервером брокера клиентского приказа. Заявленная производительность АД4.0 не менее 1000 ордеров в секунду.<br />Инфраструктура, на которой развернута тестовая версия АД4.0 имеет прямое оптоволоконное подключение к точкам обмена трафиком с провайдерами через MSK-IX, поэтому реальное время доступа к серверу АД через хорошего розничного провайдера Интернета, имеющего доступ на MSK-IX составляет в среднем 2-4 мс (пока испытывались провайдеры Onlime и ДС-связь). Мы ожидаем, что средний "раундтрип" ордера до ММВБ (с возвратом ID ордера на ММВБ) при подключении клиента через качественного провайдера не превысит 10- 15 мс. После ввода АД4.0 в эксплуатацию мы планируем регулярно публиковать основные характеристики производительности и скорости работы системы. <br />Решение о публикации API и реквизитов для подключения к АД4.0 планируется принять после завершения части тестов (вероятно до НГ). <br />Первоначальный доступ будет предоставлен только квалифицированным разработчикам ПО. <br /><br />АД4.0 полностью несовместима с предшествующими версиями<br />Это действительно принципиально новая платформа, в которой применены новые интерфейсы обмена данными, и модифицирована сама структура данных, которая не сопадает со структурой данных в текущих версиях АД. Полагаю, что старые наработки по АД вам не пригодятся. В частности, для реализации всего функционала системы Клиент АД4.0 должен поддерживать 4 одновременных подключения к разным серверам АБ. Отсутствие обратной совместимости версий АД - о осознанное вынужденное решение разработчиков. Мы не намерены слушать критику по этому вопросу. <br />Поддержка работоспособнности текущих версий АД будет производится АБ не менее 3-х месяцев после ввода в эксплуатацию полнофунционалльной релизной версии WIN Клиента АД4.0 и публикации АПИ для разработки приложений для конкурирующих ОС. Мы планируем, что это произойдет не ранее 3кв 2012 года.<br /><br />---<br /><br />Такие новости, лично мне нравится.https://stocksharp.ru/topic/2169/Когда выполняется правило candleToken.CandlesFinished()2011-11-25T05:10:41Z2011-11-25T05:10:41Zfreelancerhttps://stocksharp.ru/users/28572/info@stocksharp.ruСобственно вопрос...<br />Только не надо отвечать что когда свеча закончилась :)<br />Я использую квик.<br /><br />И ещё 1 вопрос. Время у нас 23:49:49. Свеча закончилась -> мы кидаем заявку. Она успеет исполниться ?https://stocksharp.ru/topic/2168/RandomWalkTradeGenerator неправильно генерит тики2011-11-24T23:17:23Z2011-11-24T23:17:23Zpehashttps://stocksharp.ru/users/340/info@stocksharp.ruПриветствую<br /><br />RandomWalkTradeGenerator генерирует тиковые сделки с периодичностью MarketTimeChangedInterval, заданного в EmulationTrader. Меняю это значение на 1 секунду, сделка генерится раз в секунду, меняю на 5 мин., будет генерироваться раз в 5 мин. При этом если я устанавливаю в Interval для TradeGenerators[security] - ничего не происходит, какое бы я туда значение не ставил <br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
this._trader = new EmulationTrader(new[] { security }, new[] { portfolio })
{
MarketTimeChangedInterval = TimeSpan.FromMinutes(5),
WorkingTime = Exchange.Ux.WorkingTime,
DaysInMemory = 6,
};
//Generate MarketDepth and Ticks
this._trader.DepthGenerators[security] = new TrendMarketDepthGenerator(security){ Interval = TimeSpan.FromSeconds(1) };
this._trader.TradeGenerators[security] = new RandomWalkTradeGenerator(security, 1400);
</pre>
</div></div><br /><br />Я правильно понимаю, что тики должны генериться раз в Interval для генератора а не раз в MarketTimeChangedInterval Эмулейшен Трейдера (а еще лучше случайное к-во сделок в любой интервал времени)? Это какой-то глюк или я не разобрался, как оно должно работать?<br /><br />Мне вообще нужно, чтобы генерировалось рандомное к-во тиковых сделок в каждом MarketTimeChangedInterval...https://stocksharp.ru/topic/2167/Не правильно расчитывается ExportTimeOutInterval2011-11-24T14:45:01Z2011-11-24T14:45:01Zvaderhttps://stocksharp.ru/users/28223/info@stocksharp.ru<div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
this.Trader = new QuikTrader(this.Path.Text);
this.Trader.ReConnectionSettings.Interval = TimeSpan.FromSeconds(10);
this.Trader.ReConnectionSettings.WorkingTime = Exchange.Rts.WorkingTime;
this.Trader.ReConnectionSettings.ExportTimeOutInterval = TimeSpan.FromSeconds(30);
this.Trader.ReConnectionSettings.ExportTimeOut += delegate { MessageBox.Show("Данные не поступают."); };
</pre>
</div></div><br /><br />Такой код извещал о не поступлении данных примерно раз в 1,3 минуты, а не в 30 сек, при реальном отсутсвии данных.<br />В чем может быть проблема?<br /><br />Если поставить TimeSpan.FromSeconds(60);, то первое сообщение будет примерно через 1,47 второе через 2 минуты, третье ещё через 2.https://stocksharp.ru/topic/2166/Ренко2011-11-24T12:25:19Z2011-11-24T12:25:19Zqpilehttps://stocksharp.ru/users/6397/info@stocksharp.ruДобрый день, уважаемые разработчики всем!<br />Пытаюсь разобраться и сделать свой собственный тип данных(Renko).<br />Создаю класс RandeCandle и наследую его от Candles, как в инструкции. А где и как потом производить регистрацию нового графика?Читал, что вот так candleBuilder.Factories.Add(new TickCandleFactory()); Но где?<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using StockSharp.Algo.Candles;
namespace SampleCandles
{
public class RandeCandle : Candle
{
public int TradeCount { get; set; }
public override object Arg
{
get { return TradeCount; }
}
}
public class TickCandleFactory : CandleFactory<TickCandle, int>
{
protected override TickCandle CreateCandle(CandleToken<TickCandle, int> token, ICandleBuilderSourceValue value)
{
return FirstInitCandle(new TickCandle { TradeCount = token.TypedArg, Time = value.Time }, value);
}
protected override bool IsCandleFinishedBeforeChange(CandleToken<TickCandle, int> token, TickCandle candle, ICandleBuilderSourceValue value)
{
return Builder.Container.GetValues(candle).Count() >= candle.TradeCount;
}
}
}
</pre>
</div></div>