'''backtest
start: 2019-02-20 00:00:00
end: 2020-01-10 00:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"BTC_USDT"},{"eid":"OKEX","currency":"ETH_USDT","stocks":30},{"eid":"OKEX","currency":"LTC_USDT","stocks":100}]'''
importtimeimportjson
params={"arrBasePrice": [-1, -1, -1], #-1
"arrRatio": [0.05, 0.05, 0.05], #0.05
"arrAcc": [], #_C(exchange.GetAccount)
"arrLastCancelAll": [0, 0, 0], #0
"arrMinStocks": [0.01, 0.01, 0.01], #0.01
"arrPricePrecision": [2, 2, 2], #2
"arrAmountPrecision": [3, 2, 2], #2
"arrTick":[]
}defCancelAll(e):whileTrue :
orders=_C(e.GetOrders)for i inrange(len(orders)) :
e.CancelOrder(orders[i]["Id"], orders[i])if len(orders) ==0 :breakSleep(1000)defprocess(e, index):globalparams
ticker=_C(e.GetTicker)
params["arrTick"][index] =tickerif params["arrBasePrice"][index] == -1:
params["arrBasePrice"][index] =ticker.Lastif ticker.Last - params["arrBasePrice"][index] > 0 and (ticker.Last - params["arrBasePrice"][index]) / params["arrBasePrice"][index] > params["arrRatio"][index]:
params["arrAcc"][index] =_C(e.GetAccount)if params["arrAcc"][index].Balance * params["arrRatio"][index] / ticker.Last > params["arrMinStocks"][index]:
e.Buy(ticker.Last, params["arrAcc"][index].Balance * params["arrRatio"][index] /ticker.Last)
params["arrBasePrice"][index] =ticker.Lastif ticker.Last - params["arrBasePrice"][index] < 0 and (params["arrBasePrice"][index] - ticker.Last) / params["arrBasePrice"][index] > params["arrRatio"][index]:
params["arrAcc"][index] =_C(e.GetAccount)if params["arrAcc"][index].Stocks * params["arrRatio"][index] > params["arrMinStocks"][index]:
e.Sell(ticker.Last, params["arrAcc"][index].Stocks * params["arrRatio"][index])
params["arrBasePrice"][index] =ticker.Last
ts=time.time()if ts - params["arrLastCancelAll"][index] > 60 * 5:
CancelAll(e)
params["arrLastCancelAll"][index] =tsdefmain():globalparamsfor i inrange(len(exchanges)) :
params["arrAcc"].append(_C(exchanges[i].GetAccount))
params["arrTick"].append(_C(exchanges[i].GetTicker))
exchanges[i].SetPrecision(params["arrPricePrecision"][i], params["arrAmountPrecision"][i])for key inparams :if len(params[key])
whileTrue:
tblAcc={"type" : "table","title": "account","cols": ["账户信息"],"rows": []
}
tblTick={"type" : "table","title": "ticker","cols": ["行情信息"],"rows": []
}for i inrange(len(exchanges)):
process(exchanges[i], i)for i inrange(len(exchanges)):
tblAcc["rows"].append([json.dumps(params["arrAcc"][i])])
tblTick["rows"].append([json.dumps(params["arrTick"][i])])
LogStatus(_D(),"\n`" + json.dumps([tblAcc, tblTick]) + "`")
Sleep(500)