尝个鲜
语言增强
优宽量化不单实现了麦语言的解释器, 而且还增强让其能与高级语言Javascript混合编程,放个例子
%%
// 这里面可以调用优宽量化的任何API
scope.TEST = function(obj) {
return obj.val * 100;
}
%%
收盘价:C;
收盘价放大100倍:TEST(C);
上一个收盘价放大100倍:TEST(REF(C, 1)); // 鼠标移动到回测的K线上就会提示变量值
(*backtest start: 2018-06-01 00:00:00 end: 2018-11-21 00:00:00 period: 1d exchanges: [{"eid":"Futures_CTP","currency":"FUTURES","balance":500000,"minfee":0,"fee":[0,0]}] *) //该示范主要用海龟交易法则,演示“头寸计算,最大仓位控制等资金管理”的编写方法 //编写示范中,只对示范重点内容语句进行了注释,其他语句请自行翻译,或者咨询客服 //该模型仅仅用来示范演示使用,依此入市,风险自负。 ATRPERIOD:=20; // ATR波动周期 SHORTPERIOD:=20; // 入市短周期 LONGPERIOD:= 55; // 入市长周期 VARIABLE:ISLASTFAILURE:=1; // 上次是否止损离场, 全局变量过滤信号 TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));//真实波幅 ATR:MA(TR,ATRPERIOD); //求20个周期内真实波幅的简单移动平均, 在附图显示 ZOOM:=IFELSE(ISCONTRACT('@Futures_(?!CTP).*'), CLOSE, 1); // 兼容数字货币期货币为保证金 LOT:=((MONEYTOT*RATIO*ZOOM)/(UNIT*ATR))*ZOOM;//根据权益的1%计算下单手数 TC..IFELSE(ISCONTRACT('@Futures.*'), INTPART(LOT), LOT); // 兼容期货与现货ISCONTRACT以@开头表示匹配交易所名子, 支持正则 MTC..4*TC; //总的持仓头寸 HH^^HV(H,SHORTPERIOD); // 附加到主图显示 LL^^LV(L,SHORTPERIOD); HHH^^HV(H,LONGPERIOD); LLL^^LV(L,LONGPERIOD); ISEMPTY:=ISLASTBK=0&&ISLASTSK=0; CROSSUP(C,HH)&&ISEMPTY&&ISLASTFAILURE,BK(TC);//最新价超过短周期的最高值,首次买入开仓,手数为TC手 CROSSDOWN(C,LL)&&ISEMPTY&&ISLASTFAILURE,SK(TC); //最新价跌破短周期的最低值,首次卖出开仓,手数为TC手 CROSSUP(C,HHH)&&ISEMPTY,BK(TC);//最新价超过长周期的最高值,首次买入开仓,手数为TC手 CROSSDOWN(C,LLL)&&ISEMPTY,SK(TC); //最新价跌破长周期的最低值,首次卖出开仓,手数为TC手 C>=BKPRICE+0.5*ATR&&BKVOL<MTC&&ISLASTBK,BK(TC);//价格在上次开仓的基础上上涨0.5倍ATR,在手数不超过4倍TC的时候,买入加仓TC手 C<=SKPRICE-0.5*ATR&&SKVOL<MTC&&ISLASTSK,SK(TC);//价格在上次开仓的基础上下跌0.5倍ATR,在手数不超过4倍TC的时候,卖出加仓TC手 NEEDSTOP:=(C<=(BKPRICE-2*ATR)&&BKVOL>0) OR (C>=(SKPRICE+2*ATR)&&SKVOL>0); NEEDLEAVE:=(CROSSUP(H,HV(H,10))&&SKVOL>0) OR (CROSSDOWN(L,LV(L,10))&&BKVOL>0); NEEDSTOP OR NEEDLEAVE,CLOSEOUT; ISLASTFAILURE..IF(NEEDSTOP OR NEEDLEAVE, NEEDSTOP, ISLASTFAILURE); INFO(NEEDSTOP, '止损离场'); INFO(NEEDLEAVE, '成功离场'); TRADE_AGAIN(10); MULTSIG(1, 1, 10);