以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  关于公式系统不能出现指标的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=10315)

--  作者:cong
--  发布时间:2012/2/26 19:37:27
--  关于公式系统不能出现指标的问题

以下是我的一个思路以及我自己写的代码,但是不能出现信号:

开盘------在三分钟K线图的环境下运行。早上开盘24分钟内不操作。从第9K线形如即25分钟后找符合条件的机会。

看多或是看空由使用者人为判断,通过参数来实现。做多或是做空也有两种情况分两个出场参数。

做多:看多行情时做多(人为判断出场依据,通过调整参数来实现),3分钟K线图CCI值如果-100,则以3分钟CCI上穿-100线且当根3分钟K收盘确定后以下一根K线开盘价入场做多,21点止损出场;或者出现利润后以3分钟CCI下穿零线止赢出场

做空:看空行情时做空(人为判断出场依据,通过调整参数来实现),3分钟K线图CCI值如果100,则以3分钟CCI值下穿100线且当根3分钟K收盘确定后以下一根K线开盘价入场做21点止损出场;或者出现利润后以3分钟CCI值上穿零线止赢出场

AINDEX( )TYP := (HIGH + LOW + CLOSE)/3;
CCI:(TYP-MA(TYP,M))/(0.015*AVEDEV(TYP,M));
AA:=CROSS(CCI,-100);
BB:=CROSS(100,CCI);
CC:=CROSS(0,CCI);
DD:=CROSS(CCI,0);
Long:=AA and CLOSE>-100 and time>=092700;
if Long then
begin
buy(holding=0,1,limitr,market);                              //开多
end

if CC then
sell(holding>0,1,limitr,market);                              //多单止盈

IF CLOSE<=ENTERPRICE-21 AND ENTERBARS>1 AND HOLDING>0 THEN    //多单止损   
SELL(HOLDING>0,1,market);
 

Short:=BB and CLOSE<100 and time>092700;
if Short then
begin
buyshort(holding=0,1,limitr,market);                         //开空
end


if DD then
sellshort(holding<0,1,limitr,market);                        //空单止盈


if CLOSE>=ENTERPRICE+20 and ENTERBARS>1 and holding<0  then  //空单止损
sellshort(holding<0,1,market);


sell(time>=145700 and holding>0,0,thisclose);
sellshort(time>=145700 and holding<0,0,thisclose);

<!--EndFragment--><!--EndFragment-->


--  作者:jinzhe
--  发布时间:2012/2/27 10:02:17
--  

buy(holding=0,1,limitr,market);                             

改成buy(holding=0,1,limitr,c);  或者buy(holding=0,1,market);      

其他类似的错误也照样修改                                


--  作者:董小球
--  发布时间:2012/2/27 10:03:46
--  
楼主你的下单函数用的语法不对
例如buyshort(holding=0,1,limitr,market);  
应该写成
buyshort(holding=0,1,market);  

其他的你也这样改一下 就正常了


--  作者:cong
--  发布时间:2012/2/27 10:17:59
--  
谢谢,但是我的想法CROSS(CCI,-100),CCI上穿-100这样的要怎么实现?
--  作者:cong
--  发布时间:2012/2/27 10:46:31
--  

我修改了一下:

TYP := (HIGH + LOW + CLOSE)/3;
CCI:(TYP-MA(TYP,M))/(0.015*AVEDEV(TYP,M))
AA:=CROSS(CCI,-100);
BB:=CROSS(100,CCI);
CC:=CROSS(0,CCI);
DD:=CROSS(CCI,0);
Long:=AA and CLOSE>-100 and time>=092700 and time<145700;
if Long then
begin
buy(holding=0,1,market);                              //开多
end

if CC then
sell(holding>0,1,market);                              //多单止盈

IF CLOSE<=ENTERPRICE-21 AND ENTERBARS>1 AND HOLDING>0 THEN    //多单止损   
SELL(HOLDING>0,1,market);
 

Short:=BB and CLOSE<100 and time>092700;
if Short then
begin
buyshort(holding=0,1,market);                         //开空
end


if DD then
sellshort(holding<0,1,market);                        //空单止盈


if CLOSE>=ENTERPRICE+20 and ENTERBARS>1 and holding<0  then  //空单止损
sellshort(holding<0,1,market);


sell(time>=145700 and holding>0,0,thisclose);
sellshort(time>=145700 and holding<0,0,thisclose);

但还是出现了问题,说是无法判断该表达式AA:=CROSS(CCI,-100)的意图


--  作者:jinzhe
--  发布时间:2012/2/27 10:59:06
--  

我这里是编译正常的,

你的M有参数设置吗?


--  作者:just
--  发布时间:2012/2/27 11:02:40
--  
CCI:(TYP-MA(TYP,M))/(0.015*AVEDEV(TYP,M));
这句后面少个分号。

--  作者:cong
--  发布时间:2012/2/28 11:08:50
--  

图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看
你好,那为什么会出现我附近中的问题,还就就是为什么只有凯多信号?没有开空信号,怎么用一个参数去实现开多和开空?
图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看

--  作者:jinzhe
--  发布时间:2012/2/28 11:21:47
--  

你可以设置个变量,看看开空条件是否成立,比如:cond2:short and holding=0,linethick0;

然后查看有没有条件达成的


--  作者:王锋
--  发布时间:2012/2/28 11:30:36
--  
http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=332 参考问题4,学习一下金字塔下基本的调试技巧