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

📄 patternssearchpage.java

📁 EclipseTrader is a stock exchange analysis system, featuring shares pricing watch, intraday and hi
💻 JAVA
字号:
/* * Copyright (c) 2004-2007 Marco Maccaferri and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: *     Marco Maccaferri - initial API and implementation */package net.sourceforge.eclipsetrader.trading.internal;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import net.sourceforge.eclipsetrader.core.CorePlugin;import net.sourceforge.eclipsetrader.core.IPattern;import net.sourceforge.eclipsetrader.core.Sentiment;import net.sourceforge.eclipsetrader.core.db.Bar;import net.sourceforge.eclipsetrader.core.db.BarData;import net.sourceforge.eclipsetrader.core.db.Security;import net.sourceforge.eclipsetrader.trading.views.IPatternSearchPage;import net.sourceforge.eclipsetrader.trading.views.PatternSearchItem;import org.eclipse.core.runtime.IConfigurationElement;import org.eclipse.core.runtime.IProgressMonitor;public abstract class PatternsSearchPage implements IPatternSearchPage{    protected List securities = new ArrayList();    protected int period;    protected boolean bullishOnly;    protected Date begin;    protected Date end;    protected boolean allOccurrences = false;    protected Map patterns = new HashMap();    protected List results = new ArrayList();    public PatternsSearchPage(int period, Date begin, Date end, boolean bullishOnly)    {        this.period = period;        this.bullishOnly = bullishOnly;        this.begin = begin;        this.end = end;                for (Iterator iter = CorePlugin.getAllPatternPlugins().iterator(); iter.hasNext(); )        {            IConfigurationElement element = (IConfigurationElement)iter.next();            IPattern plugin = CorePlugin.createPatternPlugin(element.getAttribute("id"));            patterns.put(element.getAttribute("name"), plugin);        }    }    public PatternsSearchPage(IPattern plugin, String name, int period, Date begin, Date end, boolean bullishOnly)    {        this.period = period;        this.bullishOnly = bullishOnly;        this.begin = begin;        this.end = end;                patterns.put(name, plugin);    }        public abstract String getDescription();        public abstract String getShortDescription();    public void run(IProgressMonitor monitor)    {        getResults().clear();                monitor.beginTask("Searching", securities.size());        for (Iterator iter = securities.iterator(); iter.hasNext(); )        {            Security security = (Security) iter.next();            BarData barData = new BarData(security.getHistory().getList(), begin, end);            if (period != BarData.INTERVAL_DAILY)                barData = barData.getCompressed(period);            Map lastComplete = new HashMap();                        for (Iterator p = patterns.keySet().iterator(); p.hasNext(); )            {                String name = (String) p.next();                IPattern pattern = (IPattern) patterns.get(name);                                pattern.init(security);                for (int i = 0; i < barData.size(); i++)                {                    pattern.add(barData.get(i));                    if (pattern.getSentiment().equals(Sentiment.BULLISH) || pattern.getSentiment().equals(Sentiment.BEARISH))                    {                        Bar complete = barData.get(i);                                                Date last = (Date)lastComplete.get(pattern);                        if (last == null || !last.equals(complete.getDate()))                        {                            PatternSearchItem item = new PatternSearchItem();                            item.setCode(security.getCode());                            item.setDescription(security.getDescription());                            item.setDate(complete.getDate());                            item.setPrice(complete.getClose());                            item.setPattern(name);                            item.setOpportunity(pattern.getSentiment().equals(Sentiment.BULLISH) ? "Bullish" : "Bearish");                            if (!allOccurrences)                            {                                PatternSearchItem[] items = (PatternSearchItem[])getResults().toArray(new PatternSearchItem[0]);                                for (int x = 0; x < items.length; x++)                                {                                    if (items[x].getCode().equals(item.getCode()) && items[x].getDescription().equals(item.getDescription()) && items[x].getPattern().equals(item.getPattern()))                                        getResults().remove(items[x]);                                }                            }                            getResults().add(item);                                                        lastComplete.put(pattern, complete.getDate());                        }                    }                }            }            monitor.worked(1);        }        monitor.done();    }    public List getResults()    {        return results;    }    public void setAllOccurrences(boolean allOccurrences)    {        this.allOccurrences = allOccurrences;    }}

⌨️ 快捷键说明

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