2025-04-28 21:58:30 +08:00

183 lines
5.4 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

------------------------------------------------------------
-- 程序化交易函数
-- 由脚本引擎预先定义如果有性能问题可用C++改写
-- @author zhangjin
-- @since 2012-10-18
-----------------------------------------------------------
function c_order()
local history = FormulaDataCacheDouble(0, 0);
local lastBasket = ''
function order(opType, chanel, addr, basket, timetag, formula)
if basket == nil then
basket = lastBasket
end
local ret = placeorder_c(opType, chanel, addr, basket, timetag, formula, history)
return ret
end
return order
end
function c_passorder()
local history = FormulaDataCacheDouble(0, 0);
--orderCode:basketName or stockID
function passorder(opType, orderType, accountid, orderCode, prType, price, volume, quickTrade, strategyName, userOrderId, timetag, formula)
--由于luabind的限制不能处理超过10个参数这里把accountid和strategyName合并在一起到了C++里再拆分
accidAndstrName = accountid.."#"..strategyName.."#"..tostring(quickTrade).."#"..userOrderId
local ret = passorder_c(opType, orderType, accidAndstrName, orderCode, prType, price, volume, timetag, formula, history)
return ret
end
return passorder
end
function passorder(
optype, ordertype, accountid, accounttype
, marketstock, pricetype, price, volume
, strategyname, quicktrade, remark
, timetag, formula
)
ptable = {
quicktrade = quicktrade
, strategyname = strategyname
, remark = remark
, barpos = timetag
}
return passorder2_c(
optype, ordertype, accountid, accounttype
, marketstock, pricetype, price, volume
, ptable, formula
)
end
function c_trade()
local history = FormulaDataCacheDouble(0, 0);
local tp = tradeparam()
function trade_c(param, address, timetag, formula)
if param then
tp = copyParam(param)
trade(param, 0, timetag, formula, history, address)
else
trade(tp, 1, timetag, formula, history, address)
end
end
return trade_c
end
function c_hedgestocktrade()
local history = FormulaDataCacheDouble(0, 0);
local tp = tradeparam()
function hedgestocktrade_c(param, address, timetag, formula)
if param then
tp = copyParam(param)
hedgestocktrade(param, 0, timetag, formula, history, address)
else
hedgestocktrade(tp, 1, timetag, formula, history, address)
end
end
return hedgestocktrade_c
end
function c_cancel()
local history = FormulaDataCacheDouble(0, 0)
function cancel_c(codeNumber, timetag)
cancel(codeNumber, history)
end
return cancel_c
end
function c_writeorder()
local history = FormulaDataCacheDouble(0, 0)
function writeorder_c(filepath, content, timetag, formula)
return writeorder(filepath, content, timetag, formula, history)
end
return writeorder_c
end
function positionadjust(positions, weight, channel)
local s = '35,'..channel..'\n'
for i = 0, positions:size() - 1, 1 do
local detail = positions:at(i)
local adjustedVol = detail.m_nVolume * weight
s = s..detail.m_strInstrumentID..'\t'..adjustedVol..'\n'
end
return s
end
function c_portfoliosell(type)
local history = FormulaDataCacheDouble(0, 0)
function portfoliosell_c(type, timetag, formula)
return portfoliosell(type, timetag, formula, history)
end
return portfoliosell_c
end
function c_portfoliobuy()
local history = FormulaDataCacheDouble(0, 0);
local lastBasket = ''
function portfoliobuy(opType, chanel, addr, basket, timetag, formula)
if basket == nil then
basket = lastBasket
end
return portfoliobuy_c(opType, chanel, addr, basket, timetag, formula, history)
end
return portfoliobuy
end
function algo_passorder(
optype, ordertype, accountid, accounttype
, marketstock, pricetype, price, volume
, strategyname, quicktrade, remark
, algoname
, timetag, formula
)
ptable = {
quicktrade = quicktrade
, strategyname = strategyname
, remark = remark
, barpos = timetag
, algoname = algoname
}
return algo_passorder_c(
optype, ordertype, accountid, accounttype
, marketstock, pricetype, price, volume
, ptable, formula
)
end
function cancel_task(taskID, accountID, accountType)
return cancel_task_c(taskID, accountID, accountType, timetag, formula)
end
function c_readsignal()
local container = FormulaCacheContainer()
function wrapper(filePath, stockCode, timetag, formula)
return readsignal_c(filePath, stockCode, container, timetag, formula)
end
return wrapper
end
function c_drawsignal()
local container = FormulaCacheContainer()
function wrapper(cond, signalType, drawPrice, timetag, formula)
return drawsignal_c(container, cond, signalType, drawPrice, timetag, formula)
end
return wrapper
end
function c_cmdprogress()
local container = FormulaCacheContainer()
function wrapper(cmdID, timetag, formula)
return cmdprogress_c(container, cmdID, timetag, formula)
end
return wrapper
end
function c_cmdstatus()
local container = FormulaCacheContainer()
function wrapper(cmdID, timetag, formula)
return cmdstatus_c(container, cmdID, timetag, formula)
end
return wrapper
end