⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 feed.java

📁 EclipseTrader is a stock exchange analysis system, featuring shares pricing watch, intraday and hi
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     * @see net.sourceforge.eclipsetrader.core.IFeed#start()     */    public void start()    {        if (!running)        {            streams.clear();            pendingStreams.clear();            client.addListener(clientListener);            try {                client.login(15 * 1000);                for (Iterator iter = subscribedSecurities.iterator(); iter.hasNext(); )                    requestTickStream((Security)iter.next());            } catch(Exception e) {                log.error(e, e);            }            running = true;        }    }    /* (non-Javadoc)     * @see net.sourceforge.eclipsetrader.core.IFeed#stop()     */    public void stop()    {        if (running && client.isLoggedIn())        {            client.removeListener(clientListener);            try {                for (Iterator iter = subscribedSecurities.iterator(); iter.hasNext(); )                    cancelTickStream((Security)iter.next());            } catch(Exception e) {                log.error(e, e);            }                        streams.clear();            pendingStreams.clear();            running = false;        }    }    /* (non-Javadoc)     * @see net.sourceforge.eclipsetrader.core.IFeed#snapshot()     */    public void snapshot()    {        SimpleDateFormat usDateTimeParser = new SimpleDateFormat("MM/dd/yyyy h:mma");        SimpleDateFormat usDateParser = new SimpleDateFormat("MM/dd/yyyy");        SimpleDateFormat usTimeParser = new SimpleDateFormat("h:mma");        NumberFormat numberFormat = NumberFormat.getInstance(Locale.US);        // Builds the url for quotes download        StringBuffer url = new StringBuffer("http://quote.yahoo.com/download/javasoft.beans?symbols=");        for (Iterator iter = subscribedSecurities.iterator(); iter.hasNext();)        {            Security security = (Security)iter.next();            url = url.append(security.getCode() + "+");        }        if (url.charAt(url.length() - 1) == '+')            url.deleteCharAt(url.length() - 1);        url.append("&format=sl1d1t1c1ohgvbap");        // Read the last prices        String line = "";        try        {            HttpClient client = new HttpClient();            client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);            IPreferenceStore store = CorePlugin.getDefault().getPreferenceStore();            if (store.getBoolean(CorePlugin.PREFS_ENABLE_HTTP_PROXY))            {                client.getHostConfiguration().setProxy(store.getString(CorePlugin.PREFS_PROXY_HOST_ADDRESS), store.getInt(CorePlugin.PREFS_PROXY_PORT_ADDRESS));                if (store.getBoolean(CorePlugin.PREFS_ENABLE_PROXY_AUTHENTICATION))                    client.getState().setProxyCredentials(AuthScope.ANY, new UsernamePasswordCredentials(store.getString(CorePlugin.PREFS_PROXY_USER), store.getString(CorePlugin.PREFS_PROXY_PASSWORD)));            }            HttpMethod method = new GetMethod(url.toString());            method.setFollowRedirects(true);            client.executeMethod(method);            BufferedReader in = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream()));            while ((line = in.readLine()) != null)            {                String[] item = line.split(",");                if (line.indexOf(";") != -1)                    item = line.split(";");                Double open = null, high = null, low = null, close = null;                Quote quote = new Quote();                // 2 = Date                // 3 = Time                try                {                    GregorianCalendar c = new GregorianCalendar(TimeZone.getTimeZone("EST"), Locale.US);                    usDateTimeParser.setTimeZone(c.getTimeZone());                    usDateParser.setTimeZone(c.getTimeZone());                    usTimeParser.setTimeZone(c.getTimeZone());                    String date = stripQuotes(item[2]);                    if (date.indexOf("N/A") != -1)                        date = usDateParser.format(Calendar.getInstance().getTime());                    String time = stripQuotes(item[3]);                    if (time.indexOf("N/A") != -1)                        time = usTimeParser.format(Calendar.getInstance().getTime());                    c.setTime(usDateTimeParser.parse(date + " " + time));                    c.setTimeZone(TimeZone.getDefault());                    quote.setDate(c.getTime());                }                catch (Exception e)                {                    System.out.println(e.getMessage() + ": " + line);                }                // 1 = Last price or N/A                if (item[1].equalsIgnoreCase("N/A") == false)                    quote.setLast(numberFormat.parse(item[1]).doubleValue());                // 4 = Change                // 5 = Open                if (item[5].equalsIgnoreCase("N/A") == false)                    open = new Double(numberFormat.parse(item[5]).doubleValue());                // 6 = Maximum                if (item[6].equalsIgnoreCase("N/A") == false)                    high = new Double(numberFormat.parse(item[6]).doubleValue());                // 7 = Minimum                if (item[7].equalsIgnoreCase("N/A") == false)                    low = new Double(numberFormat.parse(item[7]).doubleValue());                // 8 = Volume                if (item[8].equalsIgnoreCase("N/A") == false)                    quote.setVolume(numberFormat.parse(item[8]).intValue());                // 9 = Bid Price                if (item[9].equalsIgnoreCase("N/A") == false)                    quote.setBid(numberFormat.parse(item[9]).doubleValue());                // 10 = Ask Price                if (item[10].equalsIgnoreCase("N/A") == false)                    quote.setAsk(numberFormat.parse(item[10]).doubleValue());                // 11 = Close Price                if (item[11].equalsIgnoreCase("N/A") == false)                    close = new Double(numberFormat.parse(item[11]).doubleValue());                // 0 = Code                String symbol = stripQuotes(item[0]);                for (Iterator iter = subscribedSecurities.iterator(); iter.hasNext();)                {                    Security security = (Security) iter.next();                    if (symbol.equalsIgnoreCase(security.getCode()))                        security.setQuote(quote, open, high, low, close);                }            }            in.close();        }        catch (Exception e)        {            System.out.println(e.getMessage() + ": " + line);            e.printStackTrace();        }    }    private String stripQuotes(String s)    {        if (s.startsWith("\""))            s = s.substring(1);        if (s.endsWith("\""))            s = s.substring(0, s.length() - 1);        return s;    }        void requestTickStream(Security security) throws OTException    {        if (!client.isLoggedIn())            pendingStreams.add(security);        else        {            String symbol = security.getQuoteFeed().getSymbol();            if (symbol == null || symbol.length() == 0)                symbol = security.getCode();            String exchange = security.getQuoteFeed().getExchange();            if (exchange == null || exchange.length() == 0)                exchange = "Q";            int id = client.requestEquityInit(new OTDataEntity(exchange, symbol));            streams.put(String.valueOf(id), security);            log.debug(String.valueOf(id) + " / Request Equity Init " + security);            id = client.requestTodaysOHL(new OTDataEntity(exchange, symbol));            streams.put(String.valueOf(id), security);            log.debug(String.valueOf(id) + " / Request Today's OHL " + security);                        id = client.requestTickStream(new OTDataEntity(exchange, symbol), OTConstants.OT_TICK_TYPE_LEVEL1);            streams.put(String.valueOf(id), security);            log.debug(String.valueOf(id) + " / Request Tick stream " + security);        }    }    public void cancelTickStream(Security security) throws OTException    {        String[] keys = (String[])streams.keySet().toArray(new String[0]);        for (int i = 0; i < keys.length; i++)        {            if (security.equals(streams.get(keys[i])))            {                client.cancelTickStream(Integer.parseInt(keys[i]));                streams.remove(keys[i]);                log.debug(String.valueOf(keys[i]) + " / Request cancel Tick stream " + security);            }        }        pendingStreams.remove(security);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -