老师好!
我在编写策略回测的时候,发现我的资金管理用money函数的时候,
在有很大的浮盈进行加仓多次的情况下, Money是负数,
如果Money是可用资金,为何它会是负数呢?
是因为持仓有浮亏,您入金就可以了
监控K线图下方-》出入金
没有浮亏,我在同一个k线上显示,代码如下
plotline("可用资金:",money,Yellow,NODRAW);
plotline("浮盈:",PositionProfit,Yellow,NODRAW);
money是负数,PositionProfit是正数, 这种情况是怎么发生的?
谢谢老师!
您是加载到主图上回测?正常不会出现这种情况的
您提供下源码和回测报告上半部分截图,我们加载看下
Data
//此处添加合约信息
Setting
//此处添加公式运行参数
AddTimes:1000;
//MultSig:0,0,2,5;//5秒钟计算一次行情,出信号立即下单,不进行复核,一根K线最多可以出现2个信号
ImPort
Params
Vars
Numeric var1;
Numeric ma1; //均线1
Numeric ma2; //均线2
NumericSeries K; //仓位计算
Begin
var1 = (High+Low)/2;
ma1 = Sma(var1,20,1) ;
ma2 = Sma(var1,240,1) ;
k=money*0.5/(ref(close,1)*ContractUnit*MarginRatio);
plotline("开仓K:",k,Yellow,NODRAW);
plotline("可用资金:",money,Yellow,NODRAW);
plotline("浮盈:",PositionProfit,Yellow,NODRAW);
plotline("当前占用:",MoneyTot-Money,Yellow,NODRAW);
plotline("开仓资金:",(money -PositionProfit)*0.5,Yellow,NODRAW);
PlotNumeric("ma1", ma1);
PlotNumeric("ma2", ma2);
//确定方向
// //------------------------信号发出------------------------//
// //信号发出
// if (1)
// {
//多头开仓:
If(MarketPosition == 0 && crossup(ma1,ma2))
{
BK(k,open);
}
//空头开仓:
If(MarketPosition == 0 && crossdown(ma1,ma2))
{
SK(k,open);
}
//持仓时计算是否需要平仓,或者加仓
if (MarketPosition!=0)
{
//多单平仓加仓
if (MarketPosition==1 )
{
//均线未转为多头前以最近一个2小时分形低点为反手点
IF(crossdown(ma1,ma2))
{
SPK(k,open);
}
//加仓
If(ref(isup,2)==1 && ref(isup,1)==1)
{
if (PositionProfit*0.5/(ref(close,1)*ContractUnit*MarginRatio)>1)
{
k=PositionProfit*0.5/(ref(close,1)*ContractUnit*MarginRatio); //浮盈的一半
BK(k,open);
}
}
}
//空单平仓加仓或反手
if (MarketPosition==-1 )
{
//反手点
IF(crossup(ma1,ma2))
{
BPK(k,open);
}
//加仓
If(ref(isdown,1)==1 && ref(isdown,2)==1)
{
if (PositionProfit*0.5/(ref(close,1)*ContractUnit*MarginRatio)>1)
{
k=PositionProfit*0.5/(ref(close,1)*ContractUnit*MarginRatio); //浮盈的一半
SK(k,open);
}
}
}
}
End


我们和相关同事核实一下,有结果在此回复
老师好
结果出来了吗?