以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  后台程序化为什么没有执行交易  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=173965)

--  作者:zj564335
--  发布时间:2020/1/14 10:24:52
--  后台程序化为什么没有执行交易
后台程序化为什么没有执行交易,模型已经挂了一个上午,实际已经达到触发信号的了,为什么这边没有任何交易信息发生
--  作者:FireScript
--  发布时间:2020/1/14 10:33:43
--  
1.确定下是没有预警信号,还是说有预警信号没下单。
2.如果没有预警信号.先用debugfile或者debugout把交易相关的变量输出一下。以实际看到的变量值作为判断依据。
2.如果有预警信号。也就是说开仓条件的确满足了。可以继续在交易日志中看下具体的记录。应该是在实际下单时候出现问题了。比如未勾选运行连续主力直接下单等。

--  作者:zj564335
--  发布时间:2020/1/14 10:47:04
--  
没有预警信号,模型的代码是这个,要怎么修改你上面说的内容加进去。
input:SS(10,1,100,1);//开头加上这句

B1:=MA(C,150);
MID:=MA(CLOSE,40);
TMP2:=STD(CLOSE,40);
TOP:=MID+2*TMP2;
BOTTOM:=MID-2*TMP2;


N1:=BARSLAST(DATE<>REF(DATE,1))+1;
N:HHV(N1,300);
HH:REF(HhV(MA((O+H)/2,15),3*N),1);
LL:REF(LlV(MA((O+L)/2,15),3*N),1);
BSK:(HH/LL)*1000<2040;
QQ1:=CROSS(C,TOP) and BSK and C>B1 and C>HH;
PP1:=CROSS(MID,C)||(C<HHV(H,ENTERBARS+2)-ENTERPRICE*0.012);
QQ2:=CROSS(BOTTOM,C) and BSK and C<B1 and C<LL;
PP2:=CROSS(C,MID) OR (C>LLV(L,ENTERBARS+2)+ENTERPRICE*0.012);

IF HOLDING=0 and QQ1 THEN BUY(1,SS,MARKET);//多空持仓为0并且最高价与前K线HH金叉,做多10手。
IF HOLDING=0 and  QQ2 THEN BUYSHORT(1,SS,MARKET);//多空持仓为0并且最低价与前K线LL死叉,做空10手。



IF HOLDING>0 and PP1 THEN SELL(1,HOLDING,MARKET);//多头持仓大于0并且满足M点止损条件,多单全平。
IF HOLDING<0 and PP2 THEN SELLSHORT(1,HOLDING,MARKET);//空头持仓大于0并且满足M点止损条件,空单全平。

--  作者:FireScript
--  发布时间:2020/1/14 10:59:48
--  
 这个不是后台代码的。这个是图表程序化的代码。后台程序化和图表程序化交易代码是区分开来的。
--  作者:zj564335
--  发布时间:2020/1/14 11:02:47
--  
应该怎么修改。
--  作者:FireScript
--  发布时间:2020/1/14 11:09:40
--  
 主要是和下单相关的语句有差异:

QQ1:=CROSS(C,TOP) and BSK and C>B1 and C>HH;
PP1:=CROSS(MID,C)||(C<HHV(H,tENTERBARS+2)-tENTERPRICE*0.012);
QQ2:=CROSS(BOTTOM,C) and BSK and C<B1 and C<LL;
PP2:=CROSS(C,MID) OR (C>LLV(L,tENTERBARS+2)+tENTERPRICE*0.012);

IF TBUYHOLDINGEX(\'\',\'\',1)=0 and QQ1 THEN TBUY(1,SS,MKT);//多空持仓为0并且最高价与前K线HH金叉,做多10手。
IF TSELLHOLDINGEX(\'\',\'\',1)=0 and  QQ2 THEN TBUYSHORT(1,SS,MKT);//多空持仓为0并且最低价与前K线LL死叉,做空10手。



IF TBUYHOLDINGEX(\'\',\'\',1)>0 and PP1 THEN tSELL(1,TBUYHOLDINGEX(\'\',\'\',1),mkt);//多头持仓大于0并且满足M点止损条件,多单全平。
IF TSELLHOLDINGEX(\'\',\'\',1)>0 and PP2 THEN TSELLSHORT(1,TSELLHOLDINGEX(\'\',\'\',1),mkt);//空头持仓大于0并且满足M点止损条件,空单全平。


这样改下试下。

--  作者:zj564335
--  发布时间:2020/1/14 11:12:51
--  
好的,我现在试试
--  作者:zj564335
--  发布时间:2020/1/14 13:35:39
--  
修改了这个开仓条件的语法后,在公式测试系统
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20200114133517.png
图片点击可在新窗口打开查看
面,就测试不出任何数据,是空白的数据,为什么会这样
--  作者:FireScript
--  发布时间:2020/1/14 13:52:47
--  
 后台代码需要单独在后台这里回测的。后台程序化回测和交易都是有别于图表程序化的。

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看

通常新手我们建议从图表入门,熟悉之后再操作后台程序化比较好。因为后台不如图表直观,图表比较直接 回测也方便。

--  作者:zj564335
--  发布时间:2020/1/14 15:17:15
--  
好的