以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  [原创]轮询交易,信号反复,导致多次开平。我参考了个程序,看看能否行?  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=60624)

--  作者:wang550099
--  发布时间:2014/1/4 20:45:46
--  [原创]轮询交易,信号反复,导致多次开平。我参考了个程序,看看能否行?

WARNING_DISABLE:4;
ss:=1; //手数
extgbdataset(\'t1_position\',0);
//0表示没有仓位,1表示持有多头, -1表示持有空头
extgbdataset(\'t1_holding\',0);
//0表示没有仓位,>0表示持有多头, <0表示持有空头
extgbdataset(\'t1_enterbarpos\',0);//记录其开仓的K线

maa:ema(c,10);
bpk:=cross(c,maa);
spk:=cross(maa ,c);
//非最后一根K线退出
if not(islastbar) or workmode<>1 then exit;

//如果当是最后一根k线,执行
IF islastbar and  time<151000 then begin

 // 如果最后一根k线发生过开仓信号,则那一根k线不再交易
 if extgbdata(\'t1_enterbarpos\') = barpos then begin
  goto continueline ;
 end
 
//没有持仓状态
if extgbdata(\'t1_position\')=0  and extgbdata(\'t1_holding\')=0 then begin
     if  bpk then begin
      
        buy(1,ss,c);
        extgbdataset(\'t1_position\',1);
        extgbdataset(\'t1_holding\',ss);
        extgbdataset(\'t1_enterbarpos\',barpos);
        goto continueline ;
      
      end

      if spk then begin
     
         buyshort(1,ss,c);
         extgbdataset(\'t1_position\',-1);//程序化交易 www.cxh99.com
         extgbdataset(\'t1_holding\',-ss);
         extgbdataset(\'t1_enterbarpos\',barpos);
         goto continueline ;
       
      end
end//没有持仓状态
   
//持有仓位状态
   //持有空头
if bpk and extgbdata(\'t1_position\')=-1   and  extgbdata(\'t1_holding\')<0 then begin

       sellshort(1,ss,c);
       buy(1,ss,c);
       extgbdataset(\'t1_position\',1);
       extgbdataset(\'t1_holding\',ss);
       extgbdataset(\'t1_enterbarpos\',barpos);
       goto continueline ;
     
end
    //持有多头
if spk and extgbdata(\'t1_position\')=1    and  extgbdata(\'t1_holding\')>0  then begin

        sell(1,ss,c);
        buyshort(1,ss,c);
        extgbdataset(\'t1_position\',-1);
        extgbdataset(\'t1_holding\',-ss);
        extgbdataset(\'t1_enterbarpos\',barpos);
        goto continueline ;
      
end
END//if  ISLASTBAR

if  time>=151300 then begin

             sell(extgbdata(\'t1_holding\')>0,ss,c);
             sellshort(extgbdata(\'t1_holding\')<0,ss,c);
             extgbdataset(\'t1_position\',0);
             extgbdataset(\'t1_holding\',0);
                    
end

continueline@ 资产:tasset,linethick0;
position:=extgbdata(\'t1_position\');
t1holding:=extgbdata(\'t1_holding\');
debugfile(\'d:\\debug\\803555.txt\',\'position=%.0f\' ,position) ;
debugfile(\'d:\\debug\\803555.txt\',\'t1holding=%.0f\' ,t1holding) ;

 

 

以上代码能在金子塔里测试吗?我用了,不能出信号。


--  作者:王锋
--  发布时间:2014/1/4 22:14:59
--  
要学会自己测试+调试
--  作者:wang550099
--  发布时间:2014/1/6 8:14:58
--  

这也算是回答吗?


--  作者:RogarZ
--  发布时间:2014/1/6 8:48:06
--  

extgbdataset 函数永远只有1个值  一般用于后台,不能进行测试。

从你的注册时间来看,您可能并没有完整的学习过金字塔的程序。

 

随便拿一套别人的东西过来硬套是不行的。