以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请教交易匹配信号却不交易的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=173567)

--  作者:Hxpj
--  发布时间:2019/12/16 14:46:01
--  请教交易匹配信号却不交易的问题



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

如上图,在图表中回测,多空交替进行交易,做多做空的指标都匹配上,图表中也可以看到有做空的交易。但是为何会出现如上图,空的指标匹配上了,却不进行交易,交易代码如下,请老师指教:


ORDVOL:=1;
   
IF CD_BUY_LONG then 
   BEGIN  
   sellshort(holding<0,holding,market); //周期均线多头排列,则平空开多
   开多:buy(holding=0,ORDVOL,MARKET);
   END

IF CD_SELL_LONG then 
   BEGIN
   平多:SELL(holding>0,holding,market); //多头止盈
   END 
IF CD_BUY_SHORT then  
   BEGIN
   SELL(HOLDING>0,holding,MARKET);//周期均线空头排列,则平多开空
   开空:BUYSHORT(HOLDING=0,ORDVOL,MARKET);
   END 
IF CD_SELL_SHORT then   //空头止盈
   BEGIN
   平空:SELLSHORT(holding<0,HOLDING,MARKET);
   END 


--  作者:FireScript
--  发布时间:2019/12/16 15:03:00
--  
 给出完整代码。否则我没法判断的。而且你这个绘制图形的条件和开仓条件未必就是一样的。
--  作者:Hxpj
--  发布时间:2019/12/16 15:35:23
--  

开多单和止盈

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

开空单和止盈


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

是根据绘图的条件,设定开多单和开空单,不是完全没有,感觉是丢信号一样。

//看多指标
min_GA_Long:=#GMMAPower.X3;
5min_GA_Long:=STKINDI(\'\',\'GMMAPower.X3\',0,2,0);
15min_GA_Long:=STKINDI(\'\',\'GMMAPower.X3\',0,3,0);
60min_GA_Long:=STKINDI(\'\',\'GMMAPower.X3\',0,5,0);
3ZQGZ_LONG:=5min_GA_Long and 15min_GA_Long and 60min_GA_Long;
CD_VOL_LONG1:=#黄金量柱.倍量#=1;
CD_VOL_LONG2:=#黄金量柱.倍量#=1 and #黄金量柱.梯量#=1;
CD_VOL_LONG:=CD_VOL_LONG1 or CD_VOL_LONG2;
CD_MACD1:=#MACD3.X_6#>0;//DIF值
CD_MACD2:=#MACD3.MACD#>0;//MACD值
CD_MACD3:=#MACD3.X_6#>=REF(#MACD3.X_6#,1);
CD_MACD4:=#MACD3.X_7#>=REF(#MACD3.X_7#,1);
CD_MACD_LONG:=CD_MACD1 AND CD_MACD2 and (CD_MACD3 and CD_MACD4);
//开多单条件
CD_BUY_LONG:=3ZQGZ_LONG AND CD_VOL_LONG AND CD_MACD_LONG;
//看多止盈指标
CD_MACD_DIF:=#MACD3.X_6#<REF(#MACD3.X_6#,1);
CD_MACD_DEA:=#MACD3.X_7#<REF(#MACD3.X_7#,1);
CD_MACD_LONG_SELL:=CD_MACD_DIF AND CD_MACD_DEA;
CD_JG:=(#GMMAPower.MA1#<#GMMAPower.MA2# or #GMMAPower.MA1#<#GMMAPower.MA3#) or (REF(#GMMAPower.VAR6#,2) > #GMMAPower.NOTEXT20
CD_SELL_LONG:=CD_JG;

//看空指标
min_GA_short:=#GMMAPower.X4#;
5min_GA_short:=STKINDI(\'\',\'GMMAPower.X4\',0,2,0);
15min_GA_short:=STKINDI(\'\',\'GMMAPower.X4\',0,3,0);
60min_GA_short:=STKINDI(\'\',\'GMMAPower.X4\',0,5,0);
3ZQGZ_SHORT:=5min_GA_short and 15min_GA_short and 60min_GA_short;
CD_VOL_short:=#黄金量柱.倍量下跌#=1;
CD_MACD5:=#MACD3.MACD#<0;
CD_MACD6:=#MACD3.X_6#<REF(#MACD3.X_6#,1);
CD_MACD7:=#MACD3.X_7#<REF(#MACD3.X_7#,1);
CD_MACD_SHORT:=CD_MACD5 and CD_MACD6 AND CD_MACD7;
//开空仓
CD_BUY_SHORT:=3ZQGZ_SHORT and CD_VOL_short and CD_MACD_SHORT;
//看空止盈指标
CD_MACD_DIF_short:=#MACD3.X_6#>=REF(#MACD3.X_6#,1);
CD_MACD_DEA_short:=#MACD3.X_7#<REF(#MACD3.X_7#,1);
CD_MACD_DG1:=#MACD3.底拐#=1;
CD_MACD_DG2:=#MACD3.底拐2#=1;
CD_MACD_DG:=CD_MACD_DG1 or (CD_MACD_DG1 and CD_MACD_DG2);
CD_MACD_SHORT_SELL:=CD_MACD_DIF_short and CD_MACD_DEA_short or CD_MACD_DG;
CD_GJ_short:=CROSS(#GMMAPower.MA1#,#GMMAPower.MA2#);
CD_SELL_SHORT:=CD_MACD_SHORT_SELL or CD_GJ_short;

ORDVOL:=1;  
IF CD_BUY_LONG then 
   BEGIN  
   sellshort(holding<0,holding,market); //周期均线多头排列,则平空开多
   开多:buy(holding=0,ORDVOL,MARKET);
   END
IF CD_SELL_LONG then 
   BEGIN
   平多:SELL(holding>0,holding,market); //多头止盈
   END 
IF CD_BUY_SHORT then  
   BEGIN
   SELL(HOLDING>0,holding,MARKET);//周期均线空头排列,则平多开空
   开空:BUYSHORT(HOLDING=0,ORDVOL,MARKET);
   END 
IF CD_SELL_SHORT then   //空头止盈
   BEGIN
   平空:SELLSHORT(holding<0,HOLDING,MARKET);
   END 

--  作者:Hxpj
--  发布时间:2019/12/16 15:45:37
--  


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


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

在图表中都是能找到交易的,如上做空会出现匹配上信号,但不进行交易。

//看多指标
5min_GA_Long:=STKINDI(\'\',\'GMMAPower.X3\',0,2,0);
15min_GA_Long:=STKINDI(\'\',\'GMMAPower.X3\',0,3,0);
60min_GA_Long:=STKINDI(\'\',\'GMMAPower.X3\',0,5,0);
3ZQGZ_LONG:=5min_GA_Long and 15min_GA_Long and 60min_GA_Long;
CD_VOL_LONG1:=#黄金量柱.倍量#=1;
CD_VOL_LONG2:=#黄金量柱.倍量#=1 and #黄金量柱.梯量#=1;
CD_VOL_LONG:=CD_VOL_LONG1 or CD_VOL_LONG2;
CD_MACD1:=#MACD3.X_6#>0;
CD_MACD2:=#MACD3.MACD#>0;
CD_MACD3:=#MACD3.X_6#>=REF(#MACD3.X_6#,1);
CD_MACD4:=#MACD3.X_7#>=REF(#MACD3.X_7#,1);
CD_MACD_LONG:=CD_MACD1 AND CD_MACD2 and (CD_MACD3 and CD_MACD4);
//看多交易策略
CD_BUY_LONG:=3ZQGZ_LONG AND CD_VOL_LONG AND CD_MACD_LONG;
//看多止盈指标
CD_JG:=(#GMMAPower.MA1#<#GMMAPower.MA2# or #GMMAPower.MA1#<#GMMAPower.MA3#) or (REF(#GMMAPower.VAR6#,2) > #GMMAPower.NOTEXT20#);
CD_SELL_LONG:=CD_JG;
//看空指标
5min_GA_short:=STKINDI(\'\',\'GMMAPower.X4\',0,2,0);
15min_GA_short:=STKINDI(\'\',\'GMMAPower.X4\',0,3,0);
60min_GA_short:=STKINDI(\'\',\'GMMAPower.X4\',0,5,0);
3ZQGZ_SHORT:=5min_GA_short and 15min_GA_short and 60min_GA_short;
CD_VOL_short:=#黄金量柱.倍量下跌#=1;
CD_MACD5:=#MACD3.MACD#<0;//MACD值
CD_MACD6:=#MACD3.X_6#<REF(#MACD3.X_6#,1);//DIF升为无效
CD_MACD7:=#MACD3.X_7#<REF(#MACD3.X_7#,1); //DEA升为无效
CD_MACD_SHORT:=CD_MACD5 and CD_MACD6 AND CD_MACD7;
CD_BUY_SHORT:=3ZQGZ_SHORT and CD_VOL_short and CD_MACD_SHORT;
//看空止盈指标
CD_MACD_DIF_short:=#MACD3.X_6#>=REF(#MACD3.X_6#,1);//DIF升为有效值
CD_MACD_DEA_short:=#MACD3.X_7#<REF(#MACD3.X_7#,1);//DEA升为无效值
CD_MACD_DG1:=#MACD3.底拐#=1;
CD_MACD_DG2:=#MACD3.底拐2#=1;
CD_MACD_DG:=CD_MACD_DG1 or (CD_MACD_DG1 and CD_MACD_DG2);
CD_MACD_SHORT_SELL:=CD_MACD_DIF_short and CD_MACD_DEA_short or CD_MACD_DG;
CD_GJ_short:=CROSS(#GMMAPower.MA1#,#GMMAPower.MA2#);
CD_SELL_SHORT:=CD_MACD_SHORT_SELL or CD_GJ_short;
//交易策略
ORDVOL:=1;
IF CD_BUY_LONG then 
   BEGIN  
   sellshort(holding<0,holding,market); //周期均线多头排列,则平空开多
   开多:buy(holding=0,ORDVOL,MARKET);
   END

IF CD_SELL_LONG then 
   BEGIN
   平多:SELL(holding>0,holding,market); //多头止盈
   END 
IF CD_BUY_SHORT then  
   BEGIN
   SELL(HOLDING>0,holding,MARKET);//周期均线空头排列,则平多开空
   开空:BUYSHORT(HOLDING=0,ORDVOL,MARKET);
   END 
IF CD_SELL_SHORT then   //空头止盈
   BEGIN
   平空:SELLSHORT(holding<0,HOLDING,MARKET);
   END 

--  作者:yukizzc
--  发布时间:2019/12/17 19:40:15
--  

你用了跨周期函数了,这种你现在看到的信号和当时的信号是不一样的

比如我在一分钟上使用大盘日线红绿判断,早上大盘红了我有信号,下午发现大盘又绿了那么早上的一分钟的信号会全部消失掉的

解决方法是跨周期引用时候最后一个参数用-1,表示向前引用