天软金融分析.NET函数大全 > 算法交易支撑函数 > 算法交易开发类说明

Tsorder2开发范例    

  • 案例:
      开发一个算法交易策略,每间隔5秒以买一价买入100股,同时将小于买一价的未成交委托单做撤单处理。
    Type MyOrder=class(TsOrder2)
      Function init();override;
      Begin
       //订单初始化,检查定单有效性

    if OrderData_['策略开始时间'] < today()+strtotime('9:30:00') then OrderData_['策略开始时间'] := today() + strtotime('9:30:00');
    if OrderData_['策略开始时间'] > today()+strtotime('11:30:00') and OrderData_['策略开始时间'] < today()+strtotime('13:00:00') then OrderData_['策略开始时间']:=today() + strtotime('13:00:00');
    if timeof(OrderData_['策略结束时间']) > strtotime('15:00:00') then OrderData_['策略结束时间'] := today() + strtotime('15:00:00');
    //获得总交易时间
    total_trade_seconds := class(TS_TradeManager).GetTradeSeconds(OrderData_['策略开始时间'],OrderData_['策略结束时间']);
       if total_trade_seconds <= 0 then Begin
         release('初始化失败(交易时间段错误)');
         return 0;
       end;
    return 1;
      End;
    Function DoOrder();virtual;//下单、撤单等
      Begin
       t:=now();
       if t >= OrderData_['策略结束时间'] then Begin //订单执行截止时间
         release('策略生命期到,强制结束算法策略');
         return;
       End;

    stkid := OrderData_ ['代码'];
    SetSysParam(pn_stock(),stkid);
    buy1_price := rd(10);//买一档价格

    //撤单(撤掉所有<买一价的子单)
    child_orders := GetOrders(4);//获取所有可撤单的子单
    for i:=0 to length(child_orders)-1 do Begin
    if strtofloat(child_orders[i][‘Price’]) < buy1_price then
    CancelOrder(child_orders[i][‘EntrustID’]);//子单撤单
    End;

    //下子单
    TOrder(‘B’,buy1_price,100,’test’);
    End;

    注:开发中cep不能设置断点进行调试,需要使用syslog,将相关信息打印出来,保存在TXT文档中。