想在onorder域里进行一些业务运算同时打印一些变量,不知道为什么打印不出来,请问下什么原因呢?
比如以下一段代码,红色的打印语句在控制台里就是不打印:
Params
Numeric FastLength(5);// 短期指数平均线参数
Numeric SlowLength(20);// 长期指数平均线参数
Vars
Series<Numeric> AvgValue1;
Series<Numeric> AvgValue2;
Global Numeric a;
Global Numeric b;
Global Numeric buynum;
Global Numeric sellshortnum;
Events
OnReady()
{
SetBackBarMaxCount(1+Max(FastLength,SlowLength));
Range[0:DataSourceSize() - 1]
{
setPlotOption("MA1", "begin-bar", FastLength);
setPlotOption("MA2", "begin-bar", SlowLength);
}
}
OnOrder(OrderRef ord)
{
Print("OnOrder triggered: Order ID: " + Text(ord.orderid));
print("ordertext"+text(ord));
if(ord.side==Enum_Buy and ord.combOffset==Enum_entry)
{
a = ord.orderid;
print("buytime:"+text(time));
print("a:"+text(a));
buynum=buynum+1;
}
if(ord.side==Enum_Sell and ord.combOffset==Enum_entry)
{
b = ord.orderid;
print("sellshorttime:"+text(time));
print("b:"+text(b));
sellshortnum=sellshortnum+1;
}
}
OnBar(ArrayRef<Integer> indexs)
{
AvgValue1 = AverageFC(Close,FastLength);
AvgValue2 = AverageFC(Close,SlowLength);
PlotNumeric("MA1",AvgValue1);
PlotNumeric("MA2",AvgValue2);
print("a:"+text(a));
print("b:"+text(b));
print("buynum:"+text(buynum));
print("sellshortnum:"+text(sellshortnum));
If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1])
{
Buy(0,Open);
}
If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1])
{
SellShort(0,Open);
}
}
1.先看位置
Print("OnOrder triggered: Order ID: " + Text(ord.orderid));
你写在了onorder底层,那么没打印说明什么? 说明onorder没有触发
谢谢,操作源搞错了
不打印的原因和简单,就是没执行。
没执行的原因,就是没驱动
没驱动的原因,就是没有发生符合事件域的事件
你写在onorder里的print没执行,那就说明没执行onorder域
谢谢老师,但是为什么没有触发呢?比如if(ord.side==Enum_Buy and ord.combOffset==Enum_entry),这个IF写法不能认为是筛选到买入委托吗?我对照着帐户的成交记录,有买入开仓,那就是上面这个写法不对,是哪里写得不对呢。谢谢
你确认发生了能驱动onorder域的事件了吗?
刘老师,的确是自己搞错了操作源。谢谢