#pragma once
|
/// <summary>
|
/// ·ÖʱÏß
|
/// </summary>
|
#include <wx/wx.h>
|
#include<list>
|
#include <map>
|
#include "../common_nopch/WidgetsRenderUtil.h"
|
#include "JueJinDataUtil.h"
|
|
struct CodeBasicInfo
|
{
|
wxString code;
|
wxString codeName;
|
double preClosePrice;
|
};
|
|
enum TIME_SPACE_TYPE {
|
TIME_SPACE_TICK,
|
TIME_SPACE_BAR
|
};
|
|
struct Padding {
|
int left;
|
int top;
|
int right;
|
int bottom;
|
};
|
struct LineInfo{
|
wxPoint start;//qÆðµã
|
wxPoint end;//ÖÕµã
|
int lineWidth;//Ïß¿í
|
wxPenStyle style;
|
};
|
|
/// <summary>
|
/// ×Ý×ø±êµÄ±êÇ©
|
/// </summary>
|
struct AxisYLabel {
|
wxString leftLabel;
|
wxString rightLabel;
|
};
|
|
struct QuotesInfo {
|
float price;
|
int volume;
|
};
|
|
/// <summary>
|
/// KÏß·ÖʱÊý¾Ý
|
/// </summary>
|
struct TickData {
|
int time;// ¾àÀë9µã25µÄsÊý
|
float rate;//ÕÇ·ù
|
wxString price;// ¼Û¸ñ
|
std::list<Quote> quotes; // Âò5µµ
|
};
|
/// <summary>
|
/// tick½»Ò×ÐÅÏ¢
|
/// </summary>
|
struct TickTradeData {
|
wxString time;// ¾àÀ뿪ʼʱ¼äµÄsÊý
|
float rate;//ÕÇ·ù
|
wxString price;// ¼Û¸ñ
|
int volume;// ³É½»Á¿
|
wxString money;// ³É½»½ð¶î
|
int colorType;// ÑÕÉ«ÀàÐÍ
|
};
|
|
|
class TickChart : public wxControl
|
{
|
private:
|
void* parentContext;
|
|
// Õý¹ÉËõ·Å±ÈÀý
|
float underlyingScale;
|
|
// ×îС¿Ì¶ÈÀàÐÍ
|
TIME_SPACE_TYPE timeSpaceType;
|
// ×îС¿Ì¶Èʱ¼ä
|
int timeSpace;
|
// XÖῪʼʱ¼ä
|
wxString xStartTime;
|
int xStartTimeSeconds;
|
// XÖá½áÊøÊ±¼ä
|
wxString xEndTime;
|
// Õû¸öXÖáµÄʱ¼äÄÒÀ¨
|
int xScopeSeconds;
|
|
wxClientDC *mouseDC;
|
// TickÊý¾Ý
|
std::list<TickData> cbTickDatas;
|
std::list<TickData> underlyingTickDatas;
|
std::list<TickTradeData> buyPoints;
|
std::list<TickTradeData> sellPoints;
|
|
// ´úÂëÃû³Æ
|
CodeBasicInfo cbCodeInfo;
|
CodeBasicInfo underlyingCodeInfo;
|
|
// ÕÇÍ£ÕÇ·ù
|
float limitUpRate;
|
// ×ö´óµÄYÖáÖµ
|
float maxYRate;
|
// Õý¹É×î´óYÖáµÄÖµ
|
float maxYRateUnderlying;
|
// ×òÈÕÊÕÅ̼Û
|
float preClosePrice;
|
// ³É±¾±ÈÀý
|
float costRate;
|
// Êó±êλÖÃ
|
wxPoint mousePos;
|
|
private:
|
/// <summary>
|
/// ÐÐÇéÏêÇ黨µ÷,»Øµ÷²ÎÊý£º(´úÂë,Ãû³Æ,ÊÕÅ̼Û,XÖῪʼʱ¼ä,XÖá½áÊøÊ±¼ä)
|
/// </summary>
|
|
std::function<void(CodeBasicInfo, wxString, wxString, std::list<TickTradeData> , std::list<TickTradeData> , float, void*)> tickDetailCallback;
|
|
private:
|
/// <summary>
|
/// ½«TickData×ªÎª×ø±êµã
|
/// </summary>
|
/// <param name="tickData"></param>
|
/// <returns></returns>
|
wxPoint convertTickDataToPoint(TickData tickData, wxRect area, float scale = 1);
|
|
|
/// <summary>
|
/// ½«TickTradeData×ªÎª×ø±êµã
|
/// </summary>
|
/// <param name="tickData"></param>
|
/// <returns></returns>
|
wxPoint convertTickDataToPoint(TickTradeData tickData, wxRect area);
|
|
/// <summary>
|
/// ½«µãתΪtickÊý¾Ý
|
/// </summary>
|
/// <param name="tick"></param>
|
/// <param name="area"></param>
|
/// <returns></returns>
|
TickData pointToTick(wxPoint tick, wxRect area);
|
|
|
/// <summary>
|
/// »æÖÆ×ø±êϵ
|
/// </summary>
|
/// <param name="dc"></param>
|
/// <param name="area"></param>
|
void drawAxis(wxDC& dc,wxRect area);
|
|
/// <summary>
|
/// »æÖÆ·ÖʱÏß
|
/// </summary>
|
/// <param name="paint"></param>
|
/// <param name="area"></param>
|
void drawTickLine(wxDC& paint, wxRect area);
|
|
|
/// <summary>
|
/// »æÖÆÕý¹É·ÖʱÏß
|
/// </summary>
|
/// <param name="paint"></param>
|
/// <param name="area"></param>
|
void drawUnderlyingTickLine(wxDC& paint, wxRect area);
|
|
/// <summary>
|
/// »æÖÆÂòµã
|
/// </summary>
|
/// <param name="paint"></param>
|
/// <param name="point"></param>
|
void drawBuyPoint(wxDC& paint, wxPoint point);
|
|
/// <summary>
|
/// »æÖÆÂôµã
|
/// </summary>
|
/// <param name="paint"></param>
|
/// <param name="point"></param>
|
void drawSellPoint(wxDC& paint, wxPoint point);
|
|
/// <summary>
|
/// »æÖÆÊó±êÊ®×ÖÐÇÏß
|
/// </summary>
|
/// <param name="paint"></param>
|
/// <param name="area"></param>
|
/// <param name="point"></param>
|
void drawMouse(wxDC& paint, wxRect area, wxPoint point);
|
|
/// <summary>
|
/// »æÖÆÂòµã»òÕßÂôµãµÄÐÅÏ¢
|
/// </summary>
|
/// <param name="paint"></param>
|
/// <param name="area"></param>
|
/// <param name="mousePoint"></param>
|
void drawBuyAndSellPointInfo(wxDC& paint, wxRect area, wxPoint mousePoint);
|
|
/// <summary>
|
/// »æÖÆÐÅÏ¢¿ò
|
/// </summary>
|
/// <param name="paint"></param>
|
/// <param name="position"></param>
|
/// <param name="content"></param>
|
/// <param name="colorIndexes"></param>
|
void drawInfo(wxDC& paint, wxPoint position, wxString content, std::list<ColorIndexInfo> colorIndexes );
|
|
|
/// <summary>
|
/// »æÖÆ×îеÄÕÇ·ù
|
/// </summary>
|
/// <param name="paint"></param>
|
/// <param name="area"></param>
|
void drawUnderlyingLatestRate(wxDC& paint, wxRect area);
|
|
/// <summary>
|
/// »æÖÆÂòÂô5µµ
|
/// </summary>
|
/// <param name="paint"></param>
|
/// <param name="area"></param>
|
void drawUnderlyingQuotes(wxDC& paint, wxRect area);
|
|
|
|
public:
|
TickChart(wxWindow* parent, wxWindowID id,int timeSpace, TIME_SPACE_TYPE timeSpaceType, wxString xStartTime,wxString xEndTime,
|
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
|
|
void OnPaint(wxPaintEvent& event);
|
|
void OnMouseMove(wxMouseEvent& event);
|
|
void OnDoubleClick(wxMouseEvent& event);
|
|
|
|
/// <summary>
|
/// ³õʼ»¯
|
/// </summary>
|
/// <param name="name">Ãû³Æ</param>
|
/// <param name="maxRate">×î´óÕÇ·ù</param>
|
void Init(CodeBasicInfo cb, CodeBasicInfo underlying,void* parentContext, std::function<void(CodeBasicInfo, wxString, wxString, std::list<TickTradeData>, std::list<TickTradeData>, float, void*)> tickCllback);
|
|
/// <summary>
|
/// Ìí¼ÓTickÊý¾Ý
|
/// </summary>
|
/// <param name="time"></param>
|
/// <param name="rate"></param>
|
/// <param name="price"></param>
|
void AddTickData(wxString time, float rate, wxString price, bool refresh=TRUE);
|
|
|
/// <summary>
|
/// Ìí¼ÓÕý¹ÉÊý¾Ý
|
/// </summary>
|
/// <param name="time"></param>
|
/// <param name="rate"></param>
|
/// <param name="refresh"></param>
|
void AddUnderlyingTickData(wxString time, float rate, std::list<Quote> quotes, bool refresh = TRUE);
|
|
/// <summary>
|
/// Ìí¼ÓÂòµã
|
/// </summary>
|
/// <param name="time"></param>
|
/// <param name="rate"></param>
|
/// <param name="price"></param>
|
void AddBuyPoint(wxString time, float rate, wxString price, int volume, wxString money, int type);
|
|
|
/// <summary>
|
/// Ìí¼ÓÂòµã
|
/// </summary>
|
/// <param name="data"></param>
|
void AddBuyPoint(TickTradeData data);
|
|
/// <summary>
|
/// ÉèÖÃÂòµã
|
/// </summary>
|
/// <param name="datas"></param>
|
void SetBuyPoint(std::list<TickTradeData> datas);
|
|
/// <summary>
|
/// Ìí¼ÓÂôµã
|
/// </summary>
|
/// <param name="time"></param>
|
/// <param name="rate"></param>
|
/// <param name="price"></param>
|
void AddSellPoint(wxString time, float rate, wxString price, int volume, wxString money);
|
|
|
/// <summary>
|
/// Ìí¼ÓÂôµã
|
/// </summary>
|
/// <param name="data"></param>
|
void AddSellPoint(TickTradeData data);
|
|
|
/// <summary>
|
/// ÉèÖÃÂôµã
|
/// </summary>
|
/// <param name="datas"></param>
|
void SetSellPoint(std::list<TickTradeData> datas);
|
|
|
/// <summary>
|
/// ÉèÖóɱ¾±ÈÀý
|
/// </summary>
|
/// <param name="code"></param>
|
/// <param name="rate"></param>
|
void SetCostRate(wxString code, float rate, wxString price);
|
};
|