以文本方式查看主题

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

--  作者:闇
--  发布时间:2016/5/24 11:31:29
--  [求助]模型编辑求助!
老师您好!我是一个学生,毕业设计需要用到这个,帮忙解决一下。公式中弄不能加个再次开多条件,那么这次开多在KDJ上穿0后如果说价格没有上次开多的价格低,则不买入!还有这个交易系统怎么不能自动平仓!


//中间变量

RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,P1,1);
D:=SMA(K,P2,1);
J:=3*K-2*D;
MA1:=MA(close,A);
MA2:=MA(close,B);
手数:=ss;
//交易条件

开多平空:=CROSS(J,0); //买入条件
开空平多:=CROSS(MA2,MA1);//卖出条件

//交易系统
开多:BUY(开多平空,手数,MARKET);
平多:SELL(开空平多,holding,MARKET);

当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;

--  作者:jinzhe
--  发布时间:2016/5/24 13:16:09
--  
variable:n=0;
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,P1,1);
D:=SMA(K,P2,1);
J:=3*K-2*D;
MA1:=MA(close,A);
MA2:=MA(close,B);
手数:=ss;
//交易条件

开多平空:=CROSS(J,0); //买入条件
开空平多:=CROSS(MA2,MA1);//卖出条件

//交易系统
if 开多平空条件 and holding=0 and n=0 then begin
    BUY(开多平空,手数,MARKET);
    n:=1;
end
 
if 开多平空条件 and holding=0 and n=1 and c>enterprice then buy(holding=0,1,marketr);
平多:SELL(开空平多,holding,MARKET);

当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;

--  作者:jinzhe
--  发布时间:2016/5/24 13:16:48
--  
自动交易,参考这里的启动图表交易交易http://www.weistock.com/WeisoftHelp/tubiaochengshihuajiaoyi.htm
[此贴子已经被作者于2016-5-24 13:17:35编辑过]

--  作者:闇
--  发布时间:2016/5/31 13:40:07
--  
老师,这个variable:n=0这个是做什么用的能解释一下吗。
还有这个条件   if 开多平空条件 and holding=0 and n=1 and c>enterprice then buy(holding=0,1,marketr);
是不是持仓量为0的时候才能买入,为什么我执行交易的时候一直都是达到开多条件的时候执行下单,达到平多条件的时候没有执行平仓。

--  作者:闇
--  发布时间:2016/5/31 13:46:47
--  
对了,我是设定了按幅度止盈止损点了,这个会有影响平仓吗
--  作者:jinzhe
--  发布时间:2016/5/31 13:47:51
--  

1.n的作用是记录开仓的标记,用来标记第一次单独的开仓,因为第一次开仓不需要做认为操作,只要满足条件就开仓,后面的开仓需要比上次的开仓价格低,所以要做特殊的标记

2.你看一下上面给你的链接,你照着做一遍启动图表交易,然后看一下交易回报里面有什么回报


--  作者:闇
--  发布时间:2016/6/1 10:35:40
--  
老师,我按照链接那启动了程序化交易,还是那样,有开多信号的时候回自动买入,出现平多信号的时候没反应了,不会自动平仓,我手动平仓试了下显示委托数量小于1,是不是代码哪里编写错了
--  作者:jinzhe
--  发布时间:2016/6/1 10:43:34
--  

代码这样改:

 

 

 

variable:bj=0;
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,P1,1);
D:=SMA(K,P2,1);
J:=3*K-2*D;
MA1:=MA(close,A);
MA2:=MA(close,B);
手数:=ss;
//交易条件


开多平空:CROSS(J,0); //买入条件
开空平多:=CROSS(MA2,MA1);//卖出条件


//交易系统
if 开多平空 and holding=0 and bj=0 then begin
    BUY(开多平空,手数,MARKET);
    bj:=1;
end
 
if 开多平空 and holding=0 and bj=1 and c>enterprice then buy(holding=0,1,marketr);
平多:SELL(开空平多,holding,MARKET);
bb:bj;
ee:enterprice;

当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;

 

 

你先检查一下你帐号有没有登录

交易连续合约时有没有勾选允许交易连续合约

再看看下单记录里面的信息是怎么提示的