查看: 2458|回复: 14
打印 上一主题 下一主题

[公式] 易盛做的连续挂单交易模块,易盛源码

[复制链接]
跳转到指定楼层
1
发表于 2013-3-19 16:42:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 双木成林 于 2013-5-28 12:57 编辑

一直用市价委托做程序化,觉得不划算,遂做了一个连续追踪挂价的策略,不敢独享,不过目前还没投入使用,过几天测试一下。有不足的地方,希望和大家探讨。

fTradeSta 交易状态,大于零为多头状态,可根据自己的程序自定义
nOrderNo 存储订单号
fVol 下单量

//开多
If(fTradeSta[1]>0 && A_SellPosition==0 && A_BuyPosition<fVol){ //前一根k线收盘触发买多,且当前买仓小于6
  nOrderNo = A_LastOrderNO(); //获取最近订单号
  
  If(A_FirstQueueOrderNo!=-1 && A_OrderPrice(nOrderNo) < Q_BidPrice) //如果有挂单,&&订单价格不等于买1价
    CancelAllOrders; //撤单
   
  If(A_FirstQueueOrderNo==-1) //当前没有挂单
   Buy(fVol-A_BuyPosition,Q_BidPrice);
}

//平多
If(fTradeSta[1]<=0 && A_BuyPosition>0){ //前一根k线触发平多,且买仓大于0
  nOrderNo = A_LastOrderNO(); //获取最近订单号
  
  If(A_FirstQueueOrderNo!=-1 && A_OrderPrice(nOrderNo) > Q_AskPrice) //如果有挂单,&&订单价格不等于卖1价
    CancelAllOrders;
   
  If(A_FirstQueueOrderNo==-1) //如果没有挂单
   Sell(0,Q_AskPrice);
}
//开空
If(fTradeSta[1]<0 && A_BuyPosition==0 && A_SellPosition<fVol){ //前一根k线触发开空,且空单小于6
  nOrderNo = A_LastOrderNO(); //获取最近订单号
  
  If(A_FirstQueueOrderNo!=-1 && A_OrderPrice(nOrderNo) > Q_AskPrice) //如果有挂单,&&订单价格不等于卖1价
    CancelAllOrders;
   
  If(A_FirstQueueOrderNo==-1) //如果没有挂单
   SellShort(fVol-A_SellPosition,Q_AskPrice);
}
  
//平空
If(fTradeSta[1]>=0 && A_SellPosition>0){ //前一根k线触发平空,且空单大于0
  nOrderNo = A_LastOrderNO(); //获取最近订单号
  
  If(A_FirstQueueOrderNo!=-1 && A_OrderPrice(nOrderNo) < Q_BidPrice) //如果有挂单,&&订单价格不等于买1价
    CancelAllOrders;
   
  If(A_FirstQueueOrderNo==-1)//如果没有挂单
   BuyToCover(0,Q_BidPrice);
}

评分

1

查看全部评分






2
 楼主| 发表于 2013-3-19 16:45:12 | 只看该作者
我目前是6手在做单,所以出现6的地方,是用来控制持仓的。本来想做成参数的,但是怕不小心改出问题。
3
发表于 2013-3-19 16:46:09 | 只看该作者
即会做交易  又会做程序的人  实在不多  楼主大才啊
4
 楼主| 发表于 2013-3-19 16:46:21 | 只看该作者
还有,这个不是交易策略,只是用来控制挂单的代码
5
 楼主| 发表于 2013-3-19 16:46:28 | 只看该作者
还有,这个不是交易策略,只是用来控制挂单的代码
6
 楼主| 发表于 2013-3-19 16:48:00 | 只看该作者
古浪 发表于 2013-3-19 16:46
即会做交易  又会做程序的人  实在不多  楼主大才啊

古浪过奖了,我是只菜鸟,和您差个十万八千倍啊。
7
发表于 2013-3-19 16:53:20 | 只看该作者
楼主真是人才啊
8
发表于 2013-3-24 17:41:47 | 只看该作者
牛人。。。。
9
发表于 2013-3-31 17:59:37 | 只看该作者
拿个小板凳,学习 ……
10
发表于 2013-4-1 01:08:29 | 只看该作者


请问楼主,测试的时候出现如图这个问题如何解决?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册入住  

x
11
发表于 2013-4-1 08:54:09 | 只看该作者
{:soso_e179:}
12
 楼主| 发表于 2013-4-20 21:54:29 | 只看该作者
满盘红 发表于 2013-4-1 01:08
请问楼主,测试的时候出现如图这个问题如何解决?

这个只是挂单部分的代码,是不能直接编译通过的,要结合策略使用,你如果有策略,可以把这部分代码加进去,然后修改成自己用的变量,应该就可以了。
13
发表于 2013-4-26 16:39:11 | 只看该作者

RE: 易盛做的连续挂单交易模块,易盛源码

请教楼主,怎样在您的这个挂单代码上加上开平仓策略,能否举一个简单的例子,非常感谢
14
 楼主| 发表于 2013-4-26 22:53:56 | 只看该作者
智麦套利 发表于 2013-4-26 16:39
请教楼主,怎样在您的这个挂单代码上加上开平仓策略,能否举一个简单的例子,非常感谢

比如一个上午9点开仓,下午2点55平仓的策略。

Params         
        //参数定义段

       
GlobalVars       
        //全局变量定义段;
        Integer nOrderNo; //此变量用来记录最近订单号

Vars               
        //局部变量定义段

        NumericSeries fOrderSta;//此变量用来记录策略的当前状态,0为空仓,小于零为卖持,大于零为卖持。也可将代码稍微改进,用来控制仓位。
       
       
Begin
        //策略执行区
        //上午9点开仓,下午2点55平仓
        if(currenttime>0.090000&&currenttime<0.145500)
                fOrderSta=1;
        else
                fOrderSta=0;
       
        //下单模块
       
        //开多
        If(fOrderSta[1]>0 && A_SellPosition==0 && A_BuyPosition<6){ //前一根k线收盘触发买多

,且当前买仓小于6
                nOrderNo = A_LastOrderNO(); //获取最近订单号
               
                If((nOrderNo != -1 && A_OrderPrice(nOrderNo) < Q_BidPrice) && //(如果有订单

,&&订单价格不等于买1价,&&后面)
                (A_OrderStatus(nOrderNo) == Enum_Queue || A_OrderStatus(nOrderNo) ==

Enum_PartDeal)) //(订单未成交,||部分成交)
                                CancelAllOrders; //撤单
                               
                If(nOrderNo == -1 || //如果没有订单
                A_OrderStatus(nOrderNo) == Enum_Invalid || //或订单无效
                A_OrderStatus(nOrderNo)== Enum_AllDeal || //或订单全部成交
                A_OrderStatus(nOrderNo)== Enum_Canceled) //或已经撤单
                        Buy(6-A_BuyPosition,Q_BidPrice);
        }
       
        //平多
        If(fOrderSta[1]<=0 && A_BuyPosition>0){ //前一根k线触发平多,且买仓大于0
                nOrderNo = A_LastOrderNO(); //获取最近订单号
               
                If((nOrderNo != -1 && A_OrderPrice(nOrderNo) > Q_AskPrice) && //(如果有订单

,&&订单价格不等于卖1价,&&后面)
                (A_OrderStatus(nOrderNo) == Enum_Queue || A_OrderStatus(nOrderNo) ==

Enum_PartDeal)) //(订单未成交,||部分成交)
                                CancelAllOrders;
                               
                If(nOrderNo == -1 || //如果没有订单
                A_OrderStatus(nOrderNo) == Enum_Invalid || //或订单无效
                A_OrderStatus(nOrderNo)== Enum_AllDeal || //或订单全部成交
                A_OrderStatus(nOrderNo)== Enum_Canceled) //或已经撤单
                        Sell(0,Q_AskPrice);
        }

        //开空
        If(fOrderSta[1]<0 && A_BuyPosition==0 && A_SellPosition<6){ //前一根k线触发开空,且

空单小于6
                nOrderNo = A_LastOrderNO(); //获取最近订单号
               
                If((nOrderNo != -1 && A_OrderPrice(nOrderNo) > Q_AskPrice) && //(如果有订单

,&&订单价格不等于卖1价,&&后面)
                (A_OrderStatus(nOrderNo) == Enum_Queue || A_OrderStatus(nOrderNo) ==

Enum_PartDeal)) //(订单未成交,||部分成交)
                                CancelAllOrders;
                               
                If(nOrderNo == -1 || //如果没有订单
                A_OrderStatus(nOrderNo) == Enum_Invalid || //或订单无效
                A_OrderStatus(nOrderNo) == Enum_AllDeal || //或订单全部成交
                A_OrderStatus(nOrderNo) == Enum_Canceled) //或已经撤单
                        SellShort(6-A_SellPosition,Q_AskPrice);
        }
               
        //平空
        If(fOrderSta[1]>=0 && A_SellPosition>0){ //前一根k线触发平空,且空单大于0
                nOrderNo = A_LastOrderNO(); //获取最近订单号
               
                If((nOrderNo != -1 && A_OrderPrice(nOrderNo) < Q_BidPrice) && //(如果有订单

,&&订单价格不等于买1价,&&后面)
                (A_OrderStatus(nOrderNo) == Enum_Queue || A_OrderStatus(nOrderNo) ==

Enum_PartDeal)) //(订单未成交,||部分成交)
                                CancelAllOrders;
                               
                If(nOrderNo == -1 || //如果没有订单
                A_OrderStatus(nOrderNo) == Enum_Invalid || //或订单无效
                A_OrderStatus(nOrderNo)== Enum_AllDeal || //或订单全部成交
                A_OrderStatus(nOrderNo)== Enum_Canceled) //或已经撤单
                        BuyToCover(0,Q_BidPrice);
        }

       
End


15
发表于 2013-4-30 21:05:20 | 只看该作者
能多点这种帖易盛程序化会更快普及
您需要登录后才可以回帖 登录 | 注册入住  

本版积分规则

易家网  ©2015-2023  郑州期米信息技术有限公司版权所有  豫公网安备 41010502005136号 豫ICP备16010300号