Package com.quantcomponents.algo.service

Source Code of com.quantcomponents.algo.service.StockDatabaseTradingManager

/*******************************************************************************
* Copyright (c) 2013 Luigi Sgro. 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:
*     Luigi Sgro - initial API and implementation
******************************************************************************/
package com.quantcomponents.algo.service;

import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger;

import com.quantcomponents.algo.ExecutionCreationException;
import com.quantcomponents.algo.ExecutionType;
import com.quantcomponents.algo.IManagedRunnable.RunningStatus;
import com.quantcomponents.algo.IStockDatabaseTradingManager;
import com.quantcomponents.algo.ITradingManager;
import com.quantcomponents.algo.TradingAgentBindingHandle;
import com.quantcomponents.algo.TradingAgentConfigurationHandle;
import com.quantcomponents.algo.TradingAgentExecutionHandle;
import com.quantcomponents.algo.TradingAgentFactoryHandle;
import com.quantcomponents.core.model.ISeries;
import com.quantcomponents.core.model.ISeriesPoint;
import com.quantcomponents.marketdata.IMarketDataManager;
import com.quantcomponents.marketdata.IOHLCTimeSeries;
import com.quantcomponents.marketdata.IStockDatabase;

public class StockDatabaseTradingManager implements IStockDatabaseTradingManager {
  @SuppressWarnings("unused")
  private static final Logger logger = Logger.getLogger(StockDatabaseTradingManager.class.getName());
  private final Map<TradingAgentBindingHandle, Map<String, IStockDatabase>> inputStockDbsByHandle = new ConcurrentHashMap<TradingAgentBindingHandle, Map<String, IStockDatabase>>();
  private volatile ITradingManager tradingManager;
  private volatile IMarketDataManager marketDataManager;

  public void deactivate() {
    inputStockDbsByHandle.clear();
  }
 
  public void setTradingManager(ITradingManager tradingManager) {
    this.tradingManager = tradingManager;
  }

  public void setMarketDataManager(IMarketDataManager marketDataManager) {
    this.marketDataManager = marketDataManager;
  }

  @SuppressWarnings("unchecked")
  @Override
  public TradingAgentBindingHandle createBinding(TradingAgentConfigurationHandle configurationHandle, Map<String, IStockDatabase> inputStockDatabases, String name) {
    Map<String, IOHLCTimeSeries> inputSeries = createInputSeriesFromStockDatabases(inputStockDatabases);
    TradingAgentBindingHandle bindingHandle = tradingManager.createBinding(configurationHandle, (Map<String, ? extends ISeries<Date, Double, ISeriesPoint<Date, Double>>>) inputSeries, name);
    inputStockDbsByHandle.put(bindingHandle, inputStockDatabases);
    return bindingHandle;
  }

  @Override
  public void removeBinding(TradingAgentBindingHandle bindingHandle) {
    inputStockDbsByHandle.remove(bindingHandle);
    tradingManager.removeBinding(bindingHandle);
  }

  @Override
  public Map<String, IStockDatabase> getBindingInputStockDatabases(TradingAgentBindingHandle bindingHandle) {
    Map<String, IStockDatabase> inputStockDatabases = inputStockDbsByHandle.get(bindingHandle);
    if (inputStockDatabases == null) {
      inputStockDatabases = new HashMap<String, IStockDatabase>();
      Map<String, ISeries<Date, Double, ISeriesPoint<Date, Double>>> inputSeries = tradingManager.getBindingInputSeries(bindingHandle);
      if (inputSeries != null) {
        for (Map.Entry<String, ISeries<Date, Double, ISeriesPoint<Date, Double>>> entry : inputSeries.entrySet()) {
          ISeries<Date, Double, ISeriesPoint<Date, Double>> input = entry.getValue();
          if (input != null) {
            IStockDatabase stockDatabase = marketDataManager.getStockDatabase(entry.getValue().getPersistentID());
            inputStockDatabases.put(entry.getKey(), stockDatabase);
          }
        }
      }
    }
    return inputStockDatabases;
  }
 
  private Map<String, IOHLCTimeSeries> createInputSeriesFromStockDatabases(Map<String, IStockDatabase> inputStockDatabase) {
    Map<String, IOHLCTimeSeries> inputSeries = new HashMap<String, IOHLCTimeSeries>();
    for (Map.Entry<String, IStockDatabase> entry : inputStockDatabase.entrySet()) {
      inputSeries.put(entry.getKey(), entry.getValue().getVirtualTimeSeries());
    }
    return inputSeries;
  }

  // ---------------- delegate methods ------------------
 
  @Override
  public String getPrettyName() {
    return tradingManager.getPrettyName();
  }
 
  @Override
  public Collection<TradingAgentFactoryHandle> getAllTradingAgentFactories() {
    return tradingManager.getAllTradingAgentFactories();
  }

  @Override
  public boolean isConfigurationValid(TradingAgentFactoryHandle factoryHandle, Properties configuration, Map<String, String> messages) {
    return tradingManager.isConfigurationValid(factoryHandle, configuration, messages);
  }
 
  @Override
  public TradingAgentConfigurationHandle createConfiguration(TradingAgentFactoryHandle factoryHandle, Properties configuration, String name) {
    return tradingManager.createConfiguration(factoryHandle, configuration, name);
  }

  @Override
  public Collection<TradingAgentConfigurationHandle> getChildren(TradingAgentFactoryHandle tradingAgentFactoryHandle) {
    return tradingManager.getChildren(tradingAgentFactoryHandle);
  }

  @Override
  public Properties getConfigurationProperties(TradingAgentConfigurationHandle tradingAgentConfigurationHandle) {
    return tradingManager.getConfigurationProperties(tradingAgentConfigurationHandle);
  }

  @Override
  public void removeConfiguration(TradingAgentConfigurationHandle tradingAgentConfigurationHandle) {
    tradingManager.removeConfiguration(tradingAgentConfigurationHandle);
  }

  @Override
  public TradingAgentFactoryHandle getParent(TradingAgentConfigurationHandle tradingAgentConfigurationHandle) {
    return tradingManager.getParent(tradingAgentConfigurationHandle);
  }

  @Override
  public boolean isExecutionTypeAvailable(ExecutionType type) {
    return tradingManager.isExecutionTypeAvailable(type);
  }

  @Override
  public TradingAgentExecutionHandle createExecution(TradingAgentBindingHandle bindingHandle, ExecutionType type) throws ExecutionCreationException {
    return tradingManager.createExecution(bindingHandle, type);
  }

  @Override
  public Collection<TradingAgentBindingHandle> getChildren(TradingAgentConfigurationHandle tradingAgentConfigurationHandle) {
    return tradingManager.getChildren(tradingAgentConfigurationHandle);
  }

  @Override
  public ISeries<Date, Double, ISeriesPoint<Date, Double>> getExecutionOutput(TradingAgentExecutionHandle executionHandle) {
    return tradingManager.getExecutionOutput(executionHandle);
  }

  @Override
  public void removeExecution(TradingAgentExecutionHandle executionHandle) {
    tradingManager.removeExecution(executionHandle);
  }

  @Override
  public TradingAgentConfigurationHandle getParent(TradingAgentBindingHandle tradingAgentBindingHandle) {
    return tradingManager.getParent(tradingAgentBindingHandle);
  }

  @Override
  public Collection<TradingAgentExecutionHandle> getChildren(TradingAgentBindingHandle tradingAgentBindingHandle) {
    return tradingManager.getChildren(tradingAgentBindingHandle);
  }

  @Override
  public TradingAgentBindingHandle getParent(TradingAgentExecutionHandle TradingAgentExecutionHandle) {
    return tradingManager.getParent(TradingAgentExecutionHandle);
  }

  @Override
  public void startExecution(TradingAgentExecutionHandle executionHandle) {
    tradingManager.startExecution(executionHandle);
  }

  @Override
  public void pauseExecution(TradingAgentExecutionHandle executionHandle) {
    tradingManager.pauseExecution(executionHandle);
  }

  @Override
  public void resumeExecution(TradingAgentExecutionHandle executionHandle) {
    tradingManager.resumeExecution(executionHandle);
  }

  @Override
  public void killExecution(TradingAgentExecutionHandle executionHandle) {
    tradingManager.killExecution(executionHandle);
  }

  @Override
  public RunningStatus getRunningStatus(TradingAgentExecutionHandle executionHandle) {
    return tradingManager.getRunningStatus(executionHandle);
  }

}
TOP

Related Classes of com.quantcomponents.algo.service.StockDatabaseTradingManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.