コード例 #1
0
void FadePedal::Tick(float value)
{
	if( !m_Ticks.empty() )
	{
		const sTick &prevTick = m_Ticks.back();
		if(prevTick.value!=value && prevTick.state!=m_State)
			m_Ticks.push_back( sTick(m_State,0,prevTick.value) );	// zero step when state changes
	}
	
	m_Ticks.push_back( sTick(m_State,0,value) );
	emit tick(value);
}
コード例 #2
0
ファイル: mqledit.cpp プロジェクト: Wushaowei001/xtuple
void MQLEdit::sTick()
{
  if(OpenRPT::loggedIn)
  {
    XSqlQuery tickle;
    // TODO make this work on other databases.
    tickle.exec("SELECT CURRENT_DATE AS dbdate;");
    // TODO: check for errors. Do we even care?
  }
  _tick.singleShot(60000, this, SLOT(sTick()));
}
コード例 #3
0
LRESULT TapeReaderView::OnIQFeedUpdate( UINT, WPARAM wParam, LPARAM lParam, BOOL& bHandled ) {

  ou::tf::IQFUpdateMessage* msg = reinterpret_cast<ou::tf::IQFUpdateMessage*>( lParam );

  if ( 'N' == *msg->FieldBegin( ou::tf::IQFUpdateMessage::QPLast ) ) {  // field has "Not Found" in numeric field
    CWindow::MessageBoxA( "Symbol Not Found", "Error", MB_OK );
    m_stateUI = UI_SYMBOLENTRY;
    UpdateUIState();
  }
  else {
    std::string sSymbol( 
      msg->FieldBegin( ou::tf::IQFUpdateMessage::QPSymbol ),
      msg->FieldEnd( ou::tf::IQFUpdateMessage::QPSymbol ) );
    if ( sSymbol == m_sSymbol ) {
      std::string sLastTradeTime( 
        msg->FieldBegin(ou::tf:: IQFUpdateMessage::QPLastTradeTime ),
        msg->FieldEnd( ou::tf::IQFUpdateMessage::QPLastTradeTime ) );
      if ( 9 == sLastTradeTime.length() ) {
        std::string sBid( msg->FieldBegin( ou::tf::IQFUpdateMessage::QPBid ), msg->FieldEnd( ou::tf::IQFUpdateMessage::QPBid ) );
        std::string sBidVol( msg->FieldBegin( ou::tf::IQFUpdateMessage::QPBidSize ), msg->FieldEnd( ou::tf::IQFUpdateMessage::QPBidSize ) );
        std::string sTick( msg->FieldBegin( ou::tf::IQFUpdateMessage::QPLast ), msg->FieldEnd( ou::tf::IQFUpdateMessage::QPLast ) );
        std::string sTickVol( msg->FieldBegin( ou::tf::IQFUpdateMessage::QPLastVol ), msg->FieldEnd( ou::tf::IQFUpdateMessage::QPLastVol ) );
        std::string sAsk( msg->FieldBegin( ou::tf::IQFUpdateMessage::QPAsk ), msg->FieldEnd( ou::tf::IQFUpdateMessage::QPAsk ) );
        std::string sAskVol( msg->FieldBegin( ou::tf::IQFUpdateMessage::QPAskSize ), msg->FieldEnd( ou::tf::IQFUpdateMessage::QPAskSize ) );
//            sPrice.assign( msg->FieldBegin( IQFUpdateMessage::QPExtTradeLast ), msg->FieldEnd( IQFUpdateMessage::QPExtTradeLast ) );
//            sSize.assign( msg->FieldBegin( IQFUpdateMessage::QPLastVol ), msg->FieldEnd( IQFUpdateMessage::QPLastVol ) );

        int cntPerPage = m_lvTape.GetCountPerPage();
        if ( 0 < cntPerPage ) {

          int ix;
          while ( cntPerPage <= (ix = m_lvTape.GetItemCount() ) ) {
            m_lvTape.DeleteItem( ix - 1 );
          }

          m_lvTape.InsertItem( 0, sLastTradeTime.c_str() );
          m_lvTape.SetItemText( 0, COLHDR_COL_Bid, sBid.c_str() );
          m_lvTape.SetItemText( 0, COLHDR_COL_BidVol, sBidVol.c_str() );
          m_lvTape.SetItemText( 0, COLHDR_COL_Tck, sTick.c_str() );
          m_lvTape.SetItemText( 0, COLHDR_COL_TckVol, sTickVol.c_str() );
          m_lvTape.SetItemText( 0, COLHDR_COL_Ask, sAsk.c_str() );
          m_lvTape.SetItemText( 0, COLHDR_COL_AskVol, sAskVol.c_str() );

          structRowItems ri;
          ri.vTime = sLastTradeTime;
          ri.vBid = msg->Double( ou::tf::IQFUpdateMessage::QPBid );
//          ri.vBidVol = msg->Integer( IQFUpdateMessage::QPBidSize );
          ri.vTick = msg->Double( ou::tf::IQFUpdateMessage::QPLast );
//          ri.vTickVol = msg->Integer( IQFUpdateMessage::QPLastVol );
          ri.vAsk = msg->Double( ou::tf::IQFUpdateMessage::QPAsk );
//          ri.vAskVol = msg->Integer( IQFUpdateMessage::QPAskSize );
          
          COLORREF cBack = ou::Colour::Beige;
          // set colours so green range for higher buy/sell, new high buy/sell
          // set colours so red range for lower buy/sell, new log buy/sell

          if ( m_bRunning ) {
            if ( 't' == sLastTradeTime[8] ) {  // treat as trade
              double dblMid = ( ri.vBid + ri.vAsk ) / 2.0;
              ri.vBate = "Trade";
              if ( ri.vTick > dblMid ) {
                cBack = ou::Colour::LightGreen;
                ri.vBate = "Buy";
              }
              else {
                cBack = ou::Colour::LightPink;
                ri.vBate = "Sell";
              }
              if ( ri.vTick > m_dblMaxTick ) {
                cBack = ou::Colour::Blue;
              }
              if ( ri.vTick < m_dblMinTick ) {
                cBack = ou::Colour::Orange;
              }
            }
            else {  // process bid/ask stuff
              if ( ( ri.vBid > m_prvValues.vBid ) && ( ri.vAsk < m_prvValues.vAsk ) ) {
                // new inside bid and new inside ask
                cBack = ou::Colour::Gray;
                ri.vBate = "Best Bid/Ask";
              }
              else {
                if ( ( ri.vBid > m_prvValues.vBid ) || ( ri.vAsk < m_prvValues.vAsk ) ) {
                  if ( ri.vBid > m_prvValues.vBid ) {
                    cBack = ou::Colour::Yellow;
                    ri.vBate = "Best Bid";
                  }
                  else {
                    cBack = ou::Colour::White;
                    ri.vBate = "Best Ask";
                  }
                }
                else {  // regular bid or regular ask change
                  if ( 'b' == sLastTradeTime[8] ) {
                    ri.vBate = "Bid";
                    cBack = ou::Colour::LightYellow;
                  }
                  if ( 'a' == sLastTradeTime[8] ) {
                    ri.vBate = "Ask";
                    cBack = ou::Colour::Snow;
                  }
                }
              }
            }
            m_lvTape.SetItemText( 0, COLHDR_COL_BATE, ri.vBate.c_str() );
          }
          else {
            m_bRunning = true;
            m_dblMinTick = m_dblMaxTick = ri.vTick;
          }
          m_prvValues = ri;
          m_dblMinTick = std::min<double>( m_dblMinTick, ri.vTick );
          m_dblMaxTick = std::max<double>( m_dblMaxTick, ri.vTick );

          m_prvValues = ri;
        }
      }
    }
  }

  linebuffer_t* p = reinterpret_cast<linebuffer_t*>( wParam );
  m_pIQFeed->UpdateDone( p, msg );

  bHandled = true;
  return 1;
}