以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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判断吧。