Skip to content

Latest commit

 

History

History
138 lines (115 loc) · 3.53 KB

Python API 测试.md

File metadata and controls

138 lines (115 loc) · 3.53 KB

策略名称

Python API 测试

策略作者

Zero

策略描述

Python API 测试

源码 (python)

import sys
import time
import talib
import json
import traceback
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d

def main():
    testGlobal = [
            'Version', ['Log', 'ok', 3.5, True], ['Sleep', 100], ['LogProfit', 10.5],
            'LogProfitReset', ['LogProfit', 10.8], 'GetCommand', 'LogReset', ['LogStatus', 'x', True], ['EnableLog', True], 
            ['SetErrorFilter', 'xxx'], 'GetPid', 'GetLastError', ['_G', 'x', 10], ['_G', 'x'], ['_G', 'x', None], '_G',
        ]
    g = globals()
    for item in testGlobal:
        if isinstance(item, list):
            ret = g[item[0]](*item[1:])
        else:
            ret = g[item]()
        Log('%s => %s' % (item, ret))
    testExchanges = [
            'GetName', 'GetUSDCNY', 'GetRate', ['SetRate', 1.0], 'GetAccount', 'GetCurrency', 'GetLabel', 'GetMinStock', 'GetMinPrice', 'GetFee',
            'GetRecords',
            ['Buy', 100, 0.1, "OK"],
            'GetOrders',
            ['GetOrder', 1],
            'GetAccount',
            'GetRawJSON',
            ['CancelOrder', 1],
            ['Buy', -1, 1000.0],
            'GetAccount',
            ['Sell', -1, 3],
            'GetAccount',
            ['Sell', 9999.9, 0.2, "OK"],
            'GetOrders',
            'GetAccount',
            ['CancelOrder', 2],
            ['Go', 'GetAccount'],
            ['IO', 'status'],
        ]
    for item in testExchanges:
        try:
            if isinstance(item, list):
                ret = getattr(exchange, item[0])(*item[1:])
            else:
                ret = getattr(exchange, item)()
        except:
            ret = traceback.format_exc()
        Log('exchange.%s => %s' % (item, ret))
    
    # test market order
    exchange.Buy(1000)
    exchange.Buy(-1, 200, "buy 200 RMB")
    exchange.Sell(exchange.GetAccount().Stocks)
    # test Go
    ret, ok = exchange.Go("GetTicker").wait()
    if ok:
        Log("Go GetTicker", ret)
    Log("EMA", len(TA.EMA(exchange.GetRecords())))
    Log("EMA H1", len(TA.EMA(exchange.GetRecords(PERIOD_H1))))
    

    # test plot image
    plt.plot([3,6,2,4,7,1])
    Log('支持直接打印plt图片 ', plt)
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
    t = ax.scatter(np.random.rand(20), np.random.rand(20))
    Log(fig)
    
    x = np.linspace(0, 10, 1000)
    y = np.sin(x)
    z = np.cos(x**2)

    plt.figure(figsize=(8,4))
    plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)
    plt.plot(x,z,"b--",label="$cos(x^2)$")
    plt.xlabel("Time(s)")
    plt.ylabel("Volt")
    plt.title("PyPlot Example")
    plt.ylim(-1.2,1.2)
    plt.legend()
    Log(plt)

    x,y=np.mgrid[-2:2:20j,-2:2:20j]
    z=x*np.exp(-x**2-y**2)
    ax=plt.subplot(111,projection='3d')
    ax.plot_surface(x,y,z,rstride=2,cstride=1,cmap=plt.cm.coolwarm,alpha=0.8)
    ax.set_xlabel('x')
    ax.set_ylabel('y')
    ax.set_zlabel('z')
    # plot image to status bar
    LogStatus(plt)
    
    # test plot chart
    x = Chart({
        'title' : { 'text' : 'test chart'},
        'xAxis': { 'type': 'datetime'},
        'series' : [{'name' : 'Buy', 'data' : []}, {'name' : 'Sell', 'data' : []}]
        })
    x.reset()
    for i in range(100):
        ts = int(time.time() * 1000)
        ticker = _C(exchange.GetTicker)
        x.add(0, [ts, ticker.Buy])
        x.add(1, [ts, ticker.Sell])
        Sleep(10000)

策略出处

https://www.fmz.com/strategy/21365

更新时间

2016-12-18 18:00:34