void to_xml( xmlNodePtr parent, const RowExecution &row ) { xmlNodePtr nrow = xmlNewChild( parent, NULL, (const xmlChar*)"ExecDetails", NULL); conv_ib2xml( nrow, "contract", row.contract ); conv_ib2xml( nrow, "execution", row.execution ); }
static void to_xml( xmlNodePtr parent, const RowOpenOrder &d ) { char tmp[128]; xmlNodePtr nrow = xmlNewChild( parent, NULL, (const xmlChar*)"OpenOrder", NULL); A_ADD_ATTR_LONG(nrow, d, orderId); conv_ib2xml( nrow, "contract", d.contract ); conv_ib2xml( nrow, "order", d.order ); conv_ib2xml( nrow, "orderState", d.orderState ); }
void to_xml( xmlNodePtr parent, const PlaceOrder& po) { char tmp[128]; static const PlaceOrder dflt; xmlNodePtr ne = xmlNewChild( parent, NULL, (xmlChar*)"query", NULL); conv_ib2xml( ne, "contract", po.contract ); conv_ib2xml( ne, "order", po.order ); ADD_ATTR_LONG( po, orderId ); ADD_ATTR_LONGLONG( po, time_sent ); }
void to_xml( xmlNodePtr parent, const RowAcc& row ) { char tmp[128]; switch( row.type ) { case RowAcc::t_AccVal: { const RowAccVal &d = *(RowAccVal*)row.data; xmlNodePtr nrow = xmlNewChild( parent, NULL, (const xmlChar*)"AccVal", NULL); A_ADD_ATTR_STRING( nrow, d, key ); A_ADD_ATTR_STRING( nrow, d, val ); A_ADD_ATTR_STRING( nrow, d, currency ); A_ADD_ATTR_STRING( nrow, d, accountName ); } break; case RowAcc::t_Prtfl: { const RowPrtfl &d = *(RowPrtfl*)row.data; xmlNodePtr nrow = xmlNewChild( parent, NULL, (const xmlChar*)"Prtfl", NULL); conv_ib2xml( nrow, "contract", d.contract ); A_ADD_ATTR_INT( nrow, d, position ); A_ADD_ATTR_DOUBLE( nrow, d, marketPrice ); A_ADD_ATTR_DOUBLE( nrow, d, marketValue ); A_ADD_ATTR_DOUBLE( nrow, d, averageCost ); A_ADD_ATTR_DOUBLE( nrow, d, unrealizedPNL ); A_ADD_ATTR_DOUBLE( nrow, d, realizedPNL ); A_ADD_ATTR_STRING( nrow, d, accountName ); } break; case RowAcc::t_stamp: { const std::string &d = *(std::string*)row.data; xmlNodePtr nrow = xmlNewChild( parent, NULL, (const xmlChar*)"stamp", NULL); xmlNewProp ( nrow, (xmlChar*) "timeStamp", (const xmlChar*) d.c_str() ); } break; case RowAcc::t_end: { const std::string &d = *(std::string*)row.data; xmlNodePtr nrow = xmlNewChild( parent, NULL, (const xmlChar*)"end", NULL); xmlNewProp ( nrow, (xmlChar*) "accountName", (const xmlChar*) d.c_str() ); } break; } }
void to_xml( xmlNodePtr parent, const HistRequest& hr) { char tmp[128]; static const HistRequest dflt; xmlNodePtr ne = xmlNewChild( parent, NULL, (xmlChar*)"query", NULL); conv_ib2xml( ne, "reqContract", hr.ibContract ); ADD_ATTR_STRING( hr, endDateTime ); ADD_ATTR_STRING( hr, durationStr ); ADD_ATTR_STRING( hr, barSizeSetting ); ADD_ATTR_STRING( hr, whatToShow ); ADD_ATTR_INT( hr, useRTH ); ADD_ATTR_INT( hr, formatDate ); }
void PacketContractDetails::dumpXml() { xmlNodePtr root = TwsXml::newDocRoot(); xmlNodePtr npcd = xmlNewChild( root, NULL, (const xmlChar*)"request", NULL ); xmlNewProp( npcd, (const xmlChar*)"type", (const xmlChar*)"contract_details" ); to_xml(npcd, *request ); xmlNodePtr nrsp = xmlNewChild( npcd, NULL, (xmlChar*)"response", NULL); for( size_t i=0; i<cdList->size(); i++ ) { conv_ib2xml( nrsp, "ContractDetails", (*cdList)[i] ); } TwsXml::dumpAndFree( root ); }
void to_xml( xmlNodePtr parent, const ExecutionsRequest &eR ) { xmlNodePtr ne = xmlNewChild( parent, NULL, (xmlChar*)"query", NULL); conv_ib2xml( ne, "executionFilter", eR.executionFilter ); }
void to_xml( xmlNodePtr parent, const ContractDetailsRequest& cdr) { xmlNodePtr nqry = xmlNewChild( parent, NULL, (xmlChar*)"query", NULL); conv_ib2xml( nqry, "reqContract", cdr.ibContract() ); }
void conv_ib2xml( xmlNodePtr parent, const char* name, const IB::Order& o ) { char tmp[128]; static const IB::Order dflt; xmlNodePtr ne = xmlNewChild( parent, NULL, (const xmlChar*)name, NULL); ADD_ATTR_LONG( o, orderId ); ADD_ATTR_LONG( o, clientId ); ADD_ATTR_LONG( o, permId ); ADD_ATTR_STRING( o, action ); ADD_ATTR_LONG( o, totalQuantity ); ADD_ATTR_STRING( o, orderType ); ADD_ATTR_DOUBLE( o, lmtPrice ); ADD_ATTR_DOUBLE( o, auxPrice ); ADD_ATTR_STRING( o, tif ); ADD_ATTR_STRING( o, ocaGroup ); ADD_ATTR_INT( o, ocaType ); ADD_ATTR_STRING( o, orderRef ); ADD_ATTR_BOOL( o, transmit ); ADD_ATTR_LONG( o, parentId ); ADD_ATTR_BOOL( o, blockOrder ); ADD_ATTR_BOOL( o, sweepToFill ); ADD_ATTR_INT( o, displaySize ); ADD_ATTR_INT( o, triggerMethod ); ADD_ATTR_BOOL( o, outsideRth ); ADD_ATTR_BOOL( o, hidden ); ADD_ATTR_STRING( o, goodAfterTime ); ADD_ATTR_STRING( o, goodTillDate ); ADD_ATTR_STRING( o, rule80A ); ADD_ATTR_BOOL( o, allOrNone ); ADD_ATTR_INT( o, minQty ); ADD_ATTR_DOUBLE( o, percentOffset ); ADD_ATTR_BOOL( o, overridePercentageConstraints ); ADD_ATTR_DOUBLE( o, trailStopPrice ); #if TWSAPI_IB_VERSION_NUMBER >= 967 ADD_ATTR_DOUBLE( o, trailingPercent ); #endif ADD_ATTR_STRING( o, faGroup ); ADD_ATTR_STRING( o, faProfile ); ADD_ATTR_STRING( o, faMethod ); ADD_ATTR_STRING( o, faPercentage ); ADD_ATTR_STRING( o, openClose ); ADD_ATTR_INT( o, origin ); // TODO that's an enum! ADD_ATTR_INT( o, shortSaleSlot ); ADD_ATTR_STRING( o, designatedLocation ); ADD_ATTR_INT( o, exemptCode ); ADD_ATTR_DOUBLE( o, discretionaryAmt ); ADD_ATTR_BOOL( o, eTradeOnly ); ADD_ATTR_BOOL( o, firmQuoteOnly ); ADD_ATTR_DOUBLE( o, nbboPriceCap ); ADD_ATTR_BOOL( o, optOutSmartRouting ); ADD_ATTR_INT( o, auctionStrategy ); ADD_ATTR_DOUBLE( o, startingPrice ); ADD_ATTR_DOUBLE( o, stockRefPrice ); ADD_ATTR_DOUBLE( o, delta ); ADD_ATTR_DOUBLE( o, stockRangeLower ); ADD_ATTR_DOUBLE( o, stockRangeUpper ); ADD_ATTR_DOUBLE( o, volatility ); ADD_ATTR_INT( o, volatilityType ); ADD_ATTR_STRING( o, deltaNeutralOrderType ); ADD_ATTR_DOUBLE( o, deltaNeutralAuxPrice ); ADD_ATTR_LONG( o, deltaNeutralConId ); ADD_ATTR_STRING( o, deltaNeutralSettlingFirm ); ADD_ATTR_STRING( o, deltaNeutralClearingAccount ); ADD_ATTR_STRING( o, deltaNeutralClearingIntent ); #if TWSAPI_IB_VERSION_NUMBER >= 968 ADD_ATTR_STRING( o, deltaNeutralOpenClose ); ADD_ATTR_BOOL( o, deltaNeutralShortSale ); ADD_ATTR_INT( o, deltaNeutralShortSaleSlot ); ADD_ATTR_STRING( o, deltaNeutralDesignatedLocation ); #endif ADD_ATTR_BOOL( o, continuousUpdate ); ADD_ATTR_INT( o, referencePriceType ); ADD_ATTR_DOUBLE( o, basisPoints ); ADD_ATTR_INT( o, basisPointsType ); ADD_ATTR_INT( o, scaleInitLevelSize ); ADD_ATTR_INT( o, scaleSubsLevelSize ); ADD_ATTR_DOUBLE( o, scalePriceIncrement ); #if TWSAPI_IB_VERSION_NUMBER >= 967 ADD_ATTR_DOUBLE( o, scalePriceAdjustValue ); ADD_ATTR_INT( o, scalePriceAdjustInterval ); ADD_ATTR_DOUBLE( o, scaleProfitOffset ); ADD_ATTR_BOOL( o, scaleAutoReset ); ADD_ATTR_INT( o, scaleInitPosition ); ADD_ATTR_INT( o, scaleInitFillQty ); ADD_ATTR_BOOL( o, scaleRandomPercent ); #endif ADD_ATTR_STRING( o, hedgeType ); ADD_ATTR_STRING( o, hedgeParam ); ADD_ATTR_STRING( o, account ); ADD_ATTR_STRING( o, settlingFirm ); ADD_ATTR_STRING( o, clearingAccount ); ADD_ATTR_STRING( o, clearingIntent ); ADD_ATTR_STRING( o, algoStrategy ); ADD_CHILD_TAGVALUELIST( o, algoParams ); ADD_CHILD_TAGVALUELIST( o, smartComboRoutingParams ); ADD_ATTR_BOOL( o, whatIf ); ADD_ATTR_BOOL( o, notHeld ); #if TWSAPI_IB_VERSION_NUMBER >= 967 if( o.orderComboLegs.get() != NULL ) { xmlNodePtr np = xmlNewChild( ne, NULL, (xmlChar*)"orderComboLegs", NULL); for( IB::Order::OrderComboLegList::const_iterator it = o.orderComboLegs->begin(); it != o.orderComboLegs->end(); ++it) { conv_ib2xml( np, "orderComboLeg", **it ); } } #endif }
void conv_ib2xml( xmlNodePtr parent, const char* name, const IB::Contract& c ) { char tmp[128]; static const IB::Contract dflt; xmlNodePtr ne = xmlNewChild( parent, NULL, (const xmlChar*)name, NULL); ADD_ATTR_LONG( c, conId ); ADD_ATTR_STRING( c, symbol ); ADD_ATTR_STRING( c, secType ); ADD_ATTR_STRING( c, expiry ); ADD_ATTR_DOUBLE( c, strike ); ADD_ATTR_STRING( c, right ); ADD_ATTR_STRING( c, multiplier ); ADD_ATTR_STRING( c, exchange ); ADD_ATTR_STRING( c, primaryExchange ); ADD_ATTR_STRING( c, currency ); ADD_ATTR_STRING( c, localSymbol ); ADD_ATTR_BOOL( c, includeExpired ); ADD_ATTR_STRING( c, secIdType ); ADD_ATTR_STRING( c, secId ); ADD_ATTR_STRING( c, comboLegsDescrip ); #if TWSAPI_IB_VERSION_NUMBER <= 966 if( c.comboLegs != NULL ) { #else if( c.comboLegs.get() != NULL ) { #endif xmlNodePtr ncl = xmlNewChild( ne, NULL, (xmlChar*)"comboLegs", NULL); for( IB::Contract::ComboLegList::const_iterator it = c.comboLegs->begin(); it != c.comboLegs->end(); ++it) { conv_ib2xml( ncl, "comboLeg", **it ); } } if( c.underComp != NULL ) { conv_ib2xml( ne, "underComp", *c.underComp ); } } void conv_ib2xml( xmlNodePtr parent, const char* name, const IB::ContractDetails& cd ) { char tmp[128]; static const IB::ContractDetails dflt; xmlNodePtr ne = xmlNewChild( parent, NULL, (const xmlChar*)name, NULL); conv_ib2xml( ne, "summary", cd.summary ); ADD_ATTR_STRING( cd, marketName ); ADD_ATTR_STRING( cd, tradingClass ); ADD_ATTR_DOUBLE( cd, minTick ); ADD_ATTR_STRING( cd, orderTypes ); ADD_ATTR_STRING( cd, validExchanges ); ADD_ATTR_LONG( cd, priceMagnifier ); ADD_ATTR_INT( cd, underConId ); ADD_ATTR_STRING( cd, longName ); ADD_ATTR_STRING( cd, contractMonth ); ADD_ATTR_STRING( cd, industry ); ADD_ATTR_STRING( cd, category ); ADD_ATTR_STRING( cd, subcategory ); ADD_ATTR_STRING( cd, timeZoneId ); ADD_ATTR_STRING( cd, tradingHours ); ADD_ATTR_STRING( cd, liquidHours ); #if TWSAPI_IB_VERSION_NUMBER >= 967 ADD_ATTR_STRING( cd, evRule ); ADD_ATTR_DOUBLE( cd, evMultiplier ); #endif // BOND values ADD_ATTR_STRING( cd, cusip ); ADD_ATTR_STRING( cd, ratings ); ADD_ATTR_STRING( cd, descAppend ); ADD_ATTR_STRING( cd, bondType ); ADD_ATTR_STRING( cd, couponType ); ADD_ATTR_BOOL( cd, callable ); ADD_ATTR_BOOL( cd, putable ); ADD_ATTR_DOUBLE( cd, coupon ); ADD_ATTR_BOOL( cd, convertible ); ADD_ATTR_STRING( cd, maturity ); ADD_ATTR_STRING( cd, issueDate ); ADD_ATTR_STRING( cd, nextOptionDate ); ADD_ATTR_STRING( cd, nextOptionType ); ADD_ATTR_BOOL( cd, nextOptionPartial ); ADD_ATTR_STRING( cd, notes ); #if TWSAPI_IB_VERSION_NUMBER >= 967 ADD_CHILD_TAGVALUELIST( cd, secIdList ); #endif }