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

📄 historyfeed.java

📁 EclipseTrader is a stock exchange analysis system, featuring shares pricing watch, intraday and hi
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        try {            while((System.currentTimeMillis() - adapter.started) < timeout && !adapter.isCompleted())                Thread.sleep(100);        } catch(Exception e) {            log.warn(e);        }                client.removeListener(adapter);                Collections.sort(security.getDividends(), new Comparator() {            public int compare(Object o1, Object o2)            {                return ((Dividend)o1).getDate().compareTo(((Dividend)o2).getDate());            }        });        Collections.sort(security.getSplits(), new Comparator() {            public int compare(Object o1, Object o2)            {                return ((Split)o1).getDate().compareTo(((Split)o2).getDate());            }        });                CorePlugin.getRepository().save(history);        CorePlugin.getRepository().save(security);    }    /**     * Client listener implementation specialized for daily data.     */    private class HistoryClientAdapter extends ClientAdapter    {        Security security;        History history;        List dividends;        List splits;        int historyStream;        int dividendsStream;        int splitsStream;        long started;        Set completedStreams = new HashSet();                public HistoryClientAdapter(Security security)        {            this.security = security;            history = security.getHistory();            dividends = security.getDividends();            splits = security.getSplits();        }                public boolean isCompleted()        {            if (historyStream != 0 && !completedStreams.contains(String.valueOf(historyStream)))                return false;            if (dividendsStream != 0 && !completedStreams.contains(String.valueOf(dividendsStream)))                return false;            if (splitsStream != 0 && !completedStreams.contains(String.valueOf(splitsStream)))                return false;            return true;        }        public void onHistOHLC(OTOHLC msg)        {            Calendar date = Calendar.getInstance();            date.setTimeInMillis((long)msg.getTimestamp() * 1000);            date.set(Calendar.HOUR, 0);            date.set(Calendar.MINUTE, 0);            date.set(Calendar.SECOND, 0);            date.set(Calendar.MILLISECOND, 0);            Bar current = new Bar();            current.setDate(date.getTime());            current.setOpen(msg.getOpenPrice());            current.setHigh(msg.getHighPrice());            current.setLow(msg.getLowPrice());            current.setClose(msg.getClosePrice());            current.setVolume(msg.getVolume());            Bar last = history.getLast();            if (last == null || !last.getDate().equals(current.getDate()))                history.add(current);            started = System.currentTimeMillis();        }        public void onDividend(OTDividend msg)        {            if (msg.getPrice() != 0)            {                Calendar date = Calendar.getInstance();                Dividend current = new Dividend();                date.setTimeInMillis((long)msg.getPaymentDate() * 1000);                date.set(Calendar.HOUR, 0);                date.set(Calendar.MINUTE, 0);                date.set(Calendar.SECOND, 0);                date.set(Calendar.MILLISECOND, 0);                date.add(Calendar.DATE, 1);                while(date.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || date.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)                    date.add(Calendar.DATE, 1);                current.setDate(date.getTime());                current.setValue(msg.getPrice());                                if (dividends.size() != 0)                {                    Dividend last = (Dividend)dividends.get(dividends.size() - 1);                    if (last.getDate().equals(current.getDate()))                        dividends.set(dividends.size() - 1, current);                    else                        dividends.add(current);                }                else                    dividends.add(current);            }            started = System.currentTimeMillis();        }        public void onSplit(OTSplit msg)        {            Calendar date = Calendar.getInstance();            Split current = new Split();            date.setTimeInMillis((long)msg.getPaymentDate() * 1000);            date.set(Calendar.HOUR, 0);            date.set(Calendar.MINUTE, 0);            date.set(Calendar.SECOND, 0);            date.set(Calendar.MILLISECOND, 0);            date.add(Calendar.DATE, 1);            while(date.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || date.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)                date.add(Calendar.DATE, 1);            current.setDate(date.getTime());            current.setFromQuantity(msg.getToFactor());            current.setToQuantity(msg.getForFactor());                        if (splits.size() != 0)            {                Split last = (Split)splits.get(splits.size() - 1);                if (last.getDate().equals(current.getDate()))                    splits.set(splits.size() - 1, current);                else                    splits.add(current);            }            else                splits.add(current);            started = System.currentTimeMillis();        }                public void onError(OTError msg)        {            completedStreams.add(String.valueOf(msg.getRequestId()));            log.debug(String.valueOf(msg.getRequestId()) + " / Error: " + msg.getDescription());        }                public void onMessage(OTMessage msg)        {            completedStreams.add(String.valueOf(msg.getRequestID()));            log.debug(String.valueOf(msg.getRequestID()) + " / " + msg.getDescription());        }    }        /**     * Client listener implementation specialized for backfilling intraday data.     */    private class BackfillClientAdapter extends ClientAdapter    {        Security security;        History history;        int historyStream;        long started;        Set completedStreams = new HashSet();                public BackfillClientAdapter(Security security)        {            this.security = security;            history = security.getIntradayHistory();        }                public boolean isCompleted()        {            if (historyStream != 0 && !completedStreams.contains(String.valueOf(historyStream)))                return false;            return true;        }        public void onHistOHLC(OTOHLC msg)        {            Calendar date = Calendar.getInstance();            date.setTimeInMillis((long)msg.getTimestamp() * 1000);            date.set(Calendar.SECOND, 0);            date.set(Calendar.MILLISECOND, 0);            Bar current = new Bar();            current.setDate(date.getTime());            current.setOpen(msg.getOpenPrice());            current.setHigh(msg.getHighPrice());            current.setLow(msg.getLowPrice());            current.setClose(msg.getClosePrice());            current.setVolume(msg.getVolume());            Bar last = history.getLast();            if (last == null || !last.getDate().equals(current.getDate()))                history.add(current);            started = System.currentTimeMillis();        }                public void onError(OTError msg)        {            completedStreams.add(String.valueOf(msg.getRequestId()));            log.debug(String.valueOf(msg.getRequestId()) + " / Error: " + msg.getDescription());        }                public void onMessage(OTMessage msg)        {            completedStreams.add(String.valueOf(msg.getRequestID()));            log.debug(String.valueOf(msg.getRequestID()) + " / " + msg.getDescription());        }    }}

⌨️ 快捷键说明

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