以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 求大神帮忙看看公式什么地方有问题 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=157504) |
-- 作者:如意蝶 -- 发布时间:2017/9/1 10:41:20 -- 求大神帮忙看看公式什么地方有问题 老师您好,我有个想法试了很多次都没写好,我大体写一下,请老师帮忙看一下大致是什么地方出错了 CC:=REF(C,BARSLAST(CROSS(diff,dea)));//取上次MACD金叉的收盘价; BB:=REF(C,1);//得到昨天的收盘价 DD:=IF(ENTERVOL=0,CC,BB);//判断当前收否有持仓,如果没有持仓的话,取CC的价格,如果有持仓的话,取昨天的收盘价。 SS:=5; DD1:=DD+SS; DD2:=DD+2*SS; DD3:=DD+3*SS; EE1:=DD-SS; EE2:=DD-2*SS; EE3:=DD-3*SS; if holding=0 and cross(DIFF,DEA),THEN BEGIN//判断当根K线有没有持仓,且出现金叉时,买入十手多单 BUY(1,10,MARKET); END; IF holding>=10 and (diff>dea AND BETWEEN(C,dd1,DD2)),THEN BEGIN//判断持仓数是否大于等于10,且价位处在DD1与DD2之间,如果满足,则平仓五手 SELL(1,5,MARKET); END; IF holding>=5 and (diff>dea AND BETWEEN(C,DD2,DD3)),THEN BEGIN判断持仓数是否大于等于5,且价位处在DD2与DD3之间,如果满足,则平仓五手 SELL(1,5,MARKET); END; if holding>=0 and (diff>dea and between(c,ee1,ee2)),then begin buy(1,5,market); end; if holding>=0 and (diff>dea and between(c,ee2,ee3)),then begin buy(1,5,market); end; 我也不知道哪写错了,我想表达的意思是:当新K线出来,首先要判断下有没有持仓,如果没有持仓,判断下MACD情况,如果有金叉出现,则开十手多单。如果有持仓的话,判断当前价位处于什么位置,如果处在EE1与EE2之间,加5手多单,如果处在EE2与EE3之间,再加5手多单,如果处在DD1与dd2之间,平5手多单,处在dd2与dd3之间,再平5手多单。 ----------------------DD2 平5手 -----------------------DD1 平5手 --------------------- DD 开10手多单 ---------------------EE1 ---------------------EE2 加5手 ---------------------EE3 加5手 麻烦老师了 |
-- 作者:wenarm -- 发布时间:2017/9/1 10:59:32 -- 描述下,你的说的问题点在哪? |
-- 作者:如意蝶 -- 发布时间:2017/9/1 11:14:37 -- DD:=IF(ENTERVOL=0,REF(C,BARSLAST(CROSS(diff,dea)),REF(C,1));//判断当前是否有持仓,如果没有持仓的话,取MACD金叉时的收盘价,如果有持仓的话,取前一天的收盘价的价格。 这段话写的对是吧。
|
-- 作者:FireScript -- 发布时间:2017/9/1 11:27:52 -- 以下是引用如意蝶在2017/9/1 11:14:37的发言:
DD:=IF(ENTERVOL=0,REF(C,BARSLAST(CROSS(diff,dea)),REF(C,1));//判断当前是否有持仓,如果没有持仓的话,取MACD金叉时的收盘价,如果有持仓的话,取前一天的收盘价的价格。
这段话写的对是吧。 代码是对的。不过你要判断是否有持仓,直接用holding=0判断吧。 |