Example #1
0
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 );
}
Example #2
0
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 );
}
Example #3
0
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 );
}
Example #4
0
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;
	}
}
Example #5
0
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 );
}
Example #6
0
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 );
}
Example #7
0
void to_xml( xmlNodePtr parent, const ExecutionsRequest &eR )
{
	xmlNodePtr ne = xmlNewChild( parent, NULL, (xmlChar*)"query", NULL);
	conv_ib2xml( ne, "executionFilter", eR.executionFilter );
}
Example #8
0
void to_xml( xmlNodePtr parent, const ContractDetailsRequest& cdr)
{
	xmlNodePtr nqry = xmlNewChild( parent, NULL, (xmlChar*)"query", NULL);
	conv_ib2xml( nqry, "reqContract", cdr.ibContract() );
}
Example #9
0
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
}
Example #10
0
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
}