投资者咨询:关于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);
}
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