//主程序暴露给插件的接口
interface IMainFramework
{
public:
IMainFramework(){};
virtual ~IMainFramework(){};
//取得主窗口句柄
virtual HWND GetMainWindow() = 0;
//取主程序版本号
virtual DWORD GetVersion() = 0;
//取指定品种数据,成功取得数据返回TRUE,否则为FALSE
virtual BOOL GetDataInfo(PCALCINFO * pInfo) = 0;
//取指定品种的动态及时报表
virtual REPORT_STRUCT * GetReportData(char * szLabel, WORD wMarket) = 0;
//获取指定市场下的品种数量
virtual DWORD GetReportCount(WORD wMarket) = 0;
//获取指定市场下基于0索引的品种代码
//wMarket 输入参数, 指定市场
//dwIndex 输入参数, 基于0索引的序号, 可以用GetReportCount函数获取
//szCode 输出参数, 品种代码数组, 该数组空间不能小于10字节
virtual BOOL GetReportData(WORD wMarket, DWORD dwIndex, char * szCode) = 0;
//取指定分类板块的品种数组
//pBlock 存放品种的缓冲区地址
//dwMaxCount 缓冲区存放品种数量大小
//szName 为分类或者板块名称,如"上海A股"等
//nMode 为类别,0市场分组,1分类板块,2系统板块(品种栏对应)
//返回值:返回读取到的品种数量
virtual DWORD GetReportData(BLOCK_STRUCT * pBlock, DWORD dwMaxCount, char * szName, int nMode) = 0;
//注册品种到数据通知,例如RegReportNotify("CL05",'MN');将合约注册到数据通知,当CL05有最新数据到达时触发ReportNotify事件。
virtual BOOL RegReportNotify(char * szLabel, WORD wMarket) = 0;
//取消品种数据注册,例如UnRegReportNotify("CL05",'MN'),CL05数据到达时不会再收到通知。
virtual void UnRegReportNotify(char * szLabel, WORD wMarket) = 0;
//下单委托交易
// nType 下单类型 0限价 1市价 2停损 3限价停损
// fLmtPrice 委托限价
// fStopLmtPrice限价停损单(仅限IB外盘品种使用)
// nVol 委托数量
// nAspect 0买入 1卖出
// lpszLabel 品种名称
// wMarket 品种市场
// bMustOK 是否弹出下单确认
// lpszAccount 下单帐户,为空则为当前活动帐户
// nKaiPing 0开仓 1平仓 2平今
// nTouBao 期货(0投机 1保值) 股票(0普通 1融资) 期权(0普通 1备兑)
// bOrderQueue 是否为队列委托方式,即成交上一笔后再委托下一笔
// 返回值 : 返回本次的委托编号
virtual long PlaceOrder(BYTE nType, float fLmtPrice, float fStopLmtPrice, UINT nVol, BYTE nAspact, LPCSTR lpszLabel, WORD wMarket,
BOOL bMustOK, LPCSTR lpszAccount, BYTE nKaiPing, BYTE nTouBao, BYTE bOrderQueue) = 0;
//撤单
// nOrderID 委托编号,即PlaceOrder委托下单的委托编号. 当bOrderQueue为2或3时,该变量为CANCEL_ORDER_EX结构体指针
// bOrderQueue 是否为队列方式的委托撤单,即必须等到该笔撤单成功后再继续后续的下单任务
// 当bOrderQueue=0时为 不使用队列下单 为1时为队列下单模式,当bOrderQueue为2或者3时为下列情况之一
// 当为2时为CANCEL_ORDER_EX结构体中不用队列下单模式; 当为3时表示CANCEL_ORDER_EX结构体中,使用队列下单模式
// 对于使用VC6等较低版本的编译器,LONG_PTR类型可能尚未指定而出现编译错误,将该类型定义为long即可。
virtual void OrderCancel(LONG_PTR nOrderID, BYTE bOrderQueue) = 0;
//注册WINDOWS窗口消息,金字塔将以事件方式通知各种
virtual void RegisterMsg(HWND hMsgWnd, DWORD dwMsg) = 0;
//得到套利合约信息
//返回TRUE表示成功 ,返回套利指数内定义的套利品种信息
virtual BOOL GetTaoliInfo(char * szTaoliLabel, TAOLI_INFO ** pTaoliInfo, DWORD * pdwCount) = 0;
//得到IB外盘品种持仓数量
virtual int GetHolding() = 0;
//得到非IB外盘的指定账户的持仓数量
virtual int GetHolding2(char * szAccount) = 0;
//到所有IB帐户当前有效的未成交合约品种数量
virtual int GetOrderNum() = 0;
//得到所有非IB外盘当前有效的未成交合约品种数量
virtual int GetOrderNum2() = 0;
//得到IB帐户的成交明细数量
virtual int GetTradeCount() = 0;
//得到指定帐户的非IB外盘帐户的成交明细数量
virtual int GetTradeCount2(char * szAccount) = 0;
//当前已经登陆IB顾问帐户子帐户数量,若登陆的是IB普通帐户此属性为1
virtual int GetIBACCount() = 0;
//当前已经登陆非IB外盘帐户数量(包含无效登陆等情况在内的)
virtual int GetCTPAcCount() = 0;
/*得到当前默认帐户信息
nType 指定帐户信息类型。数值的内容含义请参考:http://www.weistock.com/WeisoftHelp/visualbasic_order_account.htm
返回值: 返回VARIANT类型的账户结果,注意如果是BSTR类型的返回值请使用完毕后注意调用VariantClear函数释放内存。*/
virtual VARIANT GetAccount(short nType) = 0;
/*得到指定的非IB外盘帐户信息
nType 指定帐户信息类型。数值的内容含义请参考:http://www.weistock.com/WeisoftHelp/visualbasic_order_account2.htm
szAccount 欲查询的账户
返回值: 返回VARIANT类型的账户结果,注意如果是BSTR类型的返回值请使用完毕后注意调用VariantClear函数释放内存。*/
virtual VARIANT GetAccount2(short nType, char * szAccount) = 0;
/*取指定索引的持仓IB合约信息
Index 输入参数,指定基于0索引的持仓和约信息,持仓和约总量参见 Holding 属性。
Hold 输出参数,该该持仓品种持仓量,若空仓返回负数
MktPrice 输出参数,该持仓品种市价
AvgPrice 输出参数,该持仓品种均价
MktValue 输出参数,该持仓品种市值
AgeCost 输出参数,该持仓品种成本
PNL 输出参数,该持仓品种浮动盈亏
Code 输出参数,该持仓品种代码的返回数组,该数组空间至少需要10个字节
Market 输出参数,该持仓品种市场
返回值: 成功返回1,失败返回0 */
virtual BOOL HoldingInfo(UINT Index, int &Hold, double &MktPrice, double &AvgPrice, double &MktValue, double &AgeCost, double &PNL, char *szCode, WORD &Market) = 0;
/*取指定索引的指定其他帐户(CTP,金仕达,恒生,股票等)的合约持仓信息
Index 输入参数,指定基于0索引的持仓和约信息,持仓和约总量参见 Holding2 属性。
BuyHoding 输出参数,该该持仓品种买入持仓总量
BuyCost 输出参数,该持仓品种持仓成本
BuyTodayHoding 输出参数,该持仓品种今买持总量(对于证券市场,该参数为实际可用持仓)
SellHoding 输出参数,该持仓品种卖出持仓总量
SellCost 输出参数,该持仓品种卖出持仓成本
SellTodayHoding 输出参数,该持仓品种的今卖出持仓总量(对于证券市场,该参数为实际可用持仓)
PNL 输出参数,该持仓品种浮动盈亏
UseMargin 输出参数,该持仓品种的保证金占用
Code 输出参数,该持仓品种代码的返回数组,该数组空间至少需要10个字节
Market 输出参数,该持仓品种市场
Account 输入参数,可缺省,登陆其他帐户(CTP,金仕达,恒生,股票等)的帐户名称,若不填写则表示当前默认的帐户
返回值: 成功返回1,失败返回0 */
virtual BOOL HoldingInfo2(UINT Index, int &BuyHoding, double &BuyCost, int &BuyTodayHoding, int &SellHoding, double &SellCost, int &SellTodayHoding, double &PNL, double &UseMargin, char *szCode, WORD &Market, char * szAccount) = 0;
/*
* 取指定基于0索引的未成交IB合约信息
Index 输入参数,指定基于0索引的持仓和约信息,持仓和约总量参见 OrderNum 属性。
OrderID 输出参数, 未成交订单ID
ConSign 输出参数,本次委托数量
Filled 输出参数,已成交数量
Remaining 输出参数,未成交数量
Action 输出参数,动作类型 0买入 1卖出
OrderType 输出参数,订单类型 0限价 1市价 2停损 3市价停损
LmtPrice 输出参数,当OrderType等于0时为限价,为3时为停损限价
auxPrice 输出参数,停损价格
Account 输出参数,帐户信息数组,该数组空间至少需要32个字节
Code 输出参数,该持仓品种代码的返回数组,该数组空间至少需要10个字节
Market 输出参数,该持仓品种市场
返回值: 成功返回1,失败返回0
*/
virtual BOOL OrderInfo(UINT Index, int &OrderID, int &ConSign, int &Filled, int &Remaining, int &Action, int &OrderType, double &LmtPrice, double &auxPrice, char *szAccount, char *szCode, WORD &Market) = 0;
/*取指定基于0索引的未成交其他帐户(CTP,金仕达,恒生,股票等)合约信息
Index 输入参数,指定基于0索引的持仓和约信息,持仓和约总量参见 OrderNum2 属性。
OrderID 输出参数, 未成交订单ID
ConSign 输出参数,本次委托数量
Filled 输出参数,已成交数量
Remaining 输出参数,未成交数量
Action 输出参数,动作类型 0买入 1卖出
OrderType 输出参数,订单类型 0限价 1市价 2停损 3市价停损
LmtPrice 输出参数,当OrderType等于0时为限价,为3时为停损限价
Account 输出参数,帐户信息数组,该数组空间至少需要32个字节
Kaiping 输出参数,开平仓类型 0开仓 1平仓
Code 输出参数,该持仓品种代码的返回数组,该数组空间至少需要10个字节
Market 输出参数,该持仓品种市场
返回值: 成功返回1,失败返回0 */
virtual BOOL OrderInfo2(UINT Index, int &OrderID, int &ConSign, int &Filled, int &Remaining, int &Action, int &OrderType, double &LmtPrice, char *szAccount, int &Kaiping, char *szCode, WORD &Market) = 0;
/*获取指定品种的合约种类
Code 输入参数,指定的品种代码
Market 输入参数,指定的品种市场
返回值:是可以交易的非IB外盘接口品种返回1,IB接口返回0*/
virtual int StockType(char * szCode, WORD wMarket) = 0;
/*取指定品种的和约信息
Code 输入参数,指定的品种代码
Market 输入参数,指定的品种市场
Multipliter 输出参数,该品种的乘数/单位
MinTick 输出参数,该品种的最小变动单位
ShortPercent 输出参数,该品种的空头保证金
LongPercent 输出参数,该品种的多头保证金
返回值:成功返回1否则返回0
*/
virtual int GetContract(char *szCode, WORD wMarket, float &Multipliter, float &MinTick, float &ShortPercent, float &LongPercent) = 0;
/*计算指定品种的本次交易手续费用。请用户在交易费率设置上预先设置好不同品种的各种交易费率情况,这样才能通过此方法得到正确的结果。
Code 指定的品种代码
Market 指定的品种市场
lmtPrice 指定的限价
Volume 委托数量
Type 成交方向 0开仓 1平仓 2平今
返回值: 返回计算后的手续费用*/
virtual float GetChargeByNum(char * szCode, WORD wMarket, float lmtPrice, int Volume, int Type) = 0;
/*取指定基于0索引序号的IB帐户成交明细
Index 输入参数,基于0索引的成交明细
Date 输出参数,成交时间
Code 输出参数,该持仓品种代码的返回数组,该数组空间至少需要10个字节
Market 输出参数,品种市场
OrderType 输出参数,成交单类型,0限价 1市价 2停损 3限价停损
Action 输出参数,成交方向 0买入 1卖出
Price 输出参数,成交价格
Volume 输出参数,成交量
Account 输出参数,帐户信息数组,该数组空间至少需要32个字节
返回值: 成功返回1,失败返回0*/
virtual int TradeDetalied(int Index, DATE &Date, char *szCode, WORD &Market, int &OrderType, int &Action, float &Price, int &Volume, char *szAccount) = 0;
/*取指定基于0索引序号的其他帐户(CTP,金仕达,恒生,股票等)帐户成交明细
Index 输入参数,基于0索引的成交明细
Date 输出参数,成交时间
Code 输出参数,该持仓品种代码的返回数组,该数组空间至少需要10个字节
Market 输出参数,品种市场
OrderType 输出参数,成交单类型,0限价 1市价 2停损 3限价停损
Action 输出参数,成交方向 0买入 1卖出
Price 输出参数,成交价格
Volume 输出参数,成交量
Kaiping 输出参数,开平仓类型,0开仓 1平仓
Account 输入参数,成交帐户,可省略,若省略则表示当前默认激活帐户
返回值: 成功返回1,失败返回0*/
virtual int TradeDetalied2(int Index, DATE &Date, char *szCode, WORD &Market, int &OrderType, int &Action, float &Price, int &Volume, int &Kaiping, char *szAccount) = 0;
//得到指定基于0索引的IB帐户名称,例如IBAccountName(0)表示取第一个登陆的IB帐户
//nIndex 输入参数,基于0索引的IB登录账户索引
//szAccont 输出参数,帐户信息数组,该数组空间至少需要32个字节
//返回值 成功返回true,否则返回 false
virtual bool GetIBAccountName(int nIndex, char * szAccount) = 0;
//得到指定基于0索引的其他帐户(CTP,金仕达,恒生,股票等)帐户名称(包含登陆未成功的),例如 CTPAccountName(0)表示取第一个登陆的用户名称
//nIndex 输入参数,基于0索引的IB登录账户索引
//szAccont 输出参数,帐户信息数组,该数组空间至少需要32个字节
//返回值 成功返回true,否则返回 false
virtual bool GetCTPAccountName(int nIndex, char * szAccount) = 0;
//判断指定帐号是否是当前已登录有效帐号,例如 Order.IsAccount("351579"),如果该账户已登录则返回1,否则返回0
virtual int IsAccount(char *szAccount) = 0;
//获取指定品种的动态行情
// Code 指定的品种代码
// Market 指定的品种市场
// nType 动态品种的行情类型,具体使用请参考PEL语言的DYNAINFO函数的类型参数
// 参考 http://www.weistock.com/WeisoftHelp/fulua_dynainfo.htm
// 返回值 返回计算出的指定值,若调用失败,则返回无效值
virtual float GetDynainfo(char * szCode, WORD wMarket, int nType) = 0;
//扩展数据接口,利用这个接口实现未来的接口功能扩充
virtual void * ExpandFunction(void * pSt, int nType) = 0;
//////////////////////////////////////////////////////////////////////////
// 期权方面的信息
//////////////////////////////////////////////////////////////////////////
//获取期权品种的特征值
// Code 指定的品种代码
// Market 指定的品种市场
// nType 动态品种的行情类型,具体使用请参考 http://www.weistock.com/WeisoftHelp/fulua_optioninfo.htm
// 返回值 返回计算出的指定值
virtual VARIANT OptionInfo(char * szCode, WORD wMarket, int nType) = 0;
};
[此贴子已经被作者于2016-6-1 18:37:29编辑过]