以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp)
-- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4)
---- holding的判断 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=30711)
|
-- 作者:aback
-- 发布时间:2012/11/18 9:52:54
-- holding的判断
想精细一下加仓的条件,
IF HOLDING=1 AND COND1 THEN BUY(1,1,MARKET);
IF HOLDING=2 AND COND2 THEN BUY(1,1,MARKET);
发现语句2好像不起作用,程序还是根据语句1来加第二仓的!有知道的吗?
|
-- 作者:aback
-- 发布时间:2012/11/18 11:30:33
--
没人知道?
举个例子吧!
BUYCOND1:CROSS(MA(C,10),MA(C,30)); BUYCOND2:CROSS(MA(C,10),MA(C,20)); BUYCOND3:CROSS(MA(C,5),MA(C,10));
SELLCOND:CROSS(MA(C,30),MA(C,10));
IF HOLDING>0 AND SELLCOND THEN SELL(1,0,MARKET);
IF HOLDING=0 AND BUYCOND1 THEN BUY(1,1,MARKET); IF HOLDING=1 AND BUYCOND2 THEN BUY(1,1,MARKET); IF HOLDING=2 AND BUYCOND3 THEN BUY(1,1,MARKET);
DRAWICON(BUYCOND3 AND HOLDING=1,LOW,17); DRAWICON(BUYCOND3 AND HOLDING=2,LOW,1);
此主题相关图片如下:111.jpg

看最后两句,只有HOLDING持仓不同,结果在图上也有菱形图标显示,证明程序也能读HOLDING,但为何BUYCOND3不开仓呢?
|
-- 作者:漫步金字塔
-- 发布时间:2012/11/18 13:41:30
--
你试试将那个CROSS(MA(C,5),MA(C,10))换成
ma(c,5)>ma(c,10) and ref(ma(c,5),1)<ref(ma(c,10),1).
因为有可能他们相隔很近,却没有穿过。
|
-- 作者:aback
-- 发布时间:2012/11/18 13:56:40
--
以下是引用漫步金字塔在2012-11-18 13:41:30的发言:
你试试将那个CROSS(MA(C,5),MA(C,10))换成
ma(c,5)>ma(c,10) and ref(ma(c,5),1)<ref(ma(c,10),1).
因为有可能他们相隔很近,却没有穿过。
DRAWICON(BUYCOND3 AND HOLDING=1,LOW,17); DRAWICON(BUYCOND3 AND HOLDING=2,LOW,1);
没穿过会有记号出来?
|
-- 作者:amao2003
-- 发布时间:2012/11/29 3:07:40
--
客服看到了吗?
|
-- 作者:jinzhe
-- 发布时间:2012/11/29 9:17:12
--
只做了一点修改,多用shift+q进行 调试
此主题相关图片如下:qq截图20121129091644.png

|
-- 作者:jinzhe
-- 发布时间:2012/11/29 9:18:47
-- 自设套利合约的几个问题
shift+q来看看条件是否满足
此主题相关图片如下:qq截图20121129091801.png

此主题相关图片如下:qq截图20121129091839.png

|
-- 作者:fly
-- 发布时间:2012/11/29 9:36:00
--
没执行HOLDING=2的条件,是因为条件不满足.
改为以下,更方便图上查看
BUYCOND1:=CROSS(MA(C,10),MA(C,30)); BUYCOND2:=CROSS(MA(C,10),MA(C,20)); BUYCOND3:=CROSS(MA(C,5),MA(C,10));
SELLCOND:=CROSS(MA(C,30),MA(C,10));
IF HOLDING>0 AND SELLCOND THEN SELL(1,0,MARKET);
//以下代码在IF12合约2012年11月22日的1分钟K线上是有完整执行的
IF HOLDING=0 AND BUYCOND1 THEN 多1:BUY(1,1,MARKET); IF HOLDING=1 AND BUYCOND2 THEN 多2:BUY(1,1,MARKET); IF HOLDING=2 AND BUYCOND3 THEN 多3:BUY(1,1,MARKET);
|