`
fushcpc
  • 浏览: 22879 次
社区版块
存档分类
最新评论

portfolio stock

    博客分类:
  • J2EE
 
阅读更多
package org.apache.activemq.book.ch2.portfolio;

import java.util.Hashtable;
import java.util.Map;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.Session;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQMapMessage;

public class Publisher {
	
    protected int MAX_DELTA_PERCENT = 1;
    protected Map<String, Double> LAST_PRICES = new Hashtable<String, Double>();
    protected static int count = 10;
    protected static int total;
    
    protected static String brokerURL = "tcp://localhost:61616";
    protected static transient ConnectionFactory factory;
    protected transient Connection connection;
    protected transient Session session;
    protected transient MessageProducer producer;
    
    public Publisher() throws JMSException {
    	factory = new ActiveMQConnectionFactory(brokerURL);
    	connection = factory.createConnection();
        connection.start();
        session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        producer = session.createProducer(null);
    }
    
    public void close() throws JMSException {
        if (connection != null) {
            connection.close();
        }
    }
    
    public static void main(String[] args) throws JMSException {
    	Publisher publisher = new Publisher();
        while (total < 1000) {
            for (int i = 0; i < count; i++) {
                publisher.sendMessage(args);
            }
            total += count;
            System.out.println("Published '" + count + "' of '" + total + "' price messages");
            try {
              Thread.sleep(1000);
            } catch (InterruptedException x) {
            }
          }
        publisher.close();
    }

    protected void sendMessage(String[] stocks) throws JMSException {
        int idx = 0;
        while (true) {
            idx = (int)Math.round(stocks.length * Math.random());
            if (idx < stocks.length) {
                break;
            }
        }
        String stock = stocks[idx];
        Destination destination = session.createTopic("STOCKS." + stock);
        Message message = createStockMessage(stock, session);
        System.out.println("Sending: " + ((ActiveMQMapMessage)message).getContentMap() + " on destination: " + destination);
        producer.send(destination, message);
    }

    protected Message createStockMessage(String stock, Session session) throws JMSException {
        Double value = LAST_PRICES.get(stock);
        if (value == null) {
            value = new Double(Math.random() * 100);
        }

        // lets mutate the value by some percentage
        double oldPrice = value.doubleValue();
        value = new Double(mutatePrice(oldPrice));
        LAST_PRICES.put(stock, value);
        double price = value.doubleValue();

        double offer = price * 1.001;

        boolean up = (price > oldPrice);

		MapMessage message = session.createMapMessage();
		message.setString("stock", stock);
		message.setDouble("price", price);
		message.setDouble("offer", offer);
		message.setBoolean("up", up);
		return message;
    }

    protected double mutatePrice(double price) {
        double percentChange = (2 * Math.random() * MAX_DELTA_PERCENT) - MAX_DELTA_PERCENT;

        return price * (100 + percentChange) / 100;
    }

}



package org.apache.activemq.book.ch2.portfolio;

import javax.jms.Connection;

public class Consumer {

    private static String brokerURL = "tcp://localhost:61616";
    private static transient ConnectionFactory factory;
    private transient Connection connection;
    private transient Session session;
    
    public Consumer() throws JMSException {
    	factory = new ActiveMQConnectionFactory(brokerURL);
    	connection = factory.createConnection();
        connection.start();
        session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    }
    
    public void close() throws JMSException {
        if (connection != null) {
            connection.close();
        }
    }    
    
    public static void main(String[] args) throws JMSException {
    	Consumer consumer = new Consumer();
    	for (String stock : args) {
    		Destination destination = consumer.getSession().createTopic("STOCKS." + stock);
    		MessageConsumer messageConsumer = consumer.getSession().createConsumer(destination);
    		messageConsumer.setMessageListener(new Listener());
    	}
    }
	
	public Session getSession() {
		return session;
	}

}



package org.apache.activemq.book.ch2.portfolio;

import java.text.DecimalFormat;

public class Listener implements MessageListener {

	public void onMessage(Message message) {
		try {
			MapMessage map = (MapMessage)message;
			String stock = map.getString("stock");
			double price = map.getDouble("price");
			double offer = map.getDouble("offer");
			boolean up = map.getBoolean("up");
			DecimalFormat df = new DecimalFormat( "#,###,###,##0.00" );
			System.out.println(stock + "\t" + df.format(price) + "\t" + df.format(offer) + "\t" + (up?"up":"down"));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

分享到:
评论

相关推荐

    a hybrid model for stock market forecasting and portfolio selection.pdf

    Huang, K. Y. , & Jane, C.... A hybrid model for stock market forecasting and portfolio selection based on ARX, grey system and RS theories. Expert Systems with Applications, 36 (3), 5387–5392 .

    pca for stock portfolio management.pdf

    In the p dimensional space formed by p asset returns, PCA finds the most important k directions that capture the most important variations in the given returns of p assets. Usually, k is less than p....

    stock-portfolio

    Node.js,Backbone,Gulp和Browserify Boilerplate应用程序。 该应用程序旨在成为使用Express和Backbone启动Node.js项目的样板。 要运行,只需运行“ npm install”和“ bower install”(用于引导程序依赖项),...

    股票买卖最佳时机leetcode-CS50-Finance-stock-portfolio-2020:C$50Finance,一个网络应用程序

    股票买卖最佳时机leetcode 50 加元金融(问题集 8 webtrack 2020) 描述: C$50 Finance,一个网络应用程序,您可以通过它管理股票投资组合。 该工具允许您检查真实股票、实际价格和投资组合价值,它还可以让您通过...

    stock_portfolio:股票投资组合工具

    stock_portfolio [FLAGS] [OPTIONS] --stocks FLAGS: -d, --desc Used with order by option to sort in descending order -h, --help Prints help information -g, --show-groupby Show quantities and ...

    stock-portfolio:跟踪股票投资组合表现的应用程序

    #Stock Portfolio 跟踪股票投资组合历史表现的应用程序

    Stock Portfolio-crx插件

    语言:English (United States) 实时跟踪多个投资组合。 您还将获得有关每种股票的深入信息。 股票行情,多个监视列表。 多股票投资组合股票投资组合旨在通过简单的漂亮界面从您喜欢的chrome浏览器中单击来跟踪多个...

    Data Driven Mean-CVaR Portfolio Optimization Model.pdf

    This paper studies the out-of-sample ...of the stock returns are regarded as the realized returns and used directly in the mean-CVaR portfolio optimization formulation. However, in practical portfo

    stock-portfolio-tracker

    投资组合股票投资组合跟踪器作为Web应用程序。 实时跟踪您的投资并查看其性能。 注册并登录您的帐户添加,编辑和删除您的库存查看您的投资组合表现演示版内置Python-核心程式设计语言Django-后端引导程序-前端...

    Stock-Portfolio-App

    股票投资组合应用 网络应用程序,允许用户检索美国股票价格并通过其累计价值跟踪股票投资组合 部署在: : 组合页面: : 视频演示功能(单​​击图片): 特征 用户可以通过简单地输入相关的代码来搜索他们选择的...

    JStock - 美国免费股票市场软件代码 Free Stock Market Software

    Java代码 JStock is a free stock market software for 26 countries. It provides Stock watchlist, Intraday stock price snapshot, Stock indicator editor, Stock indicator scanner and Portfolio management.

    BrokerTool_java.rar_brokerto_java源代码 RMI_portfolio_rmi

    名称:RMI BrokerTool ... 完整实现所有功能,包括stock 和 portfolio。 MVC范式,RMI带回调,客户端同步刷新。 内容:src文件夹 -- 所有源代码 server.bat -- 服务端 client.bat -- 客户端

    What-Hedge-Really-Funds-Do-An-Introduction-to-Portfolio-Management.pdf

    A real eye-opener to how readily available historical stock data is, and a very practical guide to maximizing gain and reducing risk in computational portfolio management.

    portfoliomanager:印度人的金融投资组合管理。 使用对公积金,Sukanya Samriddhi,共同基金,股票,限制性股票单位,员工股票购买计划的捐款来跟踪财务目标

    投资组合经理 意图 建立一个可以跟踪并提供有关个人或家庭财务利益的见解的投资组合经理 ... (venv) userid@host portfoliomanager % pip install -r requirements.txt 设定伺服器 (venv) userid@host por

    django-WEB-stock-portfolio-management:用Django构建并部署在Heroku上的股票投资组合管理系统

    股票投资组合应用一个股票投资组合应用程序,您可以在其中管理您的股票投资组合。 您可以通过iexcloud.io提供的集成API平台轻松搜索股票行情。 您可以根据自己的喜好轻松添加,编辑或删除股票行情。...

    portfolio-tracker:股票投资组合跟踪

    #Stock Porfolio-效果跟踪器 ##目标为用户的股票投资组合创建一个实用的性能跟踪器。 跟踪器将使用户能够登录,获取有关当前和潜在库存头寸的实时更新。 用户将能够输入股票报价器来获得当前的市场报价,以及使用户...

    stock_portfolio

    本地股票投资组合应用背景如今,对于股票投资者而言,您始终拥有来自多个经纪人的多个帐户。 出于不同原因而分离投资组合是有益的。 但是,您可能仍希望在中心位置查看完整投资的概况,以便可以获取投资的实时和历史...

    inVisement: Stock, Portfolio, Valuation-crx插件

    语言:English 明智地通过机器学习+金融进行投资 InVisement使用机器学习和资产定价学科为所有人提供对冲基金服务。 我们的使命是使过去只用于退款客户的对冲基金服务民主化。 您会发现股票的内在估值和公允价格,...

    Portfolio_Tracker

    Portfolio_Tracker 使用此代码所需的先决条件(1)在免费创建一个AlphaVantage帐户并请求一个API (2)构建一个包含所有销售/购买信息的电子表格(.csv): 电子表格的结构应如下所示: 日期| 数量_库存1 | Price_...

Global site tag (gtag.js) - Google Analytics