1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C#+WPF 股票K线制作(包含时间/ 开盘价/ 最高价/最低价/ 收盘价 / 成交量)

C#+WPF 股票K线制作(包含时间/ 开盘价/ 最高价/最低价/ 收盘价 / 成交量)

时间:2020-05-17 21:03:43

相关推荐

C#+WPF 股票K线制作(包含时间/ 开盘价/ 最高价/最低价/ 收盘价 / 成交量)

C#+WPF 股票K线制作

股票对象ViewModelXAML前端

项目最终效果展示

此项目安全,主要是涉及 AmCharts.Windows.Stock控件的使用,核心代码如下

股票对象

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace WPFamChartsK线制作.Model{/// <summary>/// 股票信息/// </summary>public class StockInfo{/// <summary>/// 时间/// </summary>public DateTime Date {get; set; }/// <summary>/// 开盘价/// </summary>public double Open {get; set; }/// <summary>/// 最高价/// </summary>public double High {get; set; }/// <summary>/// 最低价/// </summary>public double Low {get; set; }/// <summary>/// 收盘价/// </summary>public double Close {get; set; }/// <summary>/// 成交量/// </summary>public double Volume {get; set; }public string Descipt {get; set; }}}

ViewModel

using System;using System.Collections.ObjectModel;using System.IO;using System.Text;using System.Windows.Input;using WPFamChartsK线制作.Model;namespace WPFamChartsK线制作.ViewModel{public class MainWindowViewModel : ViewModel{public MainWindowViewModel(){}private ObservableCollection<StockInfo> _Data=new ObservableCollection<StockInfo>();public ObservableCollection<StockInfo> Data{get {return this._Data; }set{this._Data = value;RaisePropertyChanged(() => Data);}}private string _StockName;public string StockName{get {return this._StockName; }set{this._StockName = value;RaisePropertyChanged(() => StockName);}}private ICommand _LoadStock;public ICommand LoadStockCommand{get{if (this._LoadStock == null)this._LoadStock = new RelayCommandBase(LoadStockAction);return this._LoadStock;}}private void LoadStockAction(object obj){string fileName = "SH600747.TXT";LoadStockInfo(fileName);}//SH600747.TXTprivate void LoadStockInfo(string fileName="SH600747.TXT"){using (System.IO.Stream resourceStream = new FileStream(fileName, FileMode.Open)){using (StreamReader reader = new StreamReader(resourceStream, Encoding.GetEncoding("GB2312"))){//读每一行var strings = reader.ReadToEnd().Split(new char[] {'\n' }, StringSplitOptions.RemoveEmptyEntries);//获取股票名称StockName = strings[0].Replace("\r", "");var res = new ObservableCollection<StockInfo>();//第一行是股票名称, 第二行是类型名称, 第3行才是股票数据for (int i = 2; i < strings.Length; i++){string line = strings[i];string[] subLines = line.Split('\t');DateTime date = DateTime.Parse(subLines[0]);Double open = Double.Parse(subLines[1]);Double high = Double.Parse(subLines[2]);Double low = Double.Parse(subLines[3]);Double close = Double.Parse(subLines[4]);Double volumn = Double.Parse(subLines[5]);_Data.Add(new StockInfo{Date = date,Open = open,High = high,Low = low,Close = close,Volume = volumn,Descipt = "暂时没什么提醒"});}}}}}}

XAML前端

<Window x:Class="WPFamChartsK线制作.MainWindow"xmlns="/winfx//xaml/presentation"xmlns:x="/winfx//xaml"xmlns:d="/expression/blend/"xmlns:mc="/markup-compatibility/"xmlns:ams="/stock/wpf//xaml" xmlns:local="clr-namespace:WPFamChartsK线制作"mc:Ignorable="d"Title="WPF 股票K线图 " Height="450" Width="800"><Grid Margin="10,0,10,0"><Grid.RowDefinitions><RowDefinition Height="*" /><RowDefinition Height="Auto"/></Grid.RowDefinitions><ams:StockChart Name="stockChart" Grid.Row="0"><ams:StockChart.DataSets><ams:DataSet Name="stockSet1" Brush="#7f8da9"ItemsSource="{Binding Data}"DateMemberPath="Date"OpenMemberPath="Open" HighMemberPath="High"LowMemberPath="Low" CloseMemberPath="Close"Description="Descipt"ValueMemberPath="Close" VolumeMemberPath="Volume"/></ams:StockChart.DataSets><ams:StockChart.Charts><ams:Chart Title="股票价格" GridHeight="2*"><ams:Chart.Graphs><ams:Graph GraphType="Candlestick" Title="{Binding StockName}"NegativeBrush="Green" PositiveBrush="Red" LegendItemType="Ohlc" LegendPeriodItemType="Ohlc"CursorBrush="Blue" CursorSize="6" /></ams:Chart.Graphs><ams:Chart.DateTimeAxis><ams:DateTimeAxis ValuesForeground="#90000000" StrokeThickness="0" TickLength="0" /></ams:Chart.DateTimeAxis><ams:Chart.LeftValueAxis><ams:ValueAxis ValuesForeground="#90000000"StrokeThickness="0" TickLength="0" /></ams:Chart.LeftValueAxis><ams:Chart.Legend><ams:LegendPositiveValueForeground="Red" NegativeValueForeground="Green"IsDateVisible="True"/></ams:Chart.Legend></ams:Chart><!--成交量的Chart--><ams:Chart Title="成交量"><ams:Chart.Graphs><ams:Graph GraphType="Column" Title="{Binding StockName}"LegendItemType="Value" LegendPeriodItemType="Value"DataField="Volume" PeriodValue="Sum"CursorBrush="Blue" CursorSize="6" /></ams:Chart.Graphs><ams:Chart.DateTimeAxis><ams:DateTimeAxis ValuesEnabled="False" StrokeThickness="0" /></ams:Chart.DateTimeAxis><ams:Chart.LeftValueAxis><ams:ValueAxis ValuesForeground="#90000000" StrokeThickness="0" TickLength="0" /></ams:Chart.LeftValueAxis><ams:Chart.Legend><ams:Legend PositiveValueForeground="Red" NegativeValueForeground="Green" /></ams:Chart.Legend></ams:Chart></ams:StockChart.Charts><ams:StockChart.PeriodSelector><ams:PeriodSelector CustomPeriodLabelText="自定义间隔:" PresetPeriodLabelText="缩放:" Margin="0,5,0,0"><ams:PeriodSelector.PresetPeriods><ams:PresetPeriodButton Interval="Day" Quantity="10" ToolTipService.ToolTip="10天" Content="10天" /><ams:PresetPeriodButton Interval="Month" Quantity="1" ToolTipService.ToolTip="1个月" Content="1月" /><ams:PresetPeriodButton Interval="Month" Quantity="3" ToolTipService.ToolTip="3个月" Content="3月" /><ams:PresetPeriodButton Interval="Year" Quantity="1" ToolTipService.ToolTip="1年" Content="1年" /><ams:PresetPeriodButton Interval="Year" Quantity="3" ToolTipService.ToolTip="3年" Content="3年" /><ams:PresetPeriodButton Quantity="NaN" ToolTipService.ToolTip="所有数据" Content="最大" /></ams:PeriodSelector.PresetPeriods></ams:PeriodSelector></ams:StockChart.PeriodSelector></ams:StockChart><StackPanel Grid.Row="1"><Button Command="{Binding LoadStockCommand}" Content="加载"/></StackPanel></Grid></Window>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。