Alexander
|
Дата: 06.07.2012
Стэктрэйс нужен
С финама\ртс можно получать всё. См. на гидру, она это делает.
|
|
Спасибо:
|
|
|
|
|
eddardd
|
Дата: 06.07.2012
Вот это в exception: Цитата: System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта. в StockSharp.Algo.Candles.CandleHelper.GetCandles(CandleSeries series, Int32 candleCount) в SampleCandles.MainWindow.FindPathClick(Object sender, RoutedEventArgs e) в D:\Install\Stock# 4.1.1\Samples\Quik\SampleCandles\MainWindow.xaml.cs:строка 44
|
|
Спасибо:
|
|
|
|
|
Alexander
|
Дата: 06.07.2012
series чему равно?
|
|
Спасибо:
|
|
|
|
|
eddardd
|
Дата: 06.07.2012
Извините, не тот стектрейс. Вот этот: Цитата:System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта. в StockSharp.Algo.Candles.CandleHelper.GetCandle(CandleSeries series, Int32 candleIndex) в SampleCandles.MainWindow.FindPathClick(Object sender, RoutedEventArgs e) в D:\Install\Stock# 4.1.1\Samples\Quik\SampleCandles\MainWindow.xaml.cs:строка 44 Но ошибка та самая. Исходя из этого тыц нужно использовать эту функцию как GetCandle(CandleSeries series, Int32 candleIndex), но я не могу таким образом вызвать функцию. Получаеться вихвать только Код
var cand = _series.GetCandles(1);
серию возвращаю вот этим действием: Код
var _series = new CandleSeries(typeof(TimeFrameCandle), SelectedSecurity, TimeSpan.FromMinutes(1));
но тут ексепшн вылазит. _series.GetCandles(1) сделал наподобие Вашего туториала: тиц там внизу
|
|
Спасибо:
|
|
|
|
|
Alexander
|
Дата: 06.07.2012
Ничего не понял. С самого начала напишите 1) стэктрейс 2) чему равны все параметры в вызываемом методе. Лучше просто делать ToString() для параметров, я пойму.
|
|
Спасибо:
|
|
|
|
|
eddardd
|
Дата: 06.07.2012
Стектрейс: Цитата: System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта. в StockSharp.Algo.Candles.CandleHelper.GetCandle(CandleSeries series, Int32 candleIndex) в SampleCandles.MainWindow.FindPathClick(Object sender, RoutedEventArgs e) в D:\Install\Stock# 4.1.1\Samples\Quik\SampleCandles\MainWindow.xaml.cs:строка 44
Параметры: SelectedSecurity: TimeSpan.FromMinutes(1) _series Цитата: TimeFrameCandle RIU2@UX 00:01:00
|
|
Спасибо:
|
|
|
|
|
Alexander
|
Дата: 06.07.2012
series.CandleManager чему равен? Если null - то читайте доку как надо работать со свечками, см. примере.
Если нет - будем разбираться дальше.
|
|
Спасибо:
|
|
|
|
|
eddardd
|
Дата: 06.07.2012
Действительно null. Делал за этим примером ТИЦ и такое получается. Правда я не рисую график. Хотя б без визуализации
|
|
Спасибо:
|
|
|
|
|
Moadip
|
Дата: 06.07.2012
|
|
|
|
Написал небольшой пример для проверки. CS & XAMLКод
using System;
using System.Linq;
using System.Windows;
using System.Windows.Forms;
using System.ComponentModel;
using Ecng.Common;
using Ecng.Xaml;
using StockSharp.BusinessEntities;
using StockSharp.Quik;
using StockSharp.Algo.Candles;
using StockSharp.Xaml;
using StockSharp.Algo.Logging;
using MessageBox = System.Windows.MessageBox;
namespace Candles
{
public partial class MainWindow
{
QuikTrader _trader;
private Security _instr1;
const string _secCode1 = "RIU2";
private CandleManager _candleManager;
private CandleSeries _series;
readonly TimeSpan _timeFrame = TimeSpan.FromMinutes(1);
private readonly LogManager _logManager;
public MainWindow()
{
InitializeComponent();
Path.Text = "e:\\Program Files\\QUIK\\";
_logManager = new LogManager();
_logManager.Listeners.Add(new GuiLogListener(logcontrol));
}
private void FindPath_Click(object sender, RoutedEventArgs e)
{
var dlg = new FolderBrowserDialog();
if (!Path.Text.IsEmpty())
dlg.SelectedPath = Path.Text;
if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
Path.Text = dlg.SelectedPath;
}
}
bool _isConnected;
private void btnConnect_Click(object sender, RoutedEventArgs e)
{
if (!_isConnected)
{
if (Path.Text.IsEmpty())
MessageBox.Show(this, "Путь к Quik не выбран");
else
{
if (_trader == null)
{
_trader = new QuikTrader(Path.Text);
_logManager.Sources.Add(_trader);
_trader.ReConnectionSettings.Interval = TimeSpan.FromSeconds(10);
_trader.ReConnectionSettings.WorkingTime = Exchange.Rts.WorkingTime;
_trader.ReConnectionSettings.ConnectionRestored += () => this.GuiAsync(() => MessageBox.Show(this, "Соединение восстановлено"));
_trader.MarketTimeOffset = TimeSpan.FromHours(-3);
_isConnected = true;
btnExportDde.IsEnabled = true;
_trader.NewSecurities += securities =>
{
if (_instr1 == null)
{
_instr1 = securities.FirstOrDefault(sec => sec.Code == _secCode1);
}
};
_candleManager = new CandleManager(_trader);
}
_trader.Connect();
_isConnected = true;
btnConnect.Content = "Отключиться";
}
}
else
{
_trader.Disconnect();
_isConnected = false;
btnConnect.Content = "Подключиться";
}
}
private void btnStart_Click(object sender, RoutedEventArgs e)
{
_series = new CandleSeries(typeof(TimeFrameCandle), _instr1, _timeFrame);
_candleManager.Start(_series);
_trader.AddInfoLog("Запуск получения свечек");
}
private void Window_Closing(object sender, CancelEventArgs e)
{
if (_trader != null)
{
if (_isDdeStarted) StopDde();
_trader.Dispose();
}
}
private void btnExportDde_Click(object sender, RoutedEventArgs e)
{
if (_isDdeStarted) StopDde();
else StartDde();
}
bool _isDdeStarted;
private void StartDde()
{
_trader.StartExport();
_isDdeStarted = true;
}
private void StopDde()
{
_trader.StopExport();
_isDdeStarted = false;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
_trader.AddInfoLog("Свечка OpenTime = {0}", _series.GetCandle<TimeFrameCandle>(1).OpenTime);
}
}
}
<Window x:Class="Candles.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:EcngTradingXaml="clr-namespace:StockSharp.Xaml;assembly=StockSharp.Xaml"
Title="" Height="282" Width="614" Closing="Window_Closing" Topmost="True" WindowStartupLocation="CenterScreen">
<Grid>
<Grid HorizontalAlignment="Left" Name="grid1" VerticalAlignment="Top" Margin="12,12,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="72" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Button Content="Подключиться" Height="23" HorizontalAlignment="Left" Name="btnConnect" VerticalAlignment="Top" Width="100" Click="btnConnect_Click" Grid.Row="1" />
<Button Content="Экспорт DDE" Height="23" HorizontalAlignment="Left" Name="btnExportDde" VerticalAlignment="Top" Width="100" Click="btnExportDde_Click" IsEnabled="False" Grid.Column="1" Grid.Row="1" />
<Button Content="Старт" Height="23" Name="btnStart" VerticalAlignment="Top" Click="btnStart_Click" HorizontalAlignment="Left" Width="100" Grid.Column="2" Grid.ColumnSpan="2" Grid.Row="1" />
<TextBox Height="23" HorizontalAlignment="Left" Name="Path" VerticalAlignment="Top" Width="272" Grid.ColumnSpan="3"/>
<Button Content="..." Name="FindPath" Click="FindPath_Click" HorizontalAlignment="Left" Width="28" Height="23" VerticalAlignment="Top" Grid.Column="3" />
</Grid>
<EcngTradingXaml:LogControl Margin="12,64,10,10" Name="logcontrol" />
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="318,35,0,0" Name="button1" VerticalAlignment="Top" Width="88" Click="button1_Click" />
</Grid>
</Window>
По нажатию на кнопку берется время предпоследней свечки _series.GetCandle<TimeFrameCandle>(1).OpenTime Время такое странное потому что после запуска экспорта по dde начал нажимать на кнопку button и тики еще не успели все подгрузиться. Вы после того как создали серию _series = new CandleSeries(typeof(TimeFrameCandle), SelectedSecurity, TimeSpan.FromMinutes(1)) Вызываете метод CandleManager.Start() с созданной серией _candleManager.Start(_series)?
|
|
Спасибо:
|
|
|
|
|
eddardd
|
Дата: 06.07.2012
Спасибо за ответ. Да, вызывал. Но ничего не было. По поводу Вашего примера.. У меня не хочет запускатся, проблема в : Код
_trader.AddInfoLog("Свечка OpenTime = {0}", _series.GetCandle<TimeFrameCandle>(1).OpenTime);
Ошибка: Цитата:вместе с аргументами-типами нельзя использовать не универсальный метод ...CandleHelper.GetCandle(StockSharp.Algo.Candles.CandleSeries,int) Извините за навязчивость, но в чем может быть проблема?
|
|
Спасибо:
|
|
|
|