关于RefSig_Price(Sig,N) (文华财经wh9)

投资者咨询:关于RefSig_Price(Sig,N) (文华财经wh9)
来源:文华财经  日期:2019-3-5 8:58
第一次开仓是底仓(不平仓),后面的开仓根据走势与前一次开仓价格的比例关系进行平仓
以下程序没有没有错误,怎么实际回测时每根K线都开平仓
If(Date==20180828)
{
         Buy((Money*0.2)/(170.5*MarginRatio*ContractUnit+Fee),170.5);   
}
If(Low<= RefSig_Price(Buy,1)*A ) 
    {
         Buy(SigVol(1), RefSig_Price(Buy,1)*A);       
     }
If( High>=RefSig_Price(Buy,2)*B ) 
    {
        Sell(SigVol(1), RefSig_Price(Buy,2)*B);   
     }
End

技术人员回复
日期:2019-3-5 9:11
 问题在于您模型可能底仓平仓了 

Vars

Numeric A;
Numeric B;
Setting
AddTimes:1000;
Begin
A=0.99;
B=1.01;

If(Date==20180828)
{
         Buy((Money*0.2)/(Close*MarginRatio*ContractUnit+Fee),Close);    
}
If(Low<= RefSig_Price(Buy,1)*A&&BKVol>0 )  
    {
         Buy(SigVol(1), RefSig_Price(Buy,1)*A);        
     }
If( High>=RefSig_Price(Buy,2)*B&&SigNum>=2 )  
    {
        Sell(SigVol(1), RefSig_Price(Buy,2)*B);    
     }
End
投资者咨询:关于RefSig_Price(Sig,N) (文华财经wh9)
来源:文华财经  日期:2019-3-5 8:58
 按你这修改后,实际回测时每根K线仍然都开平仓
技术人员回复
日期:2019-3-5 11:31
和您自己模型有关

上传全部源码以及测试合约周期,我们分析下
投资者咨询:关于RefSig_Price(Sig,N) (文华财经wh9)
来源:文华财经  日期:2019-3-5 8:58
 Params                   
    Numeric X1(9900);                           
    Numeric X2(10006);                                           
Vars
    NumericSeries A;               
    NumericSeries B;
Setting
AddTimes:1000;
Begin
    A= X1/10000;   
    B=X2/10000;
If(Date==20180828&&Time==0.1703)
{
         Buy((Money*0.2)/(170.5*MarginRatio*ContractUnit+Fee),170.5);   
}
If(Low<= RefSig_Price(Buy,1)*A &&BKVol>0) 
    {
         Buy(SigVol(1), RefSig_Price(Buy,1)*A);       
     }
If( High>=RefSig_Price(Buy,2)*B&&SigNum>=2 ) 
    {
        Sell(SigVol(1), RefSig_Price(Buy,2)*B);   
     }
End
模型加载在日胶指数上从2018年8月28日开始回测到2018年11月21日
问题出在If(Date==20180828)这一句,改成If(Date==20180828&&Time==0.1703)
但改过来后只开了一次仓,删掉If(Low<= RefSig_Price(Buy,1)*A &&BKVol>0) 这一句里的&&BKVol>0后开了多次仓,但没有一次平仓

 
技术人员回复
日期:2019-3-5 13:32
 您加载到是小周期,2楼默认是日线的,这么改下

 Params                    
    Numeric X1(9900);                            
    Numeric X2(10006);                                            
Vars
    NumericSeries A;                
    NumericSeries B;
Setting
AddTimes:1000;
Begin
    A= X1/10000;    
    B=X2/10000;
If(Date==20180828&&BKVol==0&&Time==0.1703)
{
         Buy((Money*0.2)/(170.5*MarginRatio*ContractUnit+Fee),170.5);    
}
If(Low<= RefSig_Price(Buy,1)*A&&BKVol>0)  
    {
         Buy(SigVol(1), RefSig_Price(Buy,1)*A);        
     }
If( High>=RefSig_Price(Buy,2)*B&&SigNum>=2 )  
    {
        Sell(SigVol(1), RefSig_Price(Buy,2)*B);    
     }
End