以文本方式查看主题

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

--  作者:诗与远方
--  发布时间:2021/2/25 9:48:23
--  老师好
请问:这个怎样写?开仓是走完K线,强平不用走完k线。
        
        价格跌破30均线,多单全部强平。
        价格突破30均线,空单全部强平。

--  作者:FireScript
--  发布时间:2021/2/25 9:58:19
--  

平仓语句倒是简单。
ma30:ma(c,30);
sell(cross(ma30,c),holding,market);
sellshort(cross(c,ma30),holding,market);


重点是这个
走完K线与固定轮训模式共存:http://www.weistock.com/bbs/dispbbs.asp?boardid=10&Id=151891
所以你需要额外处理下开仓的条件。从原先的条件A,变成ref(a,1)就行了。

--  作者:诗与远方
--  发布时间:2021/2/25 10:26:16
--  

这个不能通过测评??
marketr   交易系统函数的第三参数必须为交易控制符

if [c<hh-20*mindiff and holding>0 then sell(1,holding,marketr)]or [sell(cross(ma180,h),holding,market)];
if [c>ll+20*mindiff and holding<0 then sellshort(1,holding,marketr)]or[ sellshort(cross(h,ma180),holding,market)];

--  作者:FireScript
--  发布时间:2021/2/25 10:30:21
--  
[]括号是不能使用的。
然后你这里用or是干嘛的

if [c<hh-20*mindiff and holding>0 then sell(1,holding,marketr)]or [sell(cross(ma180,h),holding,market)];

你不能把平仓语句用or连接啊。这即不规范,也没有实际效果。

--  作者:FireScript
--  发布时间:2021/2/25 10:37:21
--  
 你要这样一句句分开写。
if c<hh-20*mindiff and holding>0 then sell(1,holding,marketr);

或者这样把条件合并在一起
if (c<hh-20*mindiff and holding>0) or (cross(ma180,h)) then sell(1,holding,marketr);

--  作者:诗与远方
--  发布时间:2021/2/25 10:37:33
--  
 只要两个平仓条件,其中一个成立,就达到平仓效果


[c<hh-20*mindiff and holding>0 then sell(1,holding,marketr)]这是移动止损   or 这是或者的意思          [sell(cross(ma180,h),holding,market)]这是强平;

--  作者:FireScript
--  发布时间:2021/2/25 10:38:26
--  
 参考5楼的回复。我知道你的意思,但是你原先的写法是不规范的。要么分开写,要么在条件的地方使用or连接。