以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  [求助]固定金额止盈问题  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=168492)

--  作者:雪松fj303
--  发布时间:2019/2/28 12:00:33
--  [求助]固定金额止盈问题
老师:
       买入后,当天盈利一个固定数额(比如2000元)止盈,为什么我写的显示出来都不正确

       开多后
       pdj:=(H-ENTERPRICE)*MULTIPLIER*手数;
       sell(pdj>=2000,0,limitr,enterprice+2000/(MULTIPLIER*手数));
       好像结果都不对。
       请教老师正确的写法。

--  作者:FireScript
--  发布时间:2019/2/28 13:17:35
--  
 如果你止盈之后不再开仓 可以用资金变化来处理。
当前资金-当天开始的资金

star:ref(asset,TODAYBAR);//当天初始资金

cond:asset-star>=2000 and holding>0;
sell(cond,0,limitr,enterprice+2000/(MULTIPLIER*手数));

如果后面还要继续开仓的话:
可以考虑直接使用这个函数OPENPROFIT

--  作者:雪松fj303
--  发布时间:2019/2/28 13:36:22
--  
asset是专业版函数吗?显示的数字不对啊
用标准版怎么写,后面可以继续开仓的

--  作者:雪松fj303
--  发布时间:2019/2/28 13:48:57
--  
照理,我用以下写法表示也没错啊

开多浮盈:if(holding>0,(H-ENTERPRICE)*MULTIPLIER*手数,DRAWNULL);
开空浮盈:if(holding<0,(ENTERPRICE-L)*MULTIPLIER*手数,DRAWNULL);

--  作者:FireScript
--  发布时间:2019/2/28 13:49:38
--  
 1.asset这个返回值不是实际账号的盈亏,是图表上的模拟资金,和实际账号盈亏不一致的。你是和实际账号栏的盈亏进行对比的吗?
2.函数是不分软件版本的。不同版本限制的是软件部分功能。
3.图表上无法根据实际账号盈亏来执行开平操作的,因为图表上无法获取实际账号的盈亏情况。

按照图表逻辑你这个代码应该是对的,不过你这里用H-ENTERPRICE 可以考虑换成C-ENTERPRICE  H表示的是在当个K最高盈利。



--  作者:雪松fj303
--  发布时间:2019/2/28 13:55:53
--  
进行回测这样写行吗?
--  作者:雪松fj303
--  发布时间:2019/2/28 13:59:52
--  
这样的话有两个问题:就是回测和实际交易(图表程序化)分别应该怎么写?
--  作者:雪松fj303
--  发布时间:2019/2/28 14:13:43
--  
请求老师指点
--  作者:FireScript
--  发布时间:2019/2/28 14:14:36
--  
 可以的啊,你怎样写对回测都是不影响的。 H-ENTERPRICE和C-ENTERPRICE 主要区别是前者稳定,后者在实际交易时候能返回实时的情况,是可能不断变动的,从而导致信号变动。

--  作者:雪松fj303
--  发布时间:2019/2/28 14:38:35
--  
开多浮盈:=if(holding>0,(H-ENTERPRICE)*MULTIPLIER*手数,DRAWNULL);
开空浮盈:=if(holding<0,(ENTERPRICE-L)*MULTIPLIER*手数,DRAWNULL);

sell(开多浮盈>n,0,limitr,(ENTERPRICE+N/MULTIPLIER*手数)-滑点);
sellshort(开空浮盈>n,0,limitr,(ENTERPRICE-N/MULTIPLIER*手数)+滑点);

这个可以用于回测?

那实盘交易就必须用asset是吗