E2L 语言 API
账户信息
- FAccountBalance
返回账号可用金额.
函数原型
FAccountBalance();
说明
- 参数:无.
- 返回值: 当前 fix session 的账户金额
示例:
balance = FAccountBalance();
echo(balance);
- FAccountMargin
返回账户的当前订单的保证金.
函数原型
FAccountMargin();
说明
- 参数:无.
- 返回值: 当前 fix session 的当前订单的保证金
示例:
margin = FAccountMargin();
echo(margin);
- FAccountProfit
返回账户的收益值.
函数原型
FAccountProfit();
说明
- 参数:无.
- 返回值: 当前 fix session 的当前订单的收益值
示例:
profit = FAccountProfit();
echo(profit);
- FAccountEquity
返回账户的资产净值.
函数原型
FAccountEquity();
说明
- 参数:无.
- 返回值: 当前 fix session 的当前资产净值
示例:
equity = FAccountEquity();
echo(equity);
- FThreadPosition
返回账户通过多线程分配仓位测试策略.
函数原型
FThreadPosition(thread_number, postion);
说明
- 参数:thread_number 数值.
- postion 仓位数值
- 返回值: 当前 fix session 的当前资产净值
示例:
# 设置各个线的仓位
## 平分不同的线程
all = 100;
# 线程数量
thread_num = 3;
pos = all / thread_num;
# 取整数 fpos = 33.0;
fpos = FFloor(pos);
for (a=0;a<thread_num;a++) {
FThreadPosition(a, fpos);
}
初始化函数
- FIsInit
返回 状态结果: UInitOk 结构.
函数原型
FIsInit();
说明
- 参数:无.
- 返回值: 返回结构 UInitOk 代表当前的状态
结构体 UInitOk
union UInitOk {
# 策略可以进入分析
I_OK = 1;
# 策略初始化中
I_Proc = 0;
}
示例:
isInit = FIsInit();
if (isInit == UInitOk.I_Proc) {
config();
}
- FFix
设置 fix 配置.
函数原型
FFix(path);
说明
- 参数:path 配置路径.
- 返回值: 无.
示例:
scfg="/opt/e2q/cfg/executor.cfg";
FFix(scfg);
- FMkType
设置 kfaka 数据格式.
函数原型
FMkType(tick_bar);
说明
- 参数:tick_bar UMKType 结构体.
- 返回值: 无.
结构体 UMKType
union UMKType {
Mk_Csv = 0;
Mk_Kafka = 1;
Mk_Tick = 2;
Mk_Bar = 3;
}
示例:
FMkType(UMKType.Mk_Bar);
- FMkkf
设置 kfaka brokers.
函数原型
FMkkf(source);
说明
- 参数:source brokers 的字符串.
- 返回值: 无.
示例:
sbroker="kafkaserver:9092";
FMkkf(_sbroker);
- FTopicTick
设置 kfaka topic 主要是报价使用.
函数原型
FTopicTick(topic);
说明
- 参数:topic 字符串.
- 返回值: 无.
示例:
topic="fix-events";
FTopicTick(topic);
- FTopicLog
设置 kfaka topic 主要是 LOG 使用.
函数原型
FTopicLog(topic);
说明
- 参数:topic 字符串.
- 返回值: 无.
示例:
topic="e2l-log";
FTopicLog(topic);
- FTFrame
设置报价周期,可以设置多个,但不能低过 kafka 过来价格的周期. 比如 kafka 的报价如果是 5 分钟的话,就不能设置 1 分钟的周期,只能大于等于 5 分钟周期 在初始化的时候使用 FIsInit 状态等于 UInitOk.I_Proc
函数原型
FTFrame(frame);
说明
- 参数:frame 是 UTimeFrames 结构体.
- 返回值: 无.
结构体 UTimeFrames
union UTimeFrames {
Period_Current = 0;
Period_D1 = 1440;
Period_H1 = 60;
Period_H4 = 240;
Period_M = 5;
Period_M1 = 1;
Period_M15 = 15;
Period_M30 = 30;
Period_MN1 = 43200;
Period_W1 = 10080;
}
示例:
# FIsInit 状态等于 UInitOk.I_Proc
tframe = UTimeFrames.Period_D1 ;
FTFrame(tframe);
# FIsInit 状态等于 UInitOk.I_OK
code = CfiCode() ;
## 如果有多个周期,可以在这儿一起取得
timeframe = UTimeFrames.Period_D1 ;
fclose = FClose(code, timeframe, 0);
# 打印价格,精度为 3 位小数点
deci = 3;
FPrintDeci(fclose, deci);
- FDefTFrame
返回 当前默认的周期值
函数原型
FDefTFrame();
说明
- 参数:无.
- 返回值: 返回 UTimeFrames 结构体.
示例:
tf = FDefTFrame();
- FTFrameLength
返回当前一共设置了多少个周期
函数原型
FTFrameLength();
说明
- 参数:无.
- 返回值: 返回数值.
示例:
size = FTFrameLength();
- FGetTFrame
返回索引中的某一个周期值
函数原型
FGetTFrame();
说明
- 参数:数值.
- 返回值: 返回 UTimeFrames 结构体.
示例:
size = FTFrameLength();
idx = size - 1;
tf = FGetTFrame(idx);
- FIndex
报价是不是以 index 为准.
函数原型
FIndex();
说明
- 参数:无.
- 返回值: 返回 UOffers 结构体.
结构体 UOffers
union UOffers {
# 对齐 index 指数报价时间
OF_Index = 0;
# 每一笔 ticket 都报价一次
OF_Tick = 1;
}
示例:
isIndex = FIndex();
- FOffers
报价对齐方式.
函数原型
FOffers(tick);
说明
- 参数: tick 是 UOffers 结构体.
- 返回值:无.
示例:
FOffers(UOffers.OF_Index);
- FOfferTime
设置每笔报价时间间隔, 不低于 50 豪秒.
函数原型
FOfferTime(time);
说明
- 参数: time 整数.
- 返回值:无.
示例:
time = 100;
FOfferTime(time);
- FCommission
设置佣金 及 币种.
函数原型
FCommission(cms, ccy);
说明
- 参数: cms 数值, ccy字符串.
- 返回值:无.
示例:
# 0.01
_ncms = 100;
_sccy="rmb";
FCommission(_ncms, hccy);
- FQuantId
设置策略ID.
函数原型
FQuantId(qid);
说明
- 参数: qid 自定义的一个数值.
- 返回值:无.
示例:
qid = 102;
FQuantId(qid);
- FGenerateQuantId
自动生成策略ID.
函数原型
FGenerateQuantId();
说明
- 参数: 无.
- 返回值: 无.
示例:
FGenerateQuantId();
- FCurrentQuantId
返回当前策略ID.
函数原型
FCurrentQuantId();
说明
- 参数: 无.
- 返回值: 策略ID 数值.
示例:
qid= FCurrentQuantId();
- FQuantVersion
设置当前策略版本号.
函数原型
FQuantVersion(version);
说明
- 参数: version 字符串.
- 返回值: 无.
示例:
version = "1.3.12";
FQuantVersion(version);
- FVersionId
返回当前策略版本号id.
函数原型
FVersionId();
说明
- 参数: 无.
- 返回值: ID 数值.
示例:
vid = FVersionId();
- LastVerId
返回最近一个版本 id.
函数原型
LastVerId();
说明
- 参数: 无.
- 返回值: ID 数值.
示例:
last_id = LastVerId();
- FTradeTime
设置交易时间.
函数原型
FTradeTime(open_hour,open_minute,close_hour,close_minute);
说明
- 参数: open_hour,open_minute,close_hour,close_minute 数值
- 返回值: 无.
示例:
#----------
# sz sh
# '上午 09:30——11:30'
# '下午 13:00——15:00'
#
#----------
FTradeTime(9,30,11,30);
FTradeTime(13,0,15,0);
# BTC
# 24 小时 交易的多周期时间
#
FTradeTime(0,0,23,59);
- FTradeMode
设置交易模式.
函数原型
FTradeMode(mode);
说明
- 参数: mode 是 USymbolTradeMode 结构体
- 返回值: 无.
结构体 USymbolTradeMode
union USymbolTradeMode {
#该符号的交易已禁用
M_Disabled = 0;
#仅允许多头仓位
M_LongOnly = 1;
#仅允许空头仓位
M_ShortOnly = 2;
#仅允许平仓操作
M_CloseOnly = 3;
#无贸易限制
M_Full = 4;
}
示例:
#--------------------
# 做多做空
#--------------------
FTradeMode(USymbolTradeMode.M_LongOnly);
- FGmt
设置交易时间为 GMT.
函数原型
FGmt();
说明
- 参数: 无.
- 返回值: 无.
示例:
FGmt();
- FLotAndShare
设置每一手是多少份股票
函数原型
FLotAndShare(lot);
说明
- 参数: lot 数值.
- 返回值: 无.
示例:
# https://api.huobi.pro/v1/settings/common/market-symbols?symbols=btcusdt
# "minoa": 0.0001
# 0.0001;
lot = 1;
FLotAndShare(lot);
- FCurrentLS
返回每一手是多少份股票
函数原型
FCurrentLS();
说明
- 参数: 无.
- 返回值: 返回 lot 数值.
示例:
lot = FLotAndShare(lot);
- FWhois
返回当前是哪一个属性
函数原型
FWhois();
说明
- 参数: 无.
- 返回值: 返回 UOMSRisk 结构体.
结构体 USymbolTradeMode
union UOMSRisk{
# OMS 是柜台撮合中心
I_OMS = 0;
# 代理商
I_BROKER = 1;
# 策略者
I_EA = 2;
}
示例:
me = FWhois();
if(me == UOMSRisk.I_OMS){
echo(me);
}
- FConfigShow
打印当前的配置信息
函数原型
FConfigShow();
说明
- 参数: 无.
- 返回值: 无.
示例:
FConfigShow();
+---------------------------------------------------+
|name |value |
+---------------------------------------------------+
|fix cfg |/opt/e2q/cfg/executor.cfg |
|kafka |kafkaserver:9092 |
|csv_kafka |1 |
|topic |fix-events |
|trade time |09:30 - 11:30 |
|ccy |rmb |
|commission |0 |
|trade mode |1 |
|lot and share |100.00000 |
|Settlement |1 |
|SettlInst |2 |
|MatchEventInit |0 |
|BrokerBook |1 |
|SymbolOnlyForEA|1 |
|version |1.3.3 |
+---------------------------------------------------+
交易函数
- FOrderTicket
返回 FOrderSelect 选择的订单号
函数原型
FOrderTicket();
说明
- 参数: 无.
- 返回值: 返回 订单号 数值.
示例:
ticket = FOrderTicket();
echo(ticket);
- FOrderSelect
该功能选择一个订单进行进一步处理。
函数原型
FOrderSelect(index,select,pool);
说明
- 参数: index 是 索引 或 ticket 值,订单索引或订单票取决于第二个参数。
- 参数: select,pool 是 USelectFlag 结构体.
- select: 选择标志。它可以是下列任意值: SELECT_BY_POS - 订单池中的索引, SELECT_BY_TICKET - 索引为订单号。
- pool: MODE_TRADES MODE_HISTORY
- 返回值: 返回 UBool 结构体.
结构体 USelectFlag
union USelectFlag {
F_ByPos = 0;
F_ByTicket = 1;
P_History = 3;
P_Trade = 2;
}
结构体 UBool
union UBool {
B_FALSE = 1;
B_TRUE = 0;
}
示例:
trade_num = 3;
for(i=0; i<trade_num; i++){
b = FOrderSelect(i, USelectFlag.F_ByPos, USelectFlag.P_Trade);
if(b==UBool.B_TRUE){
ticket = FOrderTicket();
echo(ticket);
}
}
- FOrderComment
记录当前一笔订单
函数原型
FOrderComment(ticket,side, cmt);
说明
- 参数: ticket 订单号 数值.
- side: 是 USide 结构体.
- cmt: 是 UOrderEvent 结构体.
- 返回值: 无.
结构体 USide
union USide {
Os_Buy = 1;
Os_Sell = 2;
}
结构体 UOrderEvent
union UOrderEvent {
Oe_Compleate = 0;
Oe_StopLoss = 1;
Oe_TakeProfit =2;
};
示例:
ticket = 100;
flag = UOrderEvent.Oe_Compleate;
side = USide.Os_Sell;
FOrderComment(ticket, side, flag);
- FOrderClose
关闭已开立的订单。
函数原型
FOrderClose(ticket,lot,stoppx,slippage);
说明
- 参数: ticket 订单票的唯一编号.
- lot 手数.
- stoppx 价格.
- slippage 最大价格滑点的点值.
- 返回值: 返回 UBool 结构体.
示例:
FOrderClose(ticket,lot,stoppx,slippage);
- FOrderSend
主要功能用于开市或下挂单.
函数原型
FOrderSend(cficode,side,qty,price,slippage,ordtype);
说明
- 参数: cficode 交易品种 cfi .
- side: 是 USide 结构体.
- qty 手数.
- price 价格.
- slippage 最大价格滑点的点值.
- ordtype 是 OrdType 结构体
- 返回值: 返回 UBool 结构体.
结构体 OrdType
union UOrdType {
Ot_Limit = 2;
Ot_Market = 1;
Ot_Stop = 3;
Ot_Stop_limit = 4;
}
示例:
code = CfiCode( ) ;
# long or short
cmd = USide.Os_Buy;
qty = 100;
timeframe = UTimeFrames.Period_D1 ;
price = FClose(code, timeframe, 0);
slippage = 0;
ot = UOrdType.Ot_Market;
FOrderSend(code , cmd, qty, price, slippage, ot);
- FOrdersTotal
返回未平仓的订单数量
函数原型
FOrdersTotal();
说明
- 参数: 无.
- 返回值: 返回 订单 数值.
示例:
trade_num = FOrdersTotal();
- FOrdersHistoryTotal
返回历史订单数量
函数原型
FOrdersHistoryTotal();
说明
- 参数: 无.
- 返回值: 返回 订单 数值.
示例:
trade_num = FOrdersHistoryTotal();
- FOrderLots
返回当前订单交易手数量
函数原型
FOrderLots(ticket);
说明
- 参数: ticket 订单号.
- 返回值: 返回 订单手数 数值.
示例:
lots = FOrderLots(ticket);
- FOrderOpenPrice
返回当前订单交易成交价
函数原型
FOrderOpenPrice(ticket,bool);
说明
- 参数: ticket 订单号.
- bool 是 e2::Bool 结构体,UBool.B_FALSE 现价 UBool.B_TURE 复权价
- 返回值: 返回 订单 成交价.
示例:
b = UBool.B_FALSE;
price = FOrderOpenPrice(ticket, b);
- FOrderOpenTime
返回当前订单交易成交价
函数原型
FOrderOpenTime(ticket,ootype);
说明
- 参数: ticket 订单号.
- ootype 是 e2::UOOTType 结构体
- 返回值: 返回 时间 数字.
结构体 UOOTType
union UOOTType {
oo_day = 3;
oo_hour = 4;
oo_min = 5;
oo_month = 1;
oo_second = 6;
oo_week = 2;
oo_year = 0;
oo_ymd = 7;
oo_ymdh = 8;
oo_ymdhm = 9;
oo_ymdhms = 10;
oo_ymdw = 11;
}
示例:
b = UOOTType.oo_day;
day_number = FOrderOpenTime(ticket, b);
分析仪
- FAnalysis
返回当前订单交易成交价
函数原型
FAnalysis(qid, analy);
说明
- 参数: qid 策略 id.
- analy 是 UAnaly 结构体
- 返回值: 返回 数值.
结构体 UAnaly
union UAnaly {
AvgDrawdown = 16;
AvgDrawdownDuration = 18;
AvgTrade = 22;
AvgTradeDuration = 24;
BestTrade = 20;
BuyAndHold = 9;
CalmarRatio = 14;
Cash = 1;
Curve = 29;
Duration = 4;
End = 3;
EquityFinal = 6;
EquityPeak = 7;
Expectancy = 26;
ExposureTime = 5;
Id = 0;
KellyCriterion = 28;
MaxDrawdown = 15;
MaxDrawdownDuration = 17;
MaxTradeDuration = 23;
ProfitFactor = 25;
Return = 8;
ReturnAnn = 10;
SQN = 27;
SharpeRatio = 12;
SortinoRatio = 13;
Start = 2;
VolatilityAnn = 11;
WinRate = 19;
WorstTrade = 21;
}
示例:
# 查看当前一策略的最大回撒
nmdd = FAnalysis(qid, UAnaly.MaxDrawdown );
- FAnalse
记录数据, 和 FAnalseArgv,FAnalseDB 一起使用
函数原型
FAnalse(id, name);
说明
- 参数: id 自定义的数值.
- name 是 字符串
- 返回值: 无.
示例:
ha_name = "mode_ha";
arg_id = 109;
period = 90;
FAnalse( arg_id, ha_name);
FAnalseArgv(arg_id, period);
FAnalseDB();
- FAnalseArgv
记录数据, 和 FAnalse,FAnalseDB 一起使用
函数原型
FAnalseArgv(id, args);
说明
- 参数: id 自定义的数值.
- args 是 数值
- 返回值: 无.
示例:
arg_id = 109;
period = 90;
FAnalseArgv(arg_id, period);
- FAnalseDB
记录数据, 和 FAnalse,FAnalseArgv 一起使用
函数原型
FAnalseDB();
说明
- 参数: 无.
- 返回值: 无.
示例:
FAnalseDB();
- FAnalseLog
记录数据
函数原型
FAnalseLog(key, value, idx,time);
说明
- 参数: key 自定义数值
- value 数值
- idx 自定义数值
- time 时间
- 返回值: 无.
示例:
key = 192;
code = CfiCode( ) ;
timeframe = CurrentTFrame() ;
FBar(code , timeframe, 0);
time = FBarSeries(UBarType.MODE_TIME);
pid = FProcessId();
run = FProcessRuns();
pids = (pid + 1) * 100;
runs = (run + 1) * 10;
id = alt_id + pids + runs + thread_id;
FAnalseLog(key, value, id , time);
经纪商
- FSetCash
设置现金
函数原型
FSetCash(cash);
说明
- 参数: cash 数值.
- 返回值: 无.
示例:
# 100 万,最少值 1 万
cash = 100;
FSetCash(cash);
- FGetCash
查询当前现金
函数原型
FGetCash( );
说明
- 参数: 无.
- 返回值: 返回 cash 数值.
示例:
cash = FGetCash();
- FSettlInst
设置交易模式
函数原型
FSettlInst( mode );
说明
- 参数: mode 是 USettleInstMode 结构体
- 返回值: 无.
结构体 USettleInstMode
union USettleInstMode {
S_Settle = 0;
S_Settle_Balance = 1;
S_Observer = 2;
};
示例:
# 设置成观察者模式
# FSettlInst(USettleInstMode.S_Observer);
# 结算模式,但余额不再增加
FSettlInst(USettleInstMode.S_Settle);
- FSettlInst
设置 撮合模式
函数原型
FSettlInst( mode );
说明
- 参数: mode 是 UTimeInForce 结构体
- 返回值: 无.
结构体 UTimeInForce
union UTimeInForce {
Tif_At_The_Close = 7;
Tif_At_The_Opening = 2;
Tif_Day = 0;
Tif_Fill_Or_Kill = 4;
Tif_Good_Till_Cancel = 1;
Tif_Good_Till_Crossing = 5;
Tif_Good_Till_Date = 6;
Tif_Immediate_Or_Cancel = 3;
}
示例:
#default day
# ioc
FTimeInForce(UTimeInForce.Tif_Immediate_Or_Cancel);
- FMatchEventInit
设置 撮合 时间点
函数原型
FMatchEventInit( mode );
说明
- 参数: mode 是 UMatchEvent 结构体
- 返回值: 无.
结构体 UMatchEvent
union UMatchEvent {
ME_OrderIn = 0;
ME_Open = 1;
ME_Close = 2;
}
示例:
FMatchEventInit(UMatchEvent.ME_Close);
# FMatchEventInit(UMatchEvent.ME_OrderIn);
- FMatchTrigger
设置 撮合 条件
函数原型
FMatchTrigger( bool );
说明
- 参数: bool 是 e2::Bool 结构体
- 返回值: 无.
示例:
FMatchTrigger(UBool.B_TRUE);
- FExDivPrice
查询 复权数据
函数原型
FExDivPrice( cfi_code );
说明
- 参数: cfi_code 数值
- 返回值: 价格 数值
示例:
- FExDividendSize
查询 复权数据
函数原型
FExDividendSize( cfi_code );
说明
- 参数: cfi_code 数值
- 返回值: 数值
示例:
- FExDividendDate
查询 复权数据
函数原型
FExDividendDate( cfi_code, idx );
说明
- 参数: cfi_code 数值
- idx 数值,第几个值
- 返回值: 数值
示例:
- FExDividendCash
查询 复权数据
函数原型
FExDividendCash( cfi_code, idx );
说明
- 参数: cfi_code 数值
- idx 数值,第几个值
- 返回值: 数值
示例:
- FExDividendShare
查询 复权数据
函数原型
FExDividendShare( cfi_code, idx );
说明
- 参数: cfi_code 数值
- idx 数值,第几个值
- 返回值: 数值
示例:
cfi_code = 1111;
hprice = FExDivPrice(cfi_code);
if ( hprice == 0 ) {
return 0;
}
size = FExDividendSize(cfi_code);
if (size == 0) {
return 0;
}
idx_init = size - 1;
all_share = 0;
for (idx = idx_init;idx>=0;idx--) {
cash = FExDividendCash(cfi_code,idx);
share = FExDividendShare(cfi_code,idx);
if(share > 0){
hprice += share * hprice + cash;
}else{
hprice += cash;
}
}
- FBrokerBook
设置 AB book, 本地回测策略,还是把订单抛给上游,这个可以进行现实的交易
函数原型
FBrokerBook( booktype );
说明
- 参数: booktype 是 UBookType 结构体
- 返回值: 无.
结构体 UBookType
union UBookType {
ABook = 0;
BBook = 1;
}
示例:
FBrokerBook(UBookType.ABook);
- FTotalCash
返回所有账号的金额
函数原型
FTotalCash( );
说明
- 参数: 无.
- 返回值: 数值.
示例:
- FTotalMargin
返回所有账号当前冻结金额
函数原型
FTotalMargin( );
说明
- 参数: 无.
- 返回值: 数值.
示例:
margin = FTotalMargin();
cashs = FTotalCash();
##
## 限制总的使用资金
##
##
point = 10000;
limit_cash = 30 * point;
deci = 3;
FPrintDeci(margin,deci);
FPrintDeci(cashs,deci);
FPrintDeci(limit_cash,deci);
if(margin > limit_cash){
## 限额不接受新订单
return -1;
}
return 0;
- FLimitPriceGap
返回因限额而产生的差额是多少
函数原型
FLimitPriceGap( );
说明
- 参数: 无.
- 返回值: 数值.
示例:
price_gap = FLimitPriceGap();
普通函数
- FIsDebug
打印 数据
函数原型
FIsDebug( bool );
说明
- 参数: bool 是 e2::Bool 结构体
- 返回值: 无.
示例:
# 正常打印
FIsDebug(UBool.B_TRUE);
- log
打印 数据
函数原型
log( value );
说明
- 参数: value 数值
- 返回值: 无.
示例:
value = 102;
log(value);
- FPrintLine
打印 数据
函数原型
FPrintLine( line );
说明
- 参数: line 是 ULineState 结构体
- 返回值: 无.
结构体 ULineState
union ULineState {
L_Dotted = 0;
L_Solid = 1;
}
示例:
line = ULineState.L_Dotted;
FPrintLine( line );
- FPrintDeci
打印 数据 ,带有精度
函数原型
FPrintDeci( value,deci );
说明
- 参数: value 数值
- deci 精度
- 返回值: 无.
示例:
code = CfiCode() ;
timeframe = CurrentTFrame() ;
now_close = FClose(code , timeframe, 0);
# 3 位小数
deci = 3;
FPrintDeci(now_close,deci);
- FPrintTime
输入时间戳,打印有时间格式的字符串
函数原型
FPrintTime( unix_time);
说明
- 参数: unix_time 数值, 时间戳
- 返回值: 无.
示例:
code = CfiCode() ;
tframe = CurrentTFrame() ;
time = FTime(code , tframe, 0);
FPrintTime(time);
- FStoreId
自动获取一次性的缓存 ID
函数原型
FStoreId( );
说明
- 参数: 无.
- 返回值: ID 数值
示例:
- FisStore
检查 id 是不是初始化或者是不是存在
函数原型
FisStore( id );
说明
- 参数: ID 数值.
- 返回值: 返回 UBool 结构体.
示例:
- FFetch
获取缓存数据
函数原型
FFetch( id );
说明
- 参数: ID 数值, FStoreId 生成的 ID 或者 自定义的 ID
- 返回值: 缓存中的值
示例:
- FStore
获取缓存数据
函数原型
FStore( id , value);
说明
- 参数: ID 数值, FStoreId 生成的 ID 或者 自定义的 ID
- value 数值,需要保存的数据
- 返回值: 无.
示例:
id = FStoreId();
value = FFetch(id);
value += 1;
FStore(id, value);
- FTicketSize
返回已运行的 ticket 次数
函数原型
FTicketSize( );
说明
- 参数: 无.
- 返回值: 数值
示例:
number = FTicketSize( );
数学函数
- FArray
创建一个内存数组
函数原型
FArray( id, size );
说明
- 参数: ID 数值, FStoreId 生成的 ID 或者 自定义的 ID
- size 数值,数组大小
- 返回值: 无.
示例:
- FArrayFixed
固定数组的大小
函数原型
FArrayFixed( id);
说明
- 参数: ID 数值, 和 FArray 同一个值
- 返回值: 无.
示例:
- FArrayShare
多个进程之间共享数组内容
函数原型
FArrayShare( id);
说明
- 参数: ID 数值, 和 FArray 同一个值
- 返回值: 无.
示例:
- FArrayAdd
往数组添加数值, 最新的值添加在最后一个索引中
函数原型
FArrayAdd( id , value);
说明
- 参数: ID 数值, 和 FArray 同一个值
- value 数值
- 返回值: 返回 UBool 结构体.
示例:
func test(var){
id = FStoreId();
## 数组大小
size = 2;
FArray(id, size);
ret = 0;
if(var > 5){
ret = 1;
}
var += 2;
FArrayAdd( id , ret); # 数组 index = 0
FArrayAdd( id , var); # 数组 index = 1
return id;
}
tid = test(2);
ret = FArrayGet(tid, 0);
if(ret == 0){
echo(ret)
}else{
val = FArrayGet(tid, 1);
echo(val);
}
- FArrayUpdate
更新某一个索引的数值,但需要这个索引存在
函数原型
FArrayUpdate( id, index, value);
说明
- 参数: ID 数值, 和 FArray 同一个值
- index, 数组是索引
- value 数值
- 返回值: 返回 UBool 结构体.
示例:
- FArrayGet
获取数组某一个索引的数值, 最后一个 idx 索引是最新的值
函数原型
FArrayGet( id, index);
说明
- 参数: ID 数值, 和 FArray 同一个值
- index, 数组是索引
- 返回值: 数值.
示例:
id = FStoreId();
FArray(id, 5);
FArrayAdd(id, tick_size);
idx = FArraySize(id);
idx = idx - 1;
echo(idx);
val = FArrayGet(id, idx);
echo(val);
- FArrayFill
完整填充某个数组
函数原型
FArrayFill( id, value);
说明
- 参数: ID 数值, 和 FArray 同一个值
- value 数值.
- 返回值: 无.
示例:
- FArrayLast
取数组中的最后一个值
函数原型
FArrayLast( id);
说明
- 参数: ID 数值, 和 FArray 同一个值
- 返回值: value 数值.
示例:
- FArrayLength
取数组动态的长度
函数原型
FArrayLength( id);
说明
- 参数: ID 数值, 和 FArray 同一个值
- 返回值: value 数值.
示例:
- FArraySize
取数组当前的长度, 即现在添加了多少个值
函数原型
FArraySize( id);
说明
- 参数: ID 数值, 和 FArray 同一个值
- 返回值: value 数值.
示例:
- FArrayMax
取数组中最大的值
函数原型
FArrayMax( id);
说明
- 参数: ID 数值, 和 FArray 同一个值
- 返回值: value 数值.
示例:
- FArrayMin
取数组中最小的值
函数原型
FArrayMin( id);
说明
- 参数: ID 数值, 和 FArray 同一个值
- 返回值: value 数值.
示例:
- FArraySum
取数组中所有值的和
函数原型
FArraySum( id);
说明
- 参数: ID 数值, 和 FArray 同一个值
- 返回值: value 数值.
示例:
- FMax
返回最大的值
函数原型
FArraySum(value1, value2);
说明
- 参数: value1 数值.
- value2 数值.
- 返回值: value 数值.
示例:
- FMin
返回最小的值
函数原型
FArraySum(value1, value2);
说明
- 参数: value1 数值.
- value2 数值.
- 返回值: value 数值.
示例:
- FMaxs
返回最大的值
函数原型
FMaxs(value1, value2, value3);
说明
- 参数: value1 数值.
- value2 数值.
- value3 数值.
- 返回值: value 数值.
示例:
- FMins
返回最小的值
函数原型
FMins(value1, value2, value3);
说明
- 参数: value1 数值.
- value2 数值.
- value3 数值.
- 返回值: value 数值.
示例:
- FBetween
返回 val 是不是在 start 至 end 中的值
函数原型
FBetween(value, start, end);
说明
- 参数: value 数值.
- start 数值.
- end 数值.
- 返回值: 返回 UBool 结构体.
示例:
- FSqrt
返回 value 的 sqrt
函数原型
FSqrt(value );
说明
- 参数: value 数值.
- 返回值: 数值.
示例:
- FStdev
返回 value 的 stdev
函数原型
FStdev(value );
说明
- 参数: value 数值.
- 返回值: 数值.
示例:
- FArrayStdev
返回 对数组进行 的 stdev
函数原型
FArrayStdev(array_id );
说明
- 参数: array_id 数值.
- 返回值: 数值.
示例:
- FAbs
返回 value 的 abs
函数原型
FAbs(value );
说明
- 参数: value 数值.
- 返回值: 数值.
示例:
- FCeil
返回 value 的 ceil
函数原型
FCeil(value );
说明
- 参数: value 数值.
- 返回值: 数值.
示例:
- FFloor
返回 value 的 floor
函数原型
FFloor(value );
说明
- 参数: value 数值.
- 返回值: 数值.
示例:
市场信息
- FCFICode
通过 idx 提取 cficode
函数原型
FCFICode( idx );
说明
- 参数: idx 数值.
- 返回值: cfi code 数值..
示例:
index = 0;
cfi_base = FCFICode(index);
- FSymbols
返回目前有多少个交易品种
函数原型
FSymbols( );
说明
- 参数: 无.
- 返回值: 数值.
示例:
- FSymbols
返回目前有多少个交易品种
函数原型
FSymbols( );
说明
- 参数: 无.
- 返回值: 数值.
示例:
- FSymbol
初始化获取交易品种
函数原型
FSymbol( cfi_code );
说明
- 参数: cfi_id 数值.
- 返回值: 无.
示例:
- FSettlement
设置交易模式,默认 T + 1
函数原型
FSettlement( val );
说明
- 参数: val 数值.
- 返回值: 无.
示例:
# T + 0
FSettlement(0);
- FOpen
获取开盘价
函数原型
FOpen(cfi_id, timeframe, shift);
说明
- 参数: cfi_id 数值.
- timeframe 周期
- shift 位移数值
- 返回值: 数值.
示例:
- FHigh
获取最高价
函数原型
FHigh(cfi_id, timeframe, shift);
说明
- 参数: cfi_id 数值.
- timeframe 周期
- shift 位移数值
- 返回值: 数值.
示例:
- FLow
获取最低价
函数原型
FLow(cfi_id, timeframe, shift);
说明
- 参数: cfi_id 数值.
- timeframe 周期
- shift 位移数值
- 返回值: 数值.
示例:
- FClose
获取收盘价
函数原型
FClose(cfi_id, timeframe, shift);
说明
- 参数: cfi_id 数值.
- timeframe 周期
- shift 位移数值
- 返回值: 数值.
示例:
- FVolume
获取交易量
函数原型
FVolume(cfi_id, timeframe, shift);
说明
- 参数: cfi_id 数值.
- timeframe 周期
- shift 位移数值
- 返回值: 数值.
示例:
- FTime
获取当前时间
函数原型
FTime(cfi_id, timeframe, shift);
说明
- 参数: cfi_id 数值.
- timeframe 周期
- shift 位移数值
- 返回值: 数值.
示例:
- FAdjClose
获取 adj 报价
函数原型
FAdjClose(cfi_id, timeframe, shift);
说明
- 参数: cfi_id 数值.
- timeframe 周期
- shift 位移数值
- 返回值: 数值.
示例:
- FOrderPrice
记录当前一笔记录 order 报价, 可以给当前订单的 SQL 作为查询使用的
函数原型
FOrderPrice(cfi_id, price);
说明
- 参数: cfi_id 数值.
- price 报价
- 返回值: 数值.
示例:
adj_price = 100.02;
cfi_code = 179595;
FOrderPrice(cfi_code, adj_price);
- FVolumeAppend
在做回测的时候 交易量是不是递增的
函数原型
FVolumeAppend();
说明
- 参数: 无.
- 返回值: 无.
示例:
---
* **FOnOpen**
> 如果源数据是 on close 就得开启,系统计算周期是以开盘时间为准
> *函数原型*
FOnOpen();
> *说明*
- 参数: 无.
- 返回值: 无.
> 示例:
---
* **FBarSize**
> 获取当前周期已经有多少bar
> *函数原型*
FBarSize(cfi_id, timeframe);
> *说明*
- 参数: cfi_id 数值.
- timeframe 周期
- 返回值: 数值.
> 示例:
---
* **FBarNumber**
> 获取当前周期整体能保存多长根柱子
> *函数原型*
FBarNumber(cfi_id, timeframe);
> *说明*
- 参数: cfi_id 数值.
- timeframe 周期
- 返回值: 数值.
> 示例:
---
* **FBar**
> 获取 bar, 配合 FBarSeries 使用
> *函数原型*
FBar(cfi_id, timeframe, shift);
> *说明*
- 参数: cfi_id 数值.
- timeframe 周期
- shift 位移数值
- 返回值: 数值.
> 示例:
---
* **FBarSeries**
> 取已经 FBar 的数值
> *函数原型*
FBarSeries(bartype);
> *说明*
- 参数:bartype 是 UBarType 结构体.
- 返回值: 数值.
> 结构体 **UBarType**
union UBarType { MODE_CLOSE = 4; MODE_HIGH = 2; MODE_LOW = 3; MODE_OPEN = 1; MODE_TIME = 0; MODE_VOL = 5; }
> 示例:
index=1;
code = CfiCode( ) ;
FBar(code , UTimeFrames.Period_H1, index);
open = FBarSeries(UBarType.MODE_OPEN);
high = FBarSeries(UBarType.MODE_HIGH);
low = FBarSeries(UBarType.MODE_LOW);
close = FBarSeries(UBarType.MODE_CLOSE);
echo(open);
echo(high);
echo(low);
echo(close);
---
* **FExdiDate**
> 获取复权时间
> *函数原型*
FExdiDate(cfi_id);
> *说明*
- 参数: cfi_id 数值.
- 返回值: 数值.
> 示例:
---
* **FExdiCash**
> 获取复权分红金额
> *函数原型*
FExdiCash(cfi_id);
> *说明*
- 参数: cfi_id 数值.
- 返回值: 数值.
> 示例:
---
* **FExdiShare**
> 获取复权分红手数
> *函数原型*
FExdiShare(cfi_id);
> *说明*
- 参数: cfi_id 数值.
- 返回值: 数值.
> 示例:
---
* **FExdiSplit**
> 获取 ETF 拆分数
> *函数原型*
FExdiSplit(cfi_id);
> *说明*
- 参数: cfi_id 数值.
- 返回值: 数值.
> 示例:
---
* **FCustomDataSize**
> 获取自定义数据的数组大小
> *函数原型*
FCustomDataSize(cfi_id, index);
> *说明*
- 参数: cfi_id 数值.
- index 数值.
- 返回值: 数值.
> 示例:
index = 0;
size = FCustomDataSize(cficode, index);
echo(size);
---
* **FCustomDataGet**
> 获取自定义数据的数组中 postion 的数值
> *函数原型*
FCustomDataGet(cfi_id, index, postion);
> *说明*
- 参数: cfi_id 数值.
- index 数值.
- postion 数值.
- 返回值: 数值.
> 示例:
index = 0;
postion = 1;
value = FCustomDataGet(cficode, index, postion);
echo(value);
---
* **FSymbolLockForEA**
> 如果有多个 cficode 的时候, 可以限制一个进程(账号),单独获取其中一个 cficode
> *函数原型*
FSymbolLockForEA();
> *说明*
- 参数: 无.
- 返回值: 无.
> 示例:
# 用在 oms 端
FSymbolLockForEA();
---
* **FDelisting**
> 获取 某个 cficode 的退市时间
> *函数原型*
FDelisting(cfi_id);
> *说明*
- 参数: cfi_id 数值.
- 返回值: 数值.
> 示例:
cfi_code = 179594;
dtime = FDelisting(cfi_code);
---
* **FIsSuspended**
> 暂停交易, 作用在整体
> *函数原型*
FIsSuspended();
> *说明*
- 参数: 无 .
- 返回值: 返回 UBool 结构体.
> 示例:
## 暂定交易
is_suspend = FIsSuspended();
---
* **FCustomDataNumber**
> 获取自定义数据的更新的次数
> *函数原型*
FCustomDataNumber(cfi_id, index);
> *说明*
- 参数: cfi_id 数值.
- index 数值.
- 返回值: 数值.
> 示例:
index = 0;
size = FCustomDataNumber(cficode, index);
echo(size);
## 虚拟交易机器人
---
* **FGiveaway**
> 设置交易机器人.<br/>
> BSE: A Minimal Simulation of a Limit-Order-Book Stock Exchange [https://arxiv.org/pdf/1809.06027](https://arxiv.org/pdf/1809.06027)
> *函数原型*
FGiveaway(cfi_id);
> *说明*
- 参数: 无.
- 返回值: 无.
> 示例:
## 日期和时间
---
* **FTimeCurrent**
> 返回当前报价时间.
> *函数原型*
FTimeCurrent( );
> *说明*
- 参数: 无.
- 返回值: 数值.
> 示例:
---
* **FTimeLocal**
> 返回当前机器时间.
> *函数原型*
FTimeLocal( );
> *说明*
- 参数: 无.
- 返回值: 数值.
> 示例:
---
* **FClock**
> 返回当前机器豪秒.
> *函数原型*
FClock( );
> *说明*
- 参数: 无.
- 返回值: 数值.
> 示例:
---
* **FYear**
> 转换时间返回: 年().
> *函数原型*
FYear( now );
> *说明*
- 参数: now 数值.
- 返回值: 数值.
> 示例:
now = FTimeCurrent( ); year = FYear(); # 2025
---
* **FMonth**
> 转换时间返回: 月 (1-12).
> *函数原型*
FMonth( now );
> *说明*
- 参数: now 数值.
- 返回值: 数值.
> 示例:
now = FTimeCurrent( ); month = FMonth();
---
* **FDay**
> 转换时间返回: 日 (1-31).
> *函数原型*
FDay( now );
> *说明*
- 参数: now 数值.
- 返回值: 数值.
> 示例:
now = FTimeCurrent( ); day = FDay();
---
* **FWeek**
> 转换时间返回: 星期值.
> *函数原型*
FWeek( now );
> *说明*
- 参数: now 数值.
- 返回值: 数值(0-6, 0=周日).
> 示例:
now = FTimeCurrent( ); week = FWeek();
---
* **FYearWeek**
> 转换时间返回: 一年中的第几周.
> *函数原型*
FYearWeek( now );
> *说明*
- 参数: now 数值.
- 返回值: 数值.
> 示例:
now = FTimeCurrent( ); week = FYearWeek();
---
* **FHour**
> 转换时间返回: 小时.
> *函数原型*
FHour( now );
> *说明*
- 参数: now 数值.
- 返回值: 数值.
> 示例:
now = FTimeCurrent( ); hour = FHour();
---
* **FMinute**
> 转换时间返回: 分钟.
> *函数原型*
FMinute( now );
> *说明*
- 参数: now 数值.
- 返回值: 数值.
> 示例:
now = FTimeCurrent( ); minute = FMinute();
---
* **FSecond**
> 转换时间返回: 秒.
> *函数原型*
FSecond( now );
> *说明*
- 参数: now 数值.
- 返回值: 数值.
> 示例:
now = FTimeCurrent( ); second = FSecond();
---
* **Fmillisecond**
> 转换时间返回: 毫秒.
> *函数原型*
Fmillisecond( now );
> *说明*
- 参数: now 数值.
- 返回值: 数值.
> 示例:
now = FTimeCurrent( ); millisecond = Fmillisecond();
---
* **FYmd**
> 转换时间返回: ymd.
> *函数原型*
FYmd( now );
> *说明*
- 参数: now 数值.
- 返回值: 数值.
> 示例:
now = FTimeCurrent( ); ymd = FYmd(now);
---
* **FYmdh**
> 转换时间返回: ymdh.
> *函数原型*
FYmdh( now );
> *说明*
- 参数: now 数值.
- 返回值: 数值.
> 示例:
now = FTimeCurrent( ); ymdh = FYmdh(now);
---
* **FYmdhm**
> 转换时间返回: ymdhm.
> *函数原型*
FYmdhm( now );
> *说明*
- 参数: now 数值.
- 返回值: 数值.
> 示例:
now = FTimeCurrent( ); ymdhm = FYmdhm(now);
---
* **FYmdhms**
> 转换时间返回: ymdhms.
> *函数原型*
FYmdhms( now );
> *说明*
- 参数: now 数值.
- 返回值: 数值.
> 示例:
now = FTimeCurrent( ); ymdhms = FYmdhms(now);
---
* **FYmdw**
> 转换时间返回: ymdw.
> *函数原型*
FYmdw( now );
> *说明*
- 参数: now 数值.
- 返回值: 数值.
> 示例:
now = FTimeCurrent( ); ymdw = FYmdw(now);
## 系统函数
---
* **FThread**
> 设置线程, 如果大于硬件线程,将以硬件线程为准.
> *函数原型*
FThread( number );
> *说明*
- 参数: 数值.
- 返回值: 无.
> 示例:
---
* **FProcessId**
> 返回当前进程 值.
> *函数原型*
FProcessId( );
> *说明*
- 参数: 无.
- 返回值: 数值.
> 示例:
---
* **FProcessRuns**
> 返回当前进程已经运行第几次, 次数来自 主进程的 -r 参数
> *函数原型*
FProcessRuns( );
> *说明*
- 参数: 无.
- 返回值: 数值.
> 示例:
---
* **FThreadId**
> 返回当前线程的 id
> *函数原型*
FThreadId( );
> *说明*
- 参数: 无.
- 返回值: 数值.
> 示例:
---
* **FTypeOf**
> 分析当前变量是函数还是变量
> *函数原型*
FTypeOf( name );
> *说明*
- 参数: 无.
- 返回值: 返回 UBool 结构体.
> 示例:
---
* **FApiList**
> 列出 所有 内置API 列表
> *函数原型*
FApiList( );
> *说明*
- 参数: 无.
- 返回值: 无.
> 示例:
---
* **FSymbolUnion**
> 列出 所有 内置 结构体 列表
> *函数原型*
FSymbolUnion( );
> *说明*
- 参数: 无.
- 返回值: 无.
> 示例:
```