Exemple #1
0
def realtime_pool(findLastDays=7, isOpenLog=False):

    # 初始化algotrading的repo
    rat = repoForAT("algotrading", "12345678", None, isOpenLog=isOpenLog)

    # 初始化pool
    poolDataMarketGetter = marketDataGetter(isOpenLog=isOpenLog)
    poolDataRepoGetter = repo(isSqlite=False,
                              isMysql=True,
                              file_path="",
                              user="******",
                              password="******",
                              ip=None,
                              isOpenLog=isOpenLog)
    poolRecordSaver = tradingRecordSaver("algotrading",
                                         "12345678",
                                         None,
                                         isOpenLog=isOpenLog)
    poolRealTime = poolFromSinaApi(poolDataMarketGetter,
                                   True,
                                   poolRecordSaver,
                                   isOpenLog=isOpenLog)
    poolHistory = poolFromSinaApi(poolDataRepoGetter,
                                  False,
                                  poolRecordSaver,
                                  isOpenLog=isOpenLog)

    # 初始化quantAnalysisDict
    repoForQuantAnalysis = repo(isSqlite=False,
                                isMysql=True,
                                file_path="",
                                user="******",
                                password="******",
                                ip=None,
                                isOpenLog=isOpenLog)
    quantAnalysisDict = {}
    quantAnalysisDict[clientOrder.TWAP] = TWAPQuantAnalysis(
        isOpenLog=isOpenLog)
    quantAnalysisDict[clientOrder.VWAP] = VWAPQuantAnalysis(
        repoForQuantAnalysis, isOpenLog=isOpenLog)
    quantAnalysisDict[clientOrder.LINEARVWAP] = LinearVWAPQuantAnalysis(
        repoForQuantAnalysis, isOpenLog=isOpenLog)

    algoTradingEngine = algoTrading(rat,
                                    poolRealTime,
                                    quantAnalysisDict,
                                    findLastDays,
                                    isOpenLog=isOpenLog)

    log.info("init succ")

    index = 0
    while (1):
        algoTradingEngine.set_time(datetime.datetime.now())
        startTime = startTime + datetime.timedelta(minutes=1)
        algoTradingEngine.init_orders()
        algoTradingEngine.refresh()
        algoTradingEngine.trade_request()
        algoTradingEngine.complete_orders()
        index = index + 1
        if index % 60 == 0:
            log.info("now time:" + str(startTime))
def test_history_pool():

    # 初始化algotrading的repo
    rat = repoForAT("algotrading", "12345678", None, isOpenLog=False)

    # 初始化pool
    poolDataMarketGetter = marketDataGetter(isOpenLog=False)
    poolDataRepoGetter = repo(isSqlite=False,
                              isMysql=True,
                              file_path="",
                              user="******",
                              password="******",
                              ip=None,
                              isOpenLog=False)
    poolRecordSaver = tradingRecordSaver("algotrading",
                                         "12345678",
                                         None,
                                         isOpenLog=False)
    poolRealTime = poolFromSinaApi(poolDataMarketGetter,
                                   True,
                                   poolRecordSaver,
                                   isOpenLog=False)
    poolHistory = poolFromSinaApi(poolDataRepoGetter,
                                  False,
                                  poolRecordSaver,
                                  isOpenLog=False)

    # 初始化quantAnalysisDict
    repoForQuantAnalysis = repo(isSqlite=False,
                                isMysql=True,
                                file_path="",
                                user="******",
                                password="******",
                                ip=None,
                                isOpenLog=False)
    quantAnalysisDict = {}
    quantAnalysisDict[clientOrder.TWAP] = TWAPQuantAnalysis(isOpenLog=False)
    quantAnalysisDict[clientOrder.VWAP] = VWAPQuantAnalysis(
        repoForQuantAnalysis, isOpenLog=False)
    quantAnalysisDict[clientOrder.LINEARVWAP] = LinearVWAPQuantAnalysis(
        repoForQuantAnalysis, isOpenLog=False)

    findLastDays = 7
    algoTradingEngine = algoTrading(rat,
                                    poolHistory,
                                    quantAnalysisDict,
                                    findLastDays,
                                    isOpenLog=False)

    log.info("init succ")

    order1 = clientOrder()
    stockId = 601377
    startTime = datetime.datetime(2016, 12, 23, 10, 00)
    endTime = datetime.datetime(2016, 12, 23, 14, 00)
    stockAmount = 10000
    buysell = 0
    algChoice = 1
    processId = 1
    tradingType = 1
    order1.create_order(stockId, startTime, endTime, stockAmount, buysell,
                        algChoice, processId, tradingType)
    rat.insert_order(order1)

    order2 = clientOrder()
    buysell = 1
    algChoice = 2
    stockAmount = 1000
    startTime = datetime.datetime(2016, 12, 22, 8, 00)
    endTime = datetime.datetime(2016, 12, 23, 19, 00)
    order2.create_order(stockId, startTime, endTime, stockAmount, buysell,
                        algChoice, processId, tradingType)
    rat.insert_order(order2)

    order3 = clientOrder()
    buysell = 0
    algChoice = 0
    stockAmount = 1000000
    startTime = datetime.datetime(2016, 12, 22, 10, 00)
    endTime = datetime.datetime(2016, 12, 22, 10, 10)
    order3.create_order(stockId, startTime, endTime, stockAmount, buysell,
                        algChoice, processId, tradingType)
    rat.insert_order(order3)

    startTime = datetime.datetime(2016, 12, 22, 8, 00)
    index = 0
    while (startTime < datetime.datetime(2016, 12, 23, 22)):
        algoTradingEngine.set_time(startTime)
        startTime = startTime + datetime.timedelta(minutes=1)
        algoTradingEngine.init_orders()
        algoTradingEngine.refresh()
        algoTradingEngine.trade_request()
        algoTradingEngine.complete_orders()
        index = index + 1
        if index % 60 == 0:
            log.info("now time:" + str(startTime))
# ==============================================================================
# Filename: MarketDataUnitTest.py
# Author: Xiaofu Huang
# E-mail: [email protected]
# Last modified: 2016-11-06 12:45
# Description: marketdata 单元测试
# ==============================================================================
import datetime
from MarketData import MarketData
import sys
sys.path.append("../fetch_data/")
from repo import repo
from marketDataGetter import marketDataGetter

if __name__ == '__main__':
    market = marketDataGetter()
    originArr = market.get_data(600000)
    marketData = MarketData(originArr)
    print marketData.sellPrice
    print marketData.sellAmount
    print marketData.buyPrice
    print marketData.buyAmount
    print marketData.time

    repoEngine = repo(isSqlite=False,
                      isMysql=True,
                      file_path="",
                      user="******",
                      password="******",
                      ip=None,
                      isOpenLog=False)