Получение свечки реального времени от Альфа-Директ
~/topic/2829/poluchenie-svechki-realnogo-vremeni-ot-alfa-direkt/
Copyright @ StockSharp Platform LLC 2010 - 2024
2024-03-28T12:24:35Z
https://stocksharp.com/images/logo.png
https://stocksharp.com/posts/m/26446/
Почему с AlfaDirect выводятся график завершенные и последняя незавершенная свечи? В Quik такого нет,...
2013-06-24T07:26:14Z
2013-06-24T07:26:35Z
UsilaDobry
https://stocksharp.com/users/28825/
info@stocksharp.com
Почему с AlfaDirect выводятся график завершенные и последняя незавершенная свечи? В Quik такого нет, при исполнении такого кода выводятся только завершенные свечи... Или это особенность терминала AlfaDirect?<br /><br /><div class="code"><strong>Code</strong><div class="innercode"><pre class="brush:csharp">
_series.ProcessCandle += candle =>
{
if (candle.State == CandleStates.Finished)
{
this.GuiAsync(() =>_chartWindow.Chart.ProcessValues(candle.OpenTime, new Dictionary<IChartElement, object>
{
{_candlesElem, candle},
}));
}
};</pre>
</div></div>
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.com/posts/m/26423/
Странно...Вернул всё в первоначальный вид, (топик #18), убрал проверку на IsFormed, ничего не измени...
2013-06-21T18:14:32Z
2013-06-21T18:15:29Z
UsilaDobry
https://stocksharp.com/users/28825/
info@stocksharp.com
Странно...Вернул всё в первоначальный вид, (топик #18), убрал проверку на IsFormed, ничего не изменилось...Всё также, как в топике #27. Я уже закипаю...<br /><br /><div class='spoilertitle'><input type='button' value='Show spoiler' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_bd13e2388340474fb71205d0fbf6e207');" title='Show spoiler' /></div><div class='spoilerbox' id='spolier_bd13e2388340474fb71205d0fbf6e207' style='display:none'><div class="code"><strong>Code</strong><div class="innercode"><pre class="brush:csharp">
////////////////////////ОТРИСОВКА ИСТОРИЧЕСКИХ СВЕЧЕЙ/////////////////////////////////////////////////////////////////////
this.GuiAsync(() =>
{
foreach (var candle in candles)
{
var valueBb = _chartBollingerElement.Indicator.Process(new CandleIndicatorValue(candle));
var candle1 = candle;
this.GuiAsync(() => _chartWindow.Chart.ProcessValues(candle1.OpenTime, new Dictionary<IChartElement, object>
{
{_candlesElem, candle1},
{_chartBollingerElement, new ChartIndicatorValue(_chartBollingerElement.Indicator, valueBb)},
}));
}
});
///////////ОТРИСОВКА РЕАЛЬНЫХ СВЕЧЕЙ/////////////////////////////////////////////////////////////////////
_candleManager = new CandleManager(_trader);
_series = new CandleSeries(typeof(TimeFrameCandle), security, (TimeSpan)AlfaTimeFrames.Minute10);
_series.ProcessCandle += candle => this.GuiAsync(() =>
{
if (candle.State == CandleStates.Finished)
{
var valueBb = _chartBollingerElement.Indicator.Process(new CandleIndicatorValue(candle));
this.GuiAsync(() =>_chartWindow.Chart.ProcessValues(candle.OpenTime,new Dictionary<IChartElement, object>
{
{_candlesElem, candle},
{_chartBollingerElement,new ChartIndicatorValue(_chartBollingerElement.Indicator,valueBb)},
}));
}
else
{
this.GuiAsync(() => _chartWindow.Chart.ProcessCandle(_candlesElem, candle));
}
});</pre>
</div></div></div>
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.com/posts/m/26422/
Изменил код, индикатор сначала выводится корректно (вложение 1), а потом с приходом нового тика сжим...
2013-06-21T17:42:40Z
2013-06-21T17:42:40Z
UsilaDobry
https://stocksharp.com/users/28825/
info@stocksharp.com
<div class="quote"><span class="quotetitle">Михаил Сухов <a href="https://stocksharp.com/posts/m/26421/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">UsilaDobry <a href="https://stocksharp.com/posts/m/26420/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote">Изменил код, индикатор сначала выводится корректно (вложение 1), а потом с приходом нового тика сжимается и на последней свечке стягивается в точку (вложение 2)...?</div></div><br /><br />А теперь изучайте что такое IsFinal[laugh] </div></div><br /><br />[confused] <br />Как я понимаю, IsFinal=true например для 10-минутного графика означает, что после формирования 10-минутной свечи (когда она примет состояние Finished) значение индикатора больше не будет изменяться, оно будет окончательным.
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.com/posts/m/26421/
Изменил код, индикатор сначала выводится корректно (вложение 1), а потом с приходом нового тика сжим...
2013-06-21T16:55:26Z
2013-06-21T16:55:26Z
Mikhail Sukhov
https://stocksharp.com/users/201/
info@stocksharp.com
<div class="quote"><span class="quotetitle">UsilaDobry <a href="https://stocksharp.com/posts/m/26420/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote">Изменил код, индикатор сначала выводится корректно (вложение 1), а потом с приходом нового тика сжимается и на последней свечке стягивается в точку (вложение 2)...?</div></div><br /><br />А теперь изучайте что такое IsFinal[laugh]
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.com/posts/m/26420/
Изменил код, индикатор сначала выводится корректно (вложение 1), а потом с приходом нового тика сжим...
2013-06-21T16:36:43Z
2013-06-21T16:37:23Z
UsilaDobry
https://stocksharp.com/users/28825/
info@stocksharp.com
Изменил код, индикатор сначала выводится корректно (вложение 1), а потом с приходом нового тика сжимается и на последней свечке стягивается в точку (вложение 2)...? Хотя, согласно кода на последней свечке вообще не должно быть вычисление индикатора пока она в состоянии изменения...<br /><br /><br /><br /><div class='spoilertitle'><input type='button' value='Show spoiler' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_5ac7106b4c4e4596bd4309716666d26e');" title='Show spoiler' /></div><div class='spoilerbox' id='spolier_5ac7106b4c4e4596bd4309716666d26e' style='display:none'><div class="code"><strong>Code</strong><div class="innercode"><pre class="brush:csharp">
////////////////////ОТРИСОВКА ИСТОРИЧЕСКИХ СВЕЧЕЙ/////////////////////////////////////////////////////////////////////
this.GuiAsync(() =>
{
foreach (var candle in candles)
{
var valueBb = _chartBollingerElement.Indicator.Process(new CandleIndicatorValue(candle) { IsFinal = true });
var candle1 = candle;
this.GuiAsync(() => _chartWindow.Chart.ProcessValues(candle1.OpenTime, new Dictionary<IChartElement, object>
{
{_candlesElem, candle1},
{_chartBollingerElement, new ChartIndicatorValue(_chartBollingerElement.Indicator, valueBb)},
}));
}
});
///////////////////ОТРИСОВКА РЕАЛЬНЫХ СВЕЧЕЙ/////////////////////////////////////////////////////////////////////
_candleManager = new CandleManager(_trader);
_series = new CandleSeries(typeof(TimeFrameCandle), security, (TimeSpan)AlfaTimeFrames.Minute10);
_series.ProcessCandle += candle => this.GuiAsync(() =>
{
if (candle.State == CandleStates.Finished)
{
var valueBb = _chartBollingerElement.Indicator.Process(new CandleIndicatorValue(candle){IsFinal = true});
if (_chartBollingerElement.Indicator.IsFormed)
{
var candle1 = candle;
this.GuiAsync(() =>_chartWindow.Chart.ProcessValues(candle1.OpenTime,new Dictionary<IChartElement, object>
{
{_candlesElem, candle1},
{_chartBollingerElement,new ChartIndicatorValue(_chartBollingerElement.Indicator,valueBb)
},
}));
}
}
else
{
var candle1 = candle;
this.GuiAsync(() => _chartWindow.Chart.ProcessCandle(_candlesElem, candle1));
}
});</pre>
</div></div></div>
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.com/posts/m/26417/
Простая скользящая средняя цены закрытия это среднее арифметическое значений цены закрытия за период...
2013-06-21T15:13:24Z
2013-06-21T15:13:24Z
Mikhail Sukhov
https://stocksharp.com/users/201/
info@stocksharp.com
<div class="quote"><span class="quotetitle">UsilaDobry <a href="https://stocksharp.com/posts/m/26415/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote">Простая скользящая средняя цены закрытия это среднее арифметическое значений цены закрытия за период. В нашем случае период = 20.<br />В моем понимании свойство SMA.IsFormed = true, т.е. индикатор сформирован, значит есть минимум 20 значений цены закрытия, которые позволяют рассчитать первое значение индикатора, до тех пор, пока не будут получены 20 значений цены закрытия<br />свойство SMA.IsFormed = false.</div></div><br /><br />Ну вот, а вы индикатор то в своем коде не заполняете. Как ему сформироваться при этом?
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.com/posts/m/26415/
Проверка на IsFormed вообще не пропускает исполнение кода в ветку оператора if, выводятся только све...
2013-06-21T14:24:43Z
2013-06-21T14:37:12Z
UsilaDobry
https://stocksharp.com/users/28825/
info@stocksharp.com
<div class="quote"><span class="quotetitle">Михаил Сухов <a href="https://stocksharp.com/posts/m/26413/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">UsilaDobry <a href="https://stocksharp.com/posts/m/26409/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote">Проверка на IsFormed вообще не пропускает исполнение кода в ветку оператора if, выводятся только свечи по оператору else...<br /></div></div><br /><br />Сейчас код неправильно написан в корне... Мне кажется надо не игнорировать, а понять, что такое IsFormed. Давайте резберем формулу скользящей средней.</div></div><br /><br />Простая скользящая средняя цены закрытия это среднее арифметическое значений цены закрытия за период. В нашем случае период = 20.<br />В моем понимании свойство SMA.IsFormed = true, т.е. индикатор сформирован, значит есть минимум 20 значений цены закрытия, которые позволяют рассчитать первое значение индикатора, до тех пор, пока не будут получены 20 значений цены закрытия<br />свойство SMA.IsFormed = false.
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.com/posts/m/26413/
Проверка на IsFormed вообще не пропускает исполнение кода в ветку оператора if, выводятся только све...
2013-06-21T12:39:42Z
2013-06-21T12:39:42Z
Mikhail Sukhov
https://stocksharp.com/users/201/
info@stocksharp.com
<div class="quote"><span class="quotetitle">UsilaDobry <a href="https://stocksharp.com/posts/m/26409/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote">Проверка на IsFormed вообще не пропускает исполнение кода в ветку оператора if, выводятся только свечи по оператору else...<br /></div></div><br /><br />Сейчас код неправильно написан в корне... Мне кажется надо не игнорировать, а понять, что такое IsFormed. Давайте резберем формулу скользящей средней.
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.com/posts/m/26409/
Проверка на IsFormed вообще не пропускает исполнение кода в ветку оператора if, выводятся только све...
2013-06-21T10:24:26Z
2013-06-21T10:50:14Z
UsilaDobry
https://stocksharp.com/users/28825/
info@stocksharp.com
Проверка на IsFormed вообще не пропускает исполнение кода в ветку оператора if, выводятся только свечи по оператору else...<br /><div class="code"><strong>Code</strong><div class="innercode"><pre class="brush:csharp">
_series.ProcessCandle += candle =>
{
if (candle.State == CandleStates.Finished && _chartBollingerElement.Indicator.IsFormed)
{
var valueBb = _chartBollingerElement.Indicator.Process(new CandleIndicatorValue(candle) { IsFinal = true });
this.GuiAsync(() => _chartWindow.Chart.ProcessValues(candle.OpenTime, new Dictionary<IChartElement, object>
{
{_candlesElem, candle},
{_chartBollingerElement, new ChartIndicatorValue(_chartBollingerElement.Indicator, valueBb)},
}));
}
else
{
this.GuiAsync(() => _chartWindow.Chart.ProcessCandle(_candlesElem, candle));
}
};</pre>
</div></div><br /><br />И почему же я указываю выводить в debug значения законченных свечей, а выводятся 5-секундные значения изменяемой свечи?..<br /><br /><div class="code"><strong>Code</strong><div class="innercode"><pre class="brush:csharp">
_series.ProcessCandle += candle =>
{
if (candle.State != CandleStates.Finished)
return;
Debug.WriteLine("{0}", candle.ToString());
};</pre>
</div></div>
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.com/posts/m/26402/
Изменил немного код вывода значений индикатора, картинка без изменений... IIndicator.IsFormed провер...
2013-06-21T07:03:15Z
2013-06-21T07:03:15Z
Mikhail Sukhov
https://stocksharp.com/users/201/
info@stocksharp.com
<div class="quote"><span class="quotetitle">UsilaDobry <a href="https://stocksharp.com/posts/m/26400/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">Михаил Сухов <a href="https://stocksharp.com/posts/m/26399/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">UsilaDobry <a href="https://stocksharp.com/posts/m/26390/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote">Изменил немного код вывода значений индикатора, картинка без изменений...<br /></div></div><br /><br />IIndicator.IsFormed проверяется?</div></div><br /><br />Разве свойство значения индикатора IsFinal = true не решает эту проверку?</div></div><br /><br />IsFinal - это свойство, определяющее что данные окончательные в текущем ТФ. IsFormed - что индикатор сформировался и готов к работе (в т.ч. и отрисовки на графике). Посмотрите математическую формулу скользящих (я так понимаю Полосы на основе них сделаны). Все станет понятно.
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.com/posts/m/26400/
Изменил немного код вывода значений индикатора, картинка без изменений... IIndicator.IsFormed провер...
2013-06-21T06:54:26Z
2013-06-21T06:57:45Z
UsilaDobry
https://stocksharp.com/users/28825/
info@stocksharp.com
<div class="quote"><span class="quotetitle">Михаил Сухов <a href="https://stocksharp.com/posts/m/26399/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">UsilaDobry <a href="https://stocksharp.com/posts/m/26390/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote">Изменил немного код вывода значений индикатора, картинка без изменений...<br /></div></div><br /><br />IIndicator.IsFormed проверяется?</div></div><br /><br />Разве свойство значения индикатора IsFinal = true не решает эту проверку? Значение окончательное, более неизменное в данный момент времени... У меня такое чувство, что значения индикатора считаются каждые 5 секунд по мере поступления исторических тиков, это как-то пересекается с моим предыдущим постом... <br /><div class='spoilertitle'><input type='button' value='Show spoiler' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_f1156c73074b4de4b6ac8da0e3bd41dc');" title='Show spoiler' /></div><div class='spoilerbox' id='spolier_f1156c73074b4de4b6ac8da0e3bd41dc' style='display:none'><div class="code"><strong>Code</strong><div class="innercode"><pre class="brush:csharp">
_series.ProcessCandle += candle =>
{
if (candle.State == CandleStates.Finished)
{
var valueBb = _chartBollingerElement.Indicator.Process(new CandleIndicatorValue(candle) { IsFinal = true });
this.GuiAsync(() => _chartWindow.Chart.ProcessValues(candle.OpenTime, new Dictionary<IChartElement, object>
{
{_candlesElem, candle},
{_chartBollingerElement, new ChartIndicatorValue(_chartBollingerElement.Indicator, valueBb)},
}));
}
else
{
this.GuiAsync(() => _chartWindow.Chart.ProcessCandle(_candlesElem, candle));
}
};</pre>
</div></div></div>
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.com/posts/m/26398/
При выводе реальных свечек AlfaTrader засыпает logFile каждые 5 секунд сообщениями 2013/06/21 10:15:...
2013-06-21T06:25:33Z
2013-06-21T06:46:20Z
UsilaDobry
https://stocksharp.com/users/28825/
info@stocksharp.com
При выводе реальных свечек AlfaTrader засыпает logFile каждые 5 секунд сообщениями <br /><br /><div class='spoilertitle'><input type='button' value='Show spoiler' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_c1ff2b9b93724b82a3f44e643ccb1c56');" title='Show spoiler' /></div><div class='spoilerbox' id='spolier_c1ff2b9b93724b82a3f44e643ccb1c56' style='display:none'><div class="code"><strong>Code</strong><div class="innercode"><pre class="brush:plain">
2013/06/21 10:15:08.168| |AlfaTrader|StartExport()
2013/06/21 10:15:08.169| |AlfaTrader|Экспорт в процессе запуска.
2013/06/21 10:15:08.174| |AlfaTrader|Экспорт запущен.
2013/06/21 10:15:09.204| |AlfaTrader|RegisterTrades: RTSI-9.13@FORTS
2013/06/21 10:15:09.236| |AlfaTrader|create order: id = 117646314, tr. id = 853345110
2013/06/21 10:15:09.236| |AlfaTrader|Создание ордера из терминала, tr. id 853345110
2013/06/21 10:15:09.244| |AlfaTrader|update order: id = 117646314
2013/06/21 10:15:09.246| |AlfaTrader|Order changed: 853345110/117646314 Покупка Цена=121000 Объем=1 Сост=Done Бал=1
2013/06/21 10:15:09.249| |AlfaTrader|New order: 853345110/117646314 Покупка Цена=121000 Объем=1 Сост=Done Бал=1
2013/06/21 10:15:15.662| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 01.01.0001 0:00:00 - 21.06.2013 10:15:15
2013/06/21 10:15:17.308| |AlfaTrader|RegisterQuotes: RTSI-9.13@FORTS
2013/06/21 10:15:18.185| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 01.01.0001 0:01:00 - 21.06.2013 10:16:18
2013/06/21 10:16:32.576| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:16:00 - 21.06.2013 10:17:32
2013/06/21 10:16:32.629| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:17:32
2013/06/21 10:16:32.677| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:17:32
2013/06/21 10:16:32.725| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:17:32
2013/06/21 10:16:32.772| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:17:32
2013/06/21 10:16:32.819| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:17:32
2013/06/21 10:16:32.874| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:17:32
2013/06/21 10:16:32.928| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:17:32
2013/06/21 10:16:32.976| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:17:32
2013/06/21 10:16:33.024| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:17:33
2013/06/21 10:16:33.130| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:17:33
2013/06/21 10:16:33.183| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:17:33
2013/06/21 10:16:33.230| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:17:33
2013/06/21 10:16:33.278| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:17:33
2013/06/21 10:16:33.325| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:17:33
2013/06/21 10:16:38.326| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:17:38
2013/06/21 10:16:43.328| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:17:43
2013/06/21 10:16:48.336| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:17:48
2013/06/21 10:16:53.346| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:17:53
2013/06/21 10:16:58.352| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:17:58
2013/06/21 10:17:03.359| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:18:03
2013/06/21 10:17:08.366| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:17:00 - 21.06.2013 10:18:08
2013/06/21 10:17:13.376| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:18:00 - 21.06.2013 10:18:13
2013/06/21 10:17:18.382| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:18:00 - 21.06.2013 10:18:18
2013/06/21 10:17:23.388| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:18:00 - 21.06.2013 10:18:23
2013/06/21 10:17:28.401| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:18:00 - 21.06.2013 10:18:28
2013/06/21 10:17:33.407| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:18:00 - 21.06.2013 10:18:33
2013/06/21 10:17:38.416| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:18:00 - 21.06.2013 10:18:38
2013/06/21 10:17:43.419| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:18:00 - 21.06.2013 10:18:43
2013/06/21 10:17:48.428| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:18:00 - 21.06.2013 10:18:48
2013/06/21 10:17:53.438| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:18:00 - 21.06.2013 10:18:53
2013/06/21 10:17:58.442| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:18:00 - 21.06.2013 10:18:58
2013/06/21 10:18:03.451| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:18:00 - 21.06.2013 10:19:03
2013/06/21 10:18:08.462| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:18:00 - 21.06.2013 10:19:08
2013/06/21 10:18:13.468| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:18:00 - 21.06.2013 10:19:13
2013/06/21 10:18:18.473| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:18:00 - 21.06.2013 10:19:18
2013/06/21 10:18:23.480| |AlfaTrader|GetLocalHistoryData: RTSI-9.13@FORTS, 21.06.2013 10:18:00 - 21.06.2013 10:19:23
</pre>
</div></div></div><br /><br />Запустил простую стратегию для пробы, для контроля вывожу законченные свечи в debug, но законченные свечи не выводятся, свечи выводятся в debug каждые 5 секунд...<br />И стратегия не понимает состояние свечки Finished, срабатывает на каждые 5 секунд... Возможно из-за этого и индикатор выводится не корректно?..<br /><br />Код запуска стратегии<br /><div class='spoilertitle'><input type='button' value='Show spoiler' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_2cd9aa53aac2469c9eadb25a4ac1796c');" title='Show spoiler' /></div><div class='spoilerbox' id='spolier_2cd9aa53aac2469c9eadb25a4ac1796c' style='display:none'><div class="code"><strong>Code</strong><div class="innercode"><pre class="brush:csharp">
private void TradingBtn_Click(object sender, RoutedEventArgs e)
{
try
{
if (_strategyFirst == null)
{
var security = SelectedSecurity;
_candleManager = new CandleManager(_trader);
_series = new CandleSeries(typeof(TimeFrameCandle), security, (TimeSpan)AlfaTimeFrames.Minute1);
_candleManager.Start(_series);
_series.ProcessCandle += candle =>
{
if (candle.State != CandleStates.Finished)
return;
Debug.WriteLine("{0}", candle.ToString());
};
_strategyFirst = new StrategyFirst(_series)
{
Trader = _trader,
Security = SelectedSecurity,
Portfolio = SelectedPortfolio,
Volume = 1
};
_strategyFirst.WhenOrderRegistered()
.Do(order => this.GuiAsync(() => _chartWindow.Chart.ProcessValues(order.Time, new Dictionary<IChartElement, object> { { _chartOrderElement, order }, })))
.Apply();
_strategyFirst.WhenNewMyTrades()
.Do(trades => trades.ForEach(t => this.GuiAsync(() => _chartWindow.Chart.ProcessValues(t.Trade.Time, new Dictionary<IChartElement, object> { { _chartTradeElement, t }, }))))
.Apply();
_strategyFirst.ProcessStateChanged += s =>
{
TradingBtn.Content = s.ProcessState == ProcessStates.Started
? "Cтоп"
: "Старт";
};
_trader.RegisterMarketDepth(SelectedSecurity);
_logManager.Sources.Add(_strategyFirst);
_strategyFirst.Start();
}
else if (_strategyFirst.ProcessState == ProcessStates.Stopping ||
_strategyFirst.ProcessState == ProcessStates.Stopped)
{
// в ином случаем запускаем стратегию
_strategyFirst.Start();
}
else
{
//или останавливаем
if (_strategyFirst.Position != 0)
_strategyFirst.ClosePosition();
_strategyFirst.Stop();
}
}
catch (Exception exc)
{
MessageBox.Show(exc.ToString());
}
}</pre>
</div></div></div><br /><br />Код стратегии<br /><br /><div class='spoilertitle'><input type='button' value='Show spoiler' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_3691adc19c4d46069487743747d8d43b');" title='Show spoiler' /></div><div class='spoilerbox' id='spolier_3691adc19c4d46069487743747d8d43b' style='display:none'><div class="code"><strong>Code</strong><div class="innercode"><pre class="brush:csharp">
using System;
using System.Windows;
using StockSharp.Algo.Candles;
using StockSharp.Algo.Strategies;
using StockSharp.Logging;
namespace MARKET_SUCCESS_ALFA
{
class StrategyFirst : Strategy
{
private readonly CandleSeries _candleSeries;
public StrategyFirst(CandleSeries series)
{
_candleSeries = series;
}
protected override void OnStarted()
{
try
{
_candleSeries.ProcessCandle += candle =>
{
if (candle.State != CandleStates.Finished) return;
//Получаем последнюю свечу
Candle candleLastFinish = _candleSeries.GetCandle<TimeFrameCandle>(0);
//Получаем предпослежнюю свечу
Candle candlePenultFinish = _candleSeries.GetCandle<TimeFrameCandle>(1);
//Сигнал на покупку
bool signalBuy = candleLastFinish.OpenPrice <
candleLastFinish.ClosePrice;
signalBuy = signalBuy &&
candlePenultFinish.OpenPrice <
candlePenultFinish.ClosePrice;
signalBuy = signalBuy && Position == 0;
//Сигнал на закрытие длинной позиции
bool signalStopBuy = Position > 0;
signalStopBuy = signalStopBuy &&
candleLastFinish.OpenPrice >
candleLastFinish.ClosePrice;
//Сигнал на продажу
bool signalSell = candleLastFinish.OpenPrice >
candleLastFinish.ClosePrice;
signalSell = signalSell &&
candlePenultFinish.OpenPrice >
candlePenultFinish.ClosePrice;
signalSell = signalSell && Position == 0;
//Сигнал на закрытие короткой позиции
bool signalStopSell = Position < 0;
signalStopSell = signalStopSell &&
candleLastFinish.OpenPrice <
candleLastFinish.ClosePrice;
//Реагируем на сигнал покупки
if (signalBuy)
{
//RegisterOrder(this.BuyAtLimit(Security.MaxPrice));
this.AddInfoLog("ОТКРЫВАЕМ ДЛИННУЮ позицию {0}.", candleLastFinish.CloseTime);
}
//Реагируем на сигнал закрытия позиции
if (signalStopBuy)
{
//RegisterOrder(this.SellAtLimit(Security.MinPrice));
this.AddInfoLog("ЗАКРЫВАЕМ ДЛИННУЮ позицию {0}.", candleLastFinish.CloseTime);
}
//Реагируем на сигнал продажи
if (signalSell)
{
//RegisterOrder(this.SellAtLimit(Security.MinPrice));
this.AddInfoLog("ОТКРЫВАЕМ КОРОТКУЮ позицию {0}.", candleLastFinish.CloseTime);
}
//Реагируем на сигнал закрытия позиции
if (signalStopSell)
{
//RegisterOrder(this.BuyAtLimit(Security.MaxPrice));
this.AddInfoLog("ЗАКРЫВАЕМ КОРОТКУЮ позицию {0}.", candleLastFinish.CloseTime);
}
};
}
catch (Exception exc)
{
MessageBox.Show(exc.ToString());
}
}
protected override void OnStopped()
{
}
}
}</pre>
</div></div></div><br /><br />Вывод в debug
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.com/posts/m/26399/
Изменил немного код вывода значений индикатора, картинка без изменений... IIndicator.IsFormed провер...
2013-06-21T06:40:58Z
2013-06-21T06:40:58Z
Mikhail Sukhov
https://stocksharp.com/users/201/
info@stocksharp.com
<div class="quote"><span class="quotetitle">UsilaDobry <a href="https://stocksharp.com/posts/m/26390/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote">Изменил немного код вывода значений индикатора, картинка без изменений...<br /></div></div><br /><br />IIndicator.IsFormed проверяется?
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.com/posts/m/26390/
Изменил немного код вывода значений индикатора, картинка без изменений... _series.ProcessCandle += c...
2013-06-20T11:09:26Z
2013-06-20T11:11:44Z
UsilaDobry
https://stocksharp.com/users/28825/
info@stocksharp.com
Изменил немного код вывода значений индикатора, картинка без изменений...<br /><br /><div class='spoilertitle'><input type='button' value='Show spoiler' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_59e0af5432904f1fba0b055306e1c29e');" title='Show spoiler' /></div><div class='spoilerbox' id='spolier_59e0af5432904f1fba0b055306e1c29e' style='display:none'><div class="code"><strong>Code</strong><div class="innercode"><pre class="brush:csharp">
_series.ProcessCandle += candle =>
{
try
{
if (candle.State == CandleStates.Finished)
{
var valueBb = _chartBollingerElement.Indicator.Process(new CandleIndicatorValue(candle) { IsFinal = true });
this.GuiAsync(() => _chartWindow.Chart.ProcessValues(candle.OpenTime, new Dictionary<IChartElement, object>
{
{_candlesElem, candle},
{_chartBollingerElement, new ChartIndicatorValue(_chartBollingerElement.Indicator, valueBb)},
}));
}
else
{
this.GuiAsync(() => _chartWindow.Chart.ProcessCandle(_candlesElem, candle));
}
}
catch (Exception exc)
{
MessageBox.Show(exc.ToString());
}
};</pre>
</div></div></div>
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.com/posts/m/26388/
Благодарю, реальные свечи выводятся корректно. Красота. Вот только значения индикатора BollingerBand...
2013-06-20T09:45:34Z
2013-06-20T09:48:45Z
UsilaDobry
https://stocksharp.com/users/28825/
info@stocksharp.com
Благодарю, реальные свечи выводятся корректно. Красота. Вот только значения индикатора BollingerBands выводятся странно.<br />Это мой код<br /><div class='spoilertitle'><input type='button' value='Show spoiler' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_c259816eb0eb4076a99436d910e1cc0b');" title='Show spoiler' /></div><div class='spoilerbox' id='spolier_c259816eb0eb4076a99436d910e1cc0b' style='display:none'><div class="code"><strong>Code</strong><div class="innercode"><pre class="brush:csharp">
private void ShowChartClick(object sender, RoutedEventArgs e)
{
try
{
var security = SelectedSecurity;
var timeFrame = (AlfaTimeFrames)((ComboBoxItem)HistoryInterval.SelectedItem).Tag;
if (From.Value != null)
{
var from = From.Value.Value;
if (To.Value != null)
{
var to = To.Value.Value;
if (@from > to)
{
return;
}
var candles = _trader.GetHistoryData(security, timeFrame, new Range<DateTime>(@from, to));
_chartWindow = new ChartWindow
{
Title = "{0}, {1}, {2} - {3}".Put(security.Code,
((ComboBoxItem)HistoryInterval.SelectedItem).Content,
@from.ToString(CultureInfo.InvariantCulture), to.ToString(CultureInfo.InvariantCulture))
};
var area = new ChartArea();
_chartWindow.Chart.ChartTheme = "ExpressionDark";
_chartWindow.Chart.IsAutoScroll = true;
_chartWindow.Chart.Areas.Add(area);
_candlesElem = new ChartCandleElement
{
Antialiasinig = false,
UpBodyColor = Colors.Chartreuse,
UpWickColor = Colors.Chartreuse,
DownBodyColor = Colors.Red,
DownWickColor = Colors.Red,
IsLegend = true,
};
_chartBollingerElement = new ChartIndicatorElement
{
Antialiasinig = false,
Color = Colors.DeepSkyBlue,
IsLegend = true,
Indicator = new BollingerBands
{
Length = 20,
Width = 2
},
Title = "Bollinger Bands",
DrawStyle = ChartIndicatorDrawStyles.Line,
};
_chartBollingerElement.DrawTemplate.VisualTree.SetValue(Shape.FillProperty, new SolidColorBrush(Colors.DeepSkyBlue));
area.Elements.Add(_candlesElem);
area.Elements.Add(_chartBollingerElement);
this.GuiAsync(() =>
{
foreach (var candle in candles)
_chartWindow.Chart.ProcessCandle(_candlesElem, candle);
});
_candleManager = new CandleManager(_trader);
_series = new CandleSeries(typeof(TimeFrameCandle), security, (TimeSpan)AlfaTimeFrames.Minute10);
_series.ProcessCandle += candle =>
{
if (candle.State == CandleStates.Finished || candle.State == CandleStates.Changed)
{
var final = candle.State == CandleStates.Finished;
var val = _chartBollingerElement.Indicator.Process(new DecimalIndicatorValue(candle.ClosePrice) { IsFinal = final });
var bollingerValue = new ChartIndicatorValue(_chartBollingerElement.Indicator, val);
this.GuiAsync(() => _chartWindow.Chart.ProcessValues(candle.OpenTime, new Dictionary<IChartElement, object>
{
{_candlesElem, candle},
{_chartBollingerElement, bollingerValue},
}));
}
};
_candleManager.Start(_series);
_chartWindow.Show();
}
}
}
catch (Exception exc)
{
MessageBox.Show(exc.ToString());
}
}</pre>
</div></div></div>
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.com/posts/m/26386/
Ошибка найдена и поправлена. Я постучался в скайп. Давайте проведем тестирование, может там еще что-...
2013-06-20T08:40:01Z
2013-06-20T08:40:01Z
Mikhail Sukhov
https://stocksharp.com/users/201/
info@stocksharp.com
Ошибка найдена и поправлена. Я постучался в скайп. Давайте проведем тестирование, может там еще что-то есть. Демо у Альфы теперь не предоставляется, а ради небольшой ошибки ехать к ним в офис нет совсем времени.
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.com/posts/m/26385/
--------------------------- --------------------------- System.InvalidCastException: Не удалось прив...
2013-06-20T08:24:26Z
2013-06-20T08:28:17Z
UsilaDobry
https://stocksharp.com/users/28825/
info@stocksharp.com
<div class="quote"><span class="quotetitle">Quote:</span><div class="innerquote">---------------------------<br /><br /><hr />System.InvalidCastException: Не удалось привести тип объекта "StockSharp.Algo.Candles.TimeFrameCandle[]" к типу "System.Collections.Generic.List`1[StockSharp.Algo.Candles.Candle]".<br /><br /> в StockSharp.AlfaDirect.AlfaTrader.#=qNmkP6QzBPHM7MSi3K7zNb8hpEPmvaemYv5w1q7pSlzs=(CandleSeries #=qw2Ij9lcQ52_YjUxYlygqJQ==, AlfaTimeFrames #=qmt9jajmekZJ3lvX4EWDlsw==, Range`1 #=qUa$g1WHcmZt7GKP9MHGYdQ==, Boolean #=qyMqxPE6iw9OG3w187t$YJg==, #=qrYpFuQVysBZ8IKEVqMgJNeOJnek4Tqt17H5Lhdsr7oOl5WXmF$V4OcRiLRkcvZGh& #=qdyEgQw5_gfsmxp61TgMHpQ==)<br /><br /> в StockSharp.AlfaDirect.AlfaTrader.SubscribeHistoricalCandles(CandleSeries series, DateTime from, DateTime to)<br /><br /> в StockSharp.Algo.Candles.CandleManager.#=qMxwX6RCGPPukCh3ls8RxBpA7IM61KWm0NtodaOEzPbw=.#=q6S9eoetqGa49tVuWloNQCnRypxcDn7PYNPl2C$RaYnkKcnu1wUHa2NHB6vFg6y0WaNoYZQe4eQyVPI8HWrXBIyz4LMDluX5GlBYwdeY220k=(CandleSeries #=q1SVIqTyklP0v2Vmdbxf5pQ==, DateTime #=qv2yp$YhyUweWh$XfcRdgUw==, DateTime #=qHyx5tP4ns5E8bwaA97HB6A==)<br /><br /> в #=qX3OhqnqEph0ylOwbVoprdaRyUdFykOOlTJqNaUikiywB2d5GxCHY1J7pgbbIcyah1whRfbIIDuqG1CROSXDxrw==.#=qXRmgGHeIzniBfKG_gUxziw==()<br /><br /> в StockSharp.Algo.Candles.CandleManager.Start(CandleSeries series, DateTime from, DateTime to)<br /><br /> в StockSharp.Algo.Candles.CandleHelper.Start(ICandleManager manager, CandleSeries series)<br /><br /> в MARKET_SUCCESS_ALFA.MainWindow.ShowChartClick(Object sender, RoutedEventArgs e) в c:\Users\UsilaDobry\Documents\Visual Studio 2012\Projects\MARKET SUCCESS ALFA\MainWindow.xaml.cs:строка 241<br /><hr />ОК <br />---------------------------</div></div>
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.com/posts/m/26384/
Приведите пожалуйста StackTrace. Картинки с ошибками и сам код не несут практически никакой полезной...
2013-06-20T08:04:59Z
2013-06-20T08:04:59Z
Mikhail Sukhov
https://stocksharp.com/users/201/
info@stocksharp.com
<div class="quote"><span class="quotetitle">UsilaDobry <a href="https://stocksharp.com/posts/m/26383/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">Михаил Сухов <a href="https://stocksharp.com/posts/m/26382/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote">Приведите пожалуйста StackTrace. Картинки с ошибками и сам код не несут практически никакой полезной информации.</div></div><br /><br />StackTrace? Это трассировка исключения?<br />Не знаю правильно ли я понял, Вы имеете ввиду вот эту информацию? </div></div><br /><br />Да это. А теперь нажмите на это окно Ctrl+C и вставьте сообщение как текст на форум. Спасибо.
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.com/posts/m/26383/
Приведите пожалуйста StackTrace. Картинки с ошибками и сам код не несут практически никакой полезной...
2013-06-20T07:50:24Z
2013-06-20T07:50:24Z
UsilaDobry
https://stocksharp.com/users/28825/
info@stocksharp.com
<div class="quote"><span class="quotetitle">Михаил Сухов <a href="https://stocksharp.com/posts/m/26382/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote">Приведите пожалуйста StackTrace. Картинки с ошибками и сам код не несут практически никакой полезной информации.</div></div><br /><br />StackTrace? Это трассировка исключения?<br />Не знаю правильно ли я понял, Вы имеете ввиду вот эту информацию?
Copyright @ StockSharp Platform LLC 2010 - 2024
https://stocksharp.com/posts/m/26382/
Приведите пожалуйста StackTrace. Картинки с ошибками и сам код не несут практически никакой полезной...
2013-06-20T07:25:50Z
2013-06-20T07:25:50Z
Mikhail Sukhov
https://stocksharp.com/users/201/
info@stocksharp.com
Приведите пожалуйста StackTrace. Картинки с ошибками и сам код не несут практически никакой полезной информации.
Copyright @ StockSharp Platform LLC 2010 - 2024