如何获得最新成交价?
1.雷达屏或图形分析
在雷达屏中或图形分析中,可以使用 last 关键字获得该只股票代码最新的成交价格。
2.交易APP中
在交易APP中,可以使用组件QuoteProvider或PriceSeriesProvider获得最新的成交价格。 QuoteProvider是用来获得盘口买一卖一价的组件;PriceSeriesProvider 将Bar类型设置为 ticks,则可以获得最新的ticks的收盘价。 注意:QuoteProvider和PriceSeriesProvider 也可以用于指标和策略中获得最新价,但不推荐。
示例1:使用QuotesProvider获得最新价
using guosen;
using tsdata.common;
using tsdata.marketdata;
vars:QuotesProvider QP(null);
method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args )
begin
QP = new QuotesProvider;
QP.Load = false;
QP.Symbol = "000001.SZ";//设置股票代码
QP.fields += "bid,ask,description,Last";//属性可增可减,不区分大小写,但需用逗号分隔开来
QP.Updated += QP_Updated; //为QuotesProvider绑定更新事件
QP.Load = true;
end;
Method void QP_Updated(elsystem.Object sender,tsdata.marketdata.QuoteUpdatedEventArgs args)
Begin
if(QP.State=DataState.loaded)then
Begin
Print("Description: "+QP.Quote["description"].StringValue + //代码名称
" Last:" + QP.Quote["Last"].DoubleValue.ToString() + //最新价
" Bid:" +QP.Quote["Bid"].DoubleValue.ToString()+ //Bid
" Ask:" +QP.Quote["Ask"].DoubleValue.ToString()+ //Ask
"");
End;
End;
示例2:使用PriceSeriesProvider获得最新价
using guosen;
using tsdata.common;
using tsdata.marketdata;
using elsystem;
vars:PriceSeriesProvider PSP(null);
method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args )
begin
PSP = new PriceSeriesProvider;
PSP.Load = False;
PSP.Symbol = "000001.SZ";
PSP.Interval.IntervalType = tsdata.marketdata.DataIntervalType.ticks;//周期设置为逐笔以获得最新成交价
PSP.Interval.IntervalSpan = 1; //也即每1笔线
PSP.Range.Type = tsdata.marketdata.DataRangeType.Bars;//设置PSP载入为条数
PSP.Range.Bars = 10 ; //设置载入10条bar
PSP.IncludeVolumeInfo = false; //不加载成交量信息
PSP.IncludeTicksInfo = false; //不加载Ticks信息
PSP.UseNaturalHours = false;
PSP.Realtime = TRUE; //设置为实时更新
PSP.Updated += PSP_Updated; //绑定更新事件,当PSP更新或收到行情推送时刷新
PSP.StateChanged += PSP_StateChanged; //绑定更新事件,当PSP更新或收到行情推送时刷新
PSP.Load = TRUE;
end;
Method void PSP_Updated(elsystem.Object sender,tsdata.marketdata.PriceSeriesUpdatedEventArgs args)
Begin
print(PSP.State.ToString());
if(PSP.State=DataState.loaded)then
Begin
Print(DateTime.Now.toString()+
" Symbol: "+PSP.Symbol+ //代码
" Time:" + PSP.Time[1].ToString() + //最新价的交易所时间
" Last:" + PSP.Close[0].ToString() + //最新价
"");
End;
End;
Method void PSP_StateChanged(elsystem.Object sender,tsdata.common.StateChangedEventArgs args)
Begin
print("StateChanged! " + PSP.State.ToString());
End;