以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  求解 为什么历史测试成交里面没有开空单  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=11463)

--  作者:魔鬼-杀手
--  发布时间:2012/5/3 14:49:36
--  求解 为什么历史测试成交里面没有开空单

MA1:=MA(OPEN,20);                                                                                                                                                                                                                                                     
IF HOLDING = 0 AND MA1 > REF(MA1,1) AND REF(MA1,1) > REF(MA1,2) AND REF(MA1,2) > REF(MA1,3) THEN                                                                                                                                                                           
    BS_DIR := 1;                                                                                                                                                                                                                                                         
IF HOLDING = 0 AND MA1 < REF(MA1,1) AND REF(MA1,1) < REF(MA1,2) AND REF(MA1,2) < REF(MA1,3) THEN                                                                                                                                                                           
    BS_DIR := -1;                                                                                                                                                                                                                                                        
PBS_DIR := 0;                                                                                                                                                                                                                                                         
IF HOLDING > 0 AND CLOSE < ENTERPRICE-10 THEN                                                                                                                                                                                                                          
 PBS_DIR := 1;                                                                                                                                                                                                                                                        
IF HOLDING < 0 AND CLOSE> ENTERPRICE+10 THEN                                                                                                                                                                                                                           
 PBS_DIR := -1;                     


--  作者:魔鬼-杀手
--  发布时间:2012/5/3 14:50:54
--  
IF TIME() > 090000 AND  TIME() < 144500 THEN BEGIN                                                                                                                                                                                                                     
    IF PBS_DIR = 1 THEN BEGIN                                                                                                                                                                                                                                          
        SELL(HOLDING > 0, HOLDING, MARKET);                                                                                                                                                                                                                            
        PBS_DIR := 0;                                                                                                                                                                                                                                                  
    END;                                                                                                                                                                                                                                                               
    IF PBS_DIR = -1 THEN BEGIN                                                                                                                                                                                                                                         
        SELLSHORT(HOLDING < 0, HOLDING, MARKET);                                                                                                                                                                                                                       
        PBS_DIR := 0;                                                                                                                                                                                                                                                  
    END;                                                                                                                                                                                                                                                                
      

--  作者:魔鬼-杀手
--  发布时间:2012/5/3 14:51:19
--  
    IF BS_DIR = 1 THEN BEGIN                                                                                                                                                                                                                                           
        BUY(HOLDING = 0, 1, MARKET);                                                                                                                                                                                                                                   
        BS_DIR := 0;                                                                                                                                                                                                                                                   
    END;                                                                                                                                                                                                                                                               
    IF BS_DIR = -1 THEN BEGIN                                                                                                                                                                                                                                          
        BUYSHORT(HOLDING = 0, -1, MARKET);                                                                                                                                                                                                                             
        BS_DIR := 0;                                                                                                                                                                                                                                                   
    END;                                                                                                                                                                                                                                                               
 END;                                                                                                                                                                                                                                                                  

--  作者:魔鬼-杀手
--  发布时间:2012/5/3 14:51:32
--  
IF TIME() >= 140000 THEN BEGIN                                                                                                                                                                                                                                         
    SELL(HOLDING > 0, HOLDING, MARKET);                                                                                                                                                                                                                                
    SELLSHORT(HOLDING < 0, HOLDING, MARKET);                                                                                                                                                                                                                           
END;                                 
--  作者:魔鬼-杀手
--  发布时间:2012/5/3 14:52:46
--  
是不是写法有问题!请人工人员指点一下
--  作者:魔鬼-杀手
--  发布时间:2012/5/3 14:56:10
--  
是不是写法有问题!请工做人员指点一下
--  作者:just
--  发布时间:2012/5/3 15:08:18
--  
楼主所示代码没有什么问题, 猜测可能是你的变量永远不会等于-1造成的永远没有开空。还有就是楼主只有开仓语句 没有平仓语句,(只是收盘前平仓)图表程序化交易是不支持双向仓位同时持有的 故可能造成楼主的这种情况。
[此贴子已经被作者于2012-5-3 15:09:46编辑过]

--  作者:魔鬼-杀手
--  发布时间:2012/5/3 15:09:35
--  
麻烦帮忙修改一下
--  作者:just
--  发布时间:2012/5/3 15:17:34
--  
                                                 

IF BS_DIR = 1 THEN BEGIN                                                                                                                                                                                                                        sellshort(holding<0,0,market);                   
        BUY(HOLDING = 0, 1, MARKET);                                                                                                                                                                                                                                   
        BS_DIR := 0;                                                                                                                                                                                                                                                   
    END;                                                                                                                                                                                                                                                               
    IF BS_DIR = -1 THEN BEGIN                                                                                                                                                                                                                   sell(holding>0,0,market);                       
        BUYSHORT(HOLDING = 0, -1, MARKET);                                                                                                                                                                                                                             
        BS_DIR := 0;                                                                                                                                                                                                                                                   
    END;                                                                                                               

END;               


--  作者:魔鬼-杀手
--  发布时间:2012/5/3 15:18:51
--  
不会出现这问题吧!我的意思有持仓就不开仓了!