绘制所选股票图表的python脚本

如前所述,示例应用程序使用 SQLite 数据库作为其数据存储(也可由 Python 端访问 - 见下文)。为此,使用了实体框架,以及在这篇 Codeproject 文章中找到的方法。然后将股票数据放入支持过滤和排序的 ListCollectionView 中:


private void LoadStocks()

{

var ctx = new SQLiteDatabaseContext(_mainVm.DbPath);


var itemList = ctx.Stocks.ToList().Select(s => new StockItem(s)).ToList();

_stocks = new ObservableCollection<StockItem>(itemList);

_collectionView = new ListCollectionView(_stocks);


// Initially sort the list by stock names

ICollectionView view = CollectionViewSource.GetDefaultView(_collectionView);

view.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));

}

获取文本输出 在这里,PythonRunner 正在调用生成文本输出的脚本。KMeansClusteringScript 属性指向要执行的脚本:


private async Task<string> RunKMeans()

{

TreeViewText = Processing;

Items.Clear();


try

{

    string output = await _mainVm.PythonRunner.ExecuteAsync(

        KMeansClusteringScript,

        _mainVm.DbPath,

        _mainVm.TickerList,

        _mainVm.NumClusters,

        _mainVm.StartDate.ToString("yyyy-MM-dd"),

        _mainVm.EndDate.ToString("yyyy-MM-dd"));


    return output;

}

catch (Exception e)

{

    TreeViewText = e.ToString();

    return string.Empty;

}

}

这是脚本产生的一些示例输出:


  0 AYR 0,0,255

  0 PCCWY 0,100,0

  0 HSNGY 128,128,128

  0 CRHKY 165,42,42

  0 IBN 128,128,0

  1 SRNN 199,21,133

   ...

  4 PNBK 139,0,0

  5 BOTJ 255,165,0

  5 SPPJY 47,79,79

第一列是 k-Means 分析的聚类编号,第二列是相应股票的股票代码,第三列表示用于在图表中绘制该股票线条的颜色的 RGB 值。


Getting an Image

这是使用视图模型的 PythonRunner 实例异步调用所需 Python 脚本(其路径存储在 DrawSummaryLineChartScript 属性中)以及所需脚本参数的方法。结果一旦可用,就会被处理成“WPF 友好”形式:


internal async Task<bool> DrawChart()

{

SummaryChartText = Processing;

SummaryChart = null;


try

{

        SummaryChart = Imaging.CreateBitmapSourceFromHBitmap(

        bitmap.GetHbitmap(),

        IntPtr.Zero,

        Int32Rect.Empty,

        BitmapSizeOptions.FromEmptyOptions());


    return true;

}

catch (Exception e)

{

    SummaryChartText = e.ToString();

    return false;

}

 }

但这种方法不能正常工作?我做什么 ?


一只名叫tom的猫
浏览 111回答 1
1回答

四季花海

调用python脚本绘制所选股票的图表。internal async Task<bool> DrawChart()&nbsp;{&nbsp; &nbsp;SummaryChartText = Processing;&nbsp; &nbsp; SummaryChart = null;try{&nbsp; &nbsp; var bitmap = await _mainVm.PythonRunner.GetImageAsync(&nbsp; &nbsp; &nbsp; &nbsp; DrawSummaryLineChartScript,&nbsp; &nbsp; &nbsp; &nbsp; _mainVm.DbPath,&nbsp; &nbsp; &nbsp; &nbsp; _mainVm.TickerList,&nbsp; &nbsp; &nbsp; &nbsp; _mainVm.StartDate.ToString("yyyy-MM-dd"),&nbsp; &nbsp; &nbsp; &nbsp; _mainVm.EndDate.ToString("yyyy-MM-dd"));&nbsp; &nbsp; SummaryChart = Imaging.CreateBitmapSourceFromHBitmap(&nbsp; &nbsp; &nbsp; &nbsp; bitmap.GetHbitmap(),&nbsp; &nbsp; &nbsp; &nbsp; IntPtr.Zero,&nbsp; &nbsp; &nbsp; &nbsp; Int32Rect.Empty,&nbsp; &nbsp; &nbsp; &nbsp; BitmapSizeOptions.FromEmptyOptions());&nbsp; &nbsp; return true;}catch (Exception e){&nbsp; &nbsp; SummaryChartText = e.ToString();&nbsp; &nbsp; return false;}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python