A_SendOrderEx发出订单,A_SendOrderEx(Enum_Sell,Enum_Entry,Lots,Q_Last-MinDiff*SellJs,Sid )
请问我如何通过Sid这个数组获取上述订单编号(我知道Ord.ORDERID可以),感谢老师!!!
你这个问题搞了几天了?
sid是获得报单索引号
如何取得报单报单编号
有函数根据索引号取报单的所有信息
帮助很详细的
Params
//此处添加参数
Numeric P1(30);//止盈点数
Numeric P2(10);//止损点数
Vars
//此处添加变量
Global Array<Integer> Oid;//开仓单号
Global Array<Integer> Pid;//止盈单号
Global Array<Integer> Lid;//止损单号
Global Numeric Con1;//Position是系统关键字
//Global Numeric A;
Global Numeric MinDiff;////最小变动价/一跳价
Global Numeric PPP;//基准价
Events
//此处实现事件函数
OnInit()
{
Con1=0;
//A=0;
PPP=0;
}
OnReady()
{
MinDiff=PriceScale*MinMove;//最小变动价/一跳价
}
OnOrder(OrderRef Ord)//委托更新事件
{
IF (Ord.status==Enum_FILLED AND Ord.ORDERID==Oid[0])//开仓单(多)已成交
{
A_SendOrderEx(Enum_Sell,Enum_Exit,Ord.volume,Ord.price+MinDiff*P1,Pid);//发出止盈单
PPP=Ord.price;//保存成交价,后面计算止损价时要用
}
ELSE IF (Ord.status==Enum_Canceled AND Ord.ORDERID==Pid[0])
{
A_SendOrderEx(Enum_Sell,Enum_Exit,Ord.volume,Ord.price-MinDiff*P2,Lid);//发出止损单
}
ELSE IF (Ord.status==Enum_FILLED AND Ord.ORDERID==Pid[0] )//止盈单成交
{
//AddTradeFlag(Enum_Strategy_Finished);
Con1=0;//与上一行命令同功能:结束程序或重新开始程序
}
ELSE IF (Ord.status==Enum_FILLED AND Ord.ORDERID==Lid[0] )//止损单成交
{
//AddTradeFlag(Enum_Strategy_Finished);
Con1=0;//与上一行命令同功能:结束程序或重新开始程序
}
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)//BAR更新事件
{
IF (BarStatus==2)
{
IF (Con1==0)
{
BOOL RET=A_SendOrderEx(Enum_Buy,Enum_Entry,1,Q_LowerLimit,Oid );
IF (RET=TRUE)
{
Con1=1;
}
Print("Oid="+TEXT(Oid[0]));
}
ELSE IF (Con1==1 AND C<PPP-MinDiff*P2)
{
A_DeleteOrder(Pid[0]);//撤止盈单
//Con1=0;
}
//A=A+1;
}
}
都是按你们的教学视频学的啊,我就想知道下面这一行命令是什么意思?
IF (Ord.status==Enum_FILLED AND Ord.ORDERID==Oid[0])//开仓单(多)已成交
我分别打印Ord.ORDERID和Oid[0],前者显示订单编号,后者显示“0”,为什么呢?
差别是:我是加载在策略里进行的,教学视频是加载在K线上运行的。难道是这个原因?
理解老师们都很忙,因为提问的学生太多。
但是,我的上一个帖子你们都做了测试了,不妨再花点时间帮我彻底解决这个问题。
我们都有一个共同的目的:建设好TB系统。你们研发维护并教学,我们使用试错并反馈。高效的沟通当然必不可少
但是,因为对TB系统的理解存在较大差异,沟通当然是不太顺畅的,建议开启付费视频指导模式(就像家电上门维修一样)。
或者,直接在社区直接开通语音/视频传送模式,像QQ或微信一样。无极易就有这样的QQ群,感觉沟通效率应该更高。
你说:帮助很详细的
在哪里?你可能觉得我这一问很弱智,但是我就像农村小孩第一次到了大上海,眼前无路😭