예제 #1
0
 void TestContext::terminateStrategy()
 {
   DEBUG_MESSAGE(reqQryDebugLog(),"Terminated From Front End");
   reqAddStrategyComment(API2::CONSTANTS::RSP_StrategyComment_STRATEGY_COMPLETED_SUCCESSFULLY);
   reqTerminateStrategy();
   return;
 }
void API2::Test2::Context::onFilled(API2::OrderConfirmation &confirmation, API2::COMMON::OrderId *orderId)
{
  DEBUG_MESSAGE(reqQryDebugLog(), __PRETTY_FUNCTION__ );

  DEBUG_MESSAGE(reqQryDebugLog(), "Order Filled, Terminating");
  reqAddStrategyComment(API2::CONSTANTS::RSP_StrategyComment_STRATEGY_COMPLETED_SUCCESSFULLY);
  reqTerminateStrategy(false);
}
void API2::Test2::Context::onMarketDataEvent(UNSIGNED_LONG symbolId)
{
  API2::DATA_TYPES::RiskStatus risk;

  //    DEBUG_MESSAGE(reqQryDebugLog(), __PRETTY_FUNCTION__ );
  //    DEBUG_FLUSH(reqQryDebugLog());

  //    reqQryMarketData(symbolId)->dump();
  //    return;





  if(_orderWrapper._isReset)
  {
    DEBUG_MESSAGE(reqQryDebugLog(), "Sending New Order");

    if(!_orderWrapper.newOrder(risk,getPrice(),_userParams._qty))
    {
      DEBUG_VARSHOW(reqQryDebugLog(), "Failed Sending New Order, Reason:", risk);
      DEBUG_FLUSH(reqQryDebugLog());

      reqAddStrategyComment(API2::CONSTANTS::RSP_StrategyComment_RMS_FAILURE);
      reqTerminateStrategy();
    }
  }
  else
  {
    switch(reqQryOrderStatus(_orderWrapper._orderId))
    {
      case API2::CONSTANTS::RSP_OrderStatus_PENDING:
        return;
      case API2::CONSTANTS::RSP_OrderStatus_FILLED:
      case API2::CONSTANTS::RSP_OrderStatus_CANCELED:
        _orderWrapper.reset();
        onMarketDataEvent(symbolId);
        return;
      case API2::CONSTANTS::RSP_OrderStatus_CONFIRMED:
      case API2::CONSTANTS::RSP_OrderStatus_PARTIALLY_FILLED:
      case API2::CONSTANTS::RSP_OrderStatus_REPLACED:
        if(_orderWrapper.replaceOrder(risk,getPrice(),_userParams._qty)){
          DEBUG_MESSAGE(reqQryDebugLog(), "Sent Replace Order");
        }
        else{
          DEBUG_VARSHOW(reqQryDebugLog(), "Failed Replace Order, reason",risk);
        }


    }

  }

  DEBUG_FLUSH(reqQryDebugLog());

}
API2::Test2::Context::Context(API2::StrategyParameters *params):
  API2::SGContext(params, "CustomTest2"),
  _Instrument(NULL),
  _userParams()
{
  API2::UserParams *customOMMParams = (API2::UserParams *)params->getInfo();
  DEBUG_MESSAGE(reqQryDebugLog(), __PRETTY_FUNCTION__ );

  customOMMParams->dump();
  if(!setInternalParameters(customOMMParams))
  {
    reqAddStrategyComment(API2::CONSTANTS::RSP_StrategyComment_STRATEGY_ERROR_STATE);
    reqTerminateStrategy();
  }



}
예제 #5
0
 void TestContext::terminateStrategyComment(API2::DATA_TYPES::StrategyComment comment)
 {
   _terminate = true;
   reqAddStrategyComment(comment);
   reqTerminateStrategy();
 }