コード例 #1
0
ファイル: tws_xml.cpp プロジェクト: enthalpy-yan/twstools
void conv_xml2ib( IB::ContractDetails* cd, const xmlNodePtr node )
{
	char* tmp;

	GET_ATTR_STRING( cd, marketName );
	GET_ATTR_STRING( cd, tradingClass );
	GET_ATTR_DOUBLE( cd, minTick );
	GET_ATTR_STRING( cd, orderTypes );
	GET_ATTR_STRING( cd, validExchanges );
	GET_ATTR_LONG( cd, priceMagnifier );
	GET_ATTR_INT( cd, underConId );
	GET_ATTR_STRING( cd, longName );
	GET_ATTR_STRING( cd, contractMonth );
	GET_ATTR_STRING( cd, industry );
	GET_ATTR_STRING( cd, category );
	GET_ATTR_STRING( cd, subcategory );
	GET_ATTR_STRING( cd, timeZoneId );
	GET_ATTR_STRING( cd, tradingHours );
	GET_ATTR_STRING( cd, liquidHours );
#if TWSAPI_IB_VERSION_NUMBER >= 967
	GET_ATTR_STRING( cd, evRule );
	GET_ATTR_DOUBLE( cd, evMultiplier );
#endif
	// BOND values
	GET_ATTR_STRING( cd, cusip );
	GET_ATTR_STRING( cd, ratings );
	GET_ATTR_STRING( cd, descAppend );
	GET_ATTR_STRING( cd, bondType );
	GET_ATTR_STRING( cd, couponType );
	GET_ATTR_BOOL( cd, callable );
	GET_ATTR_BOOL( cd, putable );
	GET_ATTR_DOUBLE( cd, coupon );
	GET_ATTR_BOOL( cd, convertible );
	GET_ATTR_STRING( cd, maturity );
	GET_ATTR_STRING( cd, issueDate );
	GET_ATTR_STRING( cd, nextOptionDate );
	GET_ATTR_STRING( cd, nextOptionType );
	GET_ATTR_BOOL( cd, nextOptionPartial );
	GET_ATTR_STRING( cd, notes );

	for( xmlNodePtr p = node->children; p!= NULL; p=p->next) {
		if( p->type != XML_ELEMENT_NODE ) {
			continue;
		}
		if( strcmp((char*) p->name, "summary") == 0 ) {
			conv_xml2ib( &cd->summary, p );
		}
#if TWSAPI_IB_VERSION_NUMBER >= 967
		else if(p->name && (strcmp((char*) p->name, "secIdList") == 0)) {
			GET_CHILD_TAGVALUELIST( cd->secIdList );
		}
#endif
	}
}
コード例 #2
0
ファイル: tws_xml.cpp プロジェクト: enthalpy-yan/twstools
void from_xml( AccStatusRequest *aR, const xmlNodePtr node )
{
	char* tmp;

	GET_ATTR_BOOL( aR, subscribe );
	GET_ATTR_STRING( aR, acctCode );
}
コード例 #3
0
ファイル: tws_xml.cpp プロジェクト: enthalpy-yan/twstools
void from_xml( MktDataRequest* mdr, const xmlNodePtr node )
{
	char* tmp;

	for( xmlNodePtr p = node->children; p!= NULL; p=p->next) {
		if( p->type == XML_ELEMENT_NODE
			&& strcmp((char*)p->name, "reqContract") == 0 )  {
			conv_xml2ib( &mdr->ibContract, p);
		}
	}

	GET_ATTR_STRING( mdr, genericTicks );
	GET_ATTR_BOOL( mdr, snapshot );
}
コード例 #4
0
ファイル: tws_xml.cpp プロジェクト: enthalpy-yan/twstools
void from_xml( RowHist *row, const xmlNodePtr node )
{
	char* tmp;
	*row = dflt_RowHist;

	GET_ATTR_STRING( row, date );
	GET_ATTR_DOUBLE( row, open );
	GET_ATTR_DOUBLE( row, high );
	GET_ATTR_DOUBLE( row, low );
	GET_ATTR_DOUBLE( row, close );
	GET_ATTR_INT( row, volume );
	GET_ATTR_INT( row, count );
	GET_ATTR_DOUBLE( row, WAP );
	GET_ATTR_BOOL( row, hasGaps );
}
コード例 #5
0
ファイル: frissconfig.cpp プロジェクト: DarkmatterVale/fRiSS
bool
FrissConfig::Load( const char* path )
{
	BString temp;
	temp << "Loading settings file : " << path << "\n";
	fprintf(stderr, temp.String());

	XmlNode* root = new XmlNode( NULL, "" );
	if (!root->LoadFile( path )) {
		delete root;
		return false;
	}

	XmlNode* f = NULL;

	GET_ATTR_INT( "settings", "version", m_iVersion );

	GET_ATTR_INT( "settings/generic/feeds", "a", m_iIndex );
	GET_ATTR_INT( "settings/generic/feeds", "b", m_iAnz );

	GET_ATTR_INT( "settings/generic/refresh", "rate", RefreshRate );
	GET_ATTR_BOOL( "settings/generic/refresh", "advance", RefreshAdvances );

	GET_VALUE_STR( "settings/generic/language", Lang );
	GET_VALUE_STR( "settings/generic/feedfile", Feedlist );

	f=root->GetChild("settings/window/position");
	if(f) {
	 	m_rWindow.left = f->AttributeAsInt("x");
 		m_rWindow.top = f->AttributeAsInt("y");
	 	m_rWindow.right = m_rWindow.left + f->AttributeAsInt("width");
 		m_rWindow.bottom = m_rWindow.top + f->AttributeAsInt("height");
 	}

	GET_NODE( "settings/window/background/mode") ColBackMode = (ColBack_t)f->ValueAsInt();
	f=root->GetChild("settings/window/background/colour");
	if(f) {
	 	col.red = f->AttributeAsInt("red");
 		col.green = f->AttributeAsInt("green");
	 	col.blue = f->AttributeAsInt("blue");
	}

	GET_NODE( "settings/window/foreground/mode") ColForeMode = (ColFore_t)f->ValueAsInt();
	f=root->GetChild("settings/window/foreground/colour");
	if(f) {
	 	high.red = f->AttributeAsInt("red");
 		high.green = f->AttributeAsInt("green");
	 	high.blue = f->AttributeAsInt("blue");
	}

	if ((f = root->GetChild("settings/window/windowmode")) != NULL)
		WindowMode = (WindowMode_t) f->ValueAsInt();

	if ((f = root->GetChild("settings/browser/mode")) != NULL)
		BrowserType = (BrowserType_t) f->ValueAsInt();

	if ((f = root->GetChild("settings/browser/mime")) != NULL)
		BrowserMime = f->Value();


	delete root;
	return true;
}
コード例 #6
0
ファイル: tws_xml.cpp プロジェクト: enthalpy-yan/twstools
void conv_xml2ib( IB::Order* o, const xmlNodePtr node )
{
	char* tmp;

	GET_ATTR_LONG( o, orderId );
	GET_ATTR_LONG( o, clientId );
	GET_ATTR_LONG( o, permId );
	GET_ATTR_STRING( o, action );
	GET_ATTR_LONG( o, totalQuantity );
	GET_ATTR_STRING( o, orderType );
	GET_ATTR_DOUBLE( o, lmtPrice );
	GET_ATTR_DOUBLE( o, auxPrice );
	GET_ATTR_STRING( o, tif );
	GET_ATTR_STRING( o, ocaGroup );
	GET_ATTR_INT( o, ocaType );
	GET_ATTR_STRING( o, orderRef );
	GET_ATTR_BOOL( o, transmit );
	GET_ATTR_LONG( o, parentId );
	GET_ATTR_BOOL( o, blockOrder );
	GET_ATTR_BOOL( o, sweepToFill );
	GET_ATTR_INT( o, displaySize );
	GET_ATTR_INT( o, triggerMethod );
	GET_ATTR_BOOL( o, outsideRth );
	GET_ATTR_BOOL( o, hidden );
	GET_ATTR_STRING( o, goodAfterTime );
	GET_ATTR_STRING( o, goodTillDate );
	GET_ATTR_STRING( o, rule80A );
	GET_ATTR_BOOL( o, allOrNone );
	GET_ATTR_INT( o, minQty );
	GET_ATTR_DOUBLE( o, percentOffset );
	GET_ATTR_BOOL( o, overridePercentageConstraints );
	GET_ATTR_DOUBLE( o, trailStopPrice );
#if TWSAPI_IB_VERSION_NUMBER >= 967
	GET_ATTR_DOUBLE( o, trailingPercent );
#endif
	GET_ATTR_STRING( o, faGroup );
	GET_ATTR_STRING( o, faProfile );
	GET_ATTR_STRING( o, faMethod );
	GET_ATTR_STRING( o, faPercentage );
	GET_ATTR_STRING( o, openClose );

	tmp = (char*) xmlGetProp( node, (xmlChar*) "origin" );
	if(tmp) {
		int orderOriginInt = atoi( tmp );
		free(tmp);
		o->origin = (IB::Origin) orderOriginInt;
	}
	GET_ATTR_INT( o, shortSaleSlot );
	GET_ATTR_STRING( o, designatedLocation );
	GET_ATTR_INT( o, exemptCode );
	GET_ATTR_DOUBLE( o, discretionaryAmt );
	GET_ATTR_BOOL( o, eTradeOnly );
	GET_ATTR_BOOL( o, firmQuoteOnly );
	GET_ATTR_DOUBLE( o, nbboPriceCap );
	GET_ATTR_BOOL( o, optOutSmartRouting );
	GET_ATTR_INT( o, auctionStrategy );
	GET_ATTR_DOUBLE( o, startingPrice );
	GET_ATTR_DOUBLE( o, stockRefPrice );
	GET_ATTR_DOUBLE( o, delta );
	GET_ATTR_DOUBLE( o, stockRangeLower );
	GET_ATTR_DOUBLE( o, stockRangeUpper );
	GET_ATTR_DOUBLE( o, volatility );
	GET_ATTR_INT( o, volatilityType );
	GET_ATTR_STRING( o,  deltaNeutralOrderType );
	GET_ATTR_DOUBLE( o, deltaNeutralAuxPrice );
	GET_ATTR_LONG( o, deltaNeutralConId );
	GET_ATTR_STRING( o, deltaNeutralSettlingFirm );
	GET_ATTR_STRING( o, deltaNeutralClearingAccount );
	GET_ATTR_STRING( o, deltaNeutralClearingIntent );
#if TWSAPI_IB_VERSION_NUMBER >= 968
	GET_ATTR_STRING( o, deltaNeutralOpenClose );
	GET_ATTR_BOOL( o, deltaNeutralShortSale );
	GET_ATTR_INT( o, deltaNeutralShortSaleSlot );
	GET_ATTR_STRING( o, deltaNeutralDesignatedLocation );
#endif
	GET_ATTR_BOOL( o, continuousUpdate );
	GET_ATTR_INT( o, referencePriceType );
	GET_ATTR_DOUBLE( o, basisPoints );
	GET_ATTR_INT( o, basisPointsType );
	GET_ATTR_INT( o, scaleInitLevelSize );
	GET_ATTR_INT( o, scaleSubsLevelSize );
	GET_ATTR_DOUBLE( o, scalePriceIncrement );
#if TWSAPI_IB_VERSION_NUMBER >= 967
	GET_ATTR_DOUBLE( o, scalePriceAdjustValue );
	GET_ATTR_INT( o, scalePriceAdjustInterval );
	GET_ATTR_DOUBLE( o, scaleProfitOffset );
	GET_ATTR_BOOL( o, scaleAutoReset );
	GET_ATTR_INT( o, scaleInitPosition );
	GET_ATTR_INT( o, scaleInitFillQty );
	GET_ATTR_BOOL( o, scaleRandomPercent );
#endif
	GET_ATTR_STRING( o, hedgeType );
	GET_ATTR_STRING( o, hedgeParam );
	GET_ATTR_STRING( o, account );
	GET_ATTR_STRING( o, settlingFirm );
	GET_ATTR_STRING( o, clearingAccount );
	GET_ATTR_STRING( o, clearingIntent );
	GET_ATTR_STRING( o, algoStrategy );
	GET_ATTR_BOOL( o, whatIf );
	GET_ATTR_BOOL( o, notHeld );

	for( xmlNodePtr p = node->children; p!= NULL; p=p->next) {
		if( p->type != XML_ELEMENT_NODE ) {
			continue;
		}
		if( strcmp((char*) p->name, "algoParams") == 0 ) {
			GET_CHILD_TAGVALUELIST( o->algoParams );
		} else if( strcmp((char*) p->name, "smartComboRoutingParams") == 0 ) {
			GET_CHILD_TAGVALUELIST( o->smartComboRoutingParams );
		}
#if TWSAPI_IB_VERSION_NUMBER >= 967
		else if( strcmp((char*) p->name, "orderComboLegs") == 0 ) {
			o->orderComboLegs = IB::Order::OrderComboLegListSPtr(
				new IB::Order::OrderComboLegList() );
			for( xmlNodePtr q = p->children; q!= NULL; q=q->next) {
				IB::OrderComboLegSPtr oCL( new IB::OrderComboLeg());
				if( q->type != XML_ELEMENT_NODE
				    || (strcmp((char*) q->name, "orderComboLeg") != 0)) {
					continue;
				}
				conv_xml2ib( oCL.get(), q );
				o->orderComboLegs->push_back(oCL);
			}
		}
#endif
	}
}
コード例 #7
0
ファイル: tws_xml.cpp プロジェクト: enthalpy-yan/twstools
void conv_xml2ib( IB::Contract* c, const xmlNodePtr node )
{
	char* tmp;

	GET_ATTR_LONG( c, conId );
	GET_ATTR_STRING( c, symbol );
	GET_ATTR_STRING( c, secType );
	GET_ATTR_STRING( c, expiry );
	GET_ATTR_DOUBLE( c, strike );
	GET_ATTR_STRING( c, right );
	GET_ATTR_STRING( c, multiplier );
	GET_ATTR_STRING( c, exchange );
	GET_ATTR_STRING( c, primaryExchange );
	GET_ATTR_STRING( c, currency );
	GET_ATTR_STRING( c, localSymbol );
	GET_ATTR_BOOL( c, includeExpired );
	GET_ATTR_STRING( c, secIdType );
	GET_ATTR_STRING( c, secId );
	GET_ATTR_STRING( c, comboLegsDescrip );

	for( xmlNodePtr p = node->children; p!= NULL; p=p->next) {
		if( p->type != XML_ELEMENT_NODE ) {
			continue;
		}
		if( strcmp((char*) p->name, "comboLegs") == 0 ) {
#if TWSAPI_IB_VERSION_NUMBER <= 966
			if( c->comboLegs != NULL ) {
				/* see comment for underComp below */
				delete c->comboLegs;
			}
			c->comboLegs = new IB::Contract::ComboLegList();
#else
			c->comboLegs = IB::Contract::ComboLegListSPtr(
				new IB::Contract::ComboLegList() );
#endif
			for( xmlNodePtr q = p->children; q!= NULL; q=q->next) {
				if( q->type != XML_ELEMENT_NODE
					|| (strcmp((char*) q->name, "comboLeg") != 0)) {
					continue;
				}
				IB::ComboLeg *cl = new IB::ComboLeg();
				conv_xml2ib( cl, q );
#if TWSAPI_IB_VERSION_NUMBER <= 966
				c->comboLegs->push_back(cl);
#else
				c->comboLegs->push_back(IB::ComboLegSPtr(cl));
#endif
			}
		} else if( strcmp((char*) p->name, "underComp") == 0 ) {
			if( c->underComp != NULL ) {
				/* This can only happen if the caller gave us an uninitialized
				   contract (programming error) or if the xml wrongly contains
				   more than one underComp tag. For the second case we have to
				   avoid a memleak here */
				delete c->underComp;
			}
			c->underComp = new IB::UnderComp();
			conv_xml2ib( c->underComp, p );
		}
	}
}