想在OnTrade中处理交易事件,看到OnTrade调用了CheckTradeState函数,在CheckTradeState中调用了各交易事件的处理函数,比如:TradeEventPositionStopTake、TradeEventPositionOpened、TradeEventPositionClosed、TradeEventPositionModified等,但是这些函数是否被调用取决于IS_WAITING_POSITION_STOP_TAKE、IS_WAITING_POSITION_OPENED、IS_WAITING_POSITION_CLOSED,查看这些宏的定义:
#define IS_WAITING_POSITION_OPENED ((m_waiting_event&TRADE_EVENT_POSITION_OPEN)!=0)
#define IS_WAITING_POSITION_VOLUME_CHANGED ((m_waiting_event&TRADE_EVENT_POSITION_VOLUME_CHANGE)!=0)
#define IS_WAITING_POSITION_MODIFIED ((m_waiting_event&TRADE_EVENT_POSITION_MODIFY)!=0)
#define IS_WAITING_POSITION_CLOSED ((m_waiting_event&TRADE_EVENT_POSITION_CLOSE)!=0)
#define IS_WAITING_POSITION_STOP_TAKE ((m_waiting_event&TRADE_EVENT_POSITION_STOP_TAKE)!=0)
主要是看m_waiting_event的相应标志位有没有设置,而m_waiting_event是通过WaitEvent函数设置,但是没有哪个地方有调用WaitEvent,请问要在哪里调用WaitEvent呢?
1、标记上处理OnTrade事件: OnTradeProcess(true);
2、通过WaitEvent 设置想侦听的交易事件: WaitEvent(TRADE_EVENT_POSITION_OPEN| TRADE_EVENT_POSITION_CLOSE); // 只侦听开仓与平仓事件
3、重载虚成员函数(事件): TradeEventPositionOpened, TradeEventPositionClosed。在发生开仓和平仓的时候,就能收到事件通知了。
想在OnTrade中处理交易事件,看到OnTrade调用了CheckTradeState函数,在CheckTradeState中调用了各交易事件的处理函数,比如:TradeEventPositionStopTake、TradeEventPositionOpened、TradeEventPositionClosed、TradeEventPositionModified等,但是这些函数是否被调用取决于IS_WAITING_POSITION_STOP_TAKE、IS_WAITING_POSITION_OPENED、IS_WAITING_POSITION_CLOSED,查看这些宏的定义:
#define IS_WAITING_POSITION_OPENED ((m_waiting_event&TRADE_EVENT_POSITION_OPEN)!=0)
#define IS_WAITING_POSITION_VOLUME_CHANGED ((m_waiting_event&TRADE_EVENT_POSITION_VOLUME_CHANGE)!=0)
#define IS_WAITING_POSITION_MODIFIED ((m_waiting_event&TRADE_EVENT_POSITION_MODIFY)!=0)
#define IS_WAITING_POSITION_CLOSED ((m_waiting_event&TRADE_EVENT_POSITION_CLOSE)!=0)
#define IS_WAITING_POSITION_STOP_TAKE ((m_waiting_event&TRADE_EVENT_POSITION_STOP_TAKE)!=0)
主要是看m_waiting_event的相应标志位有没有设置,而m_waiting_event是通过WaitEvent函数设置,但是没有哪个地方有调用WaitEvent,请问要在哪里调用WaitEvent呢?