- 精华
- 0
- 在线时间
- 4 小时
- UID
- 292332
- 积分
- 2
- 帖子
- 1
- 阅读权限
- 10
- 注册时间
- 2020-5-25
- 最后登录
- 2020-6-21
- 精华
- 0
- UID
- 292332
- 积分
- 2
- 帖子
- 1
- 主题
- 1
- 阅读权限
- 10
- 注册时间
- 2020-5-25
- 最后登录
- 2020-6-21
|
- //------------------------------------------------------------------------
- // 简称: fuckinday
- // 名称: 高频盘口
- // 类别: 公式应用
- // 类型: 用户应用
- // 输出: QQ群:1077343160
- //------------------------------------------------------------------------
- Vars
- Global Integer i;
- Numeric Lots; //定义参数,下单手数
- Numeric MinPoint; //定义参数
- Numeric Lost; //定义参数,止损单位
- Numeric Win; //定义参数,止盈单位
- Numeric CurDate; //定义参数,当前日期
- Numeric CurTime; //定义参数,当前时间
- Numeric Bprice; //定义参数,多头持仓均价
- Numeric Sprice; //定义参数,多头持仓均价
- Numeric New_1; //定义参数,最新价
- Global Numeric High_1; //定义参数,最高价
- Bool CONQC; //定义参数
- Numeric MinP; //定义参数,最小变动价位
-
- Bool BKID;
-
- Series<Numeric> BidPrice;
- Series<Numeric> AskPrice;
- Series<Numeric> TickVolum;
- Global Numeric TickCounter(0);
- Global Numeric STR0; //定义全局变量
- Global Numeric STR1; //定义全局变量
- Events
- OnInit()
- {
- //订阅深度行情,目前只有公式订阅的深度行情会触发 OnTick 事件
- //SubscribeBar("DCE.a2009","10s", SystemDateTime());
- }
- OnBar(ArrayRef<Integer> indexs)
- {
- If(!QuoteDataExist())
- {
- Commentary("行情无效");
- Return;
- }
-
- Lots = 2; // 下单手数
- Minpoint = 2; //当合约价格上涨2个最小变动价位
- Lost = 3; //止损3个最小变动价位
- Win = 10; //止盈10个最小变动价位
-
- New_1 = Q_Last();//获取当前合约最新价
- Bprice = A_BuyAvgPrice(); //取得持仓栏中该合约多头持仓均价
- Sprice = A_SellAvgPrice();
-
- CurDate = CurrentDate(); // 获取当前日期
- CurTime = CurrentTime(); // 获取当前时间
-
- MinP = MinMove*PriceScale; //最小变动价位
-
- BidPrice = Q_BidPrice();
- AskPrice = Q_AskPrice();
-
- TickVolum = Q_TotalVol();
-
- // 收盘前30秒清仓
- CONQC = ((HourFromDateTime( CurDate + CurTime ) == 22 && MinuteFromDateTime( CurDate + CurTime ) == 59) || (HourFromDateTime( CurDate + CurTime ) == 14 && MinuteFromDateTime( CurDate + CurTime ) == 59) || ( HourFromDateTime( CurDate + CurTime ) == 10 && MinuteFromDateTime( CurDate + CurTime ) == 14 ) || ( HourFromDateTime( CurDate + CurTime ) == 11 ) && MinuteFromDateTime(CurDate + CurTime ) == 29 ) && SecondFromDateTime(CurDate + CurTime ) > 30;//收盘前30秒
- If (CONQC)
- {
- Commentary("CONQC" + Text(1));
- }
- Commentary("STR1:" + Text(STR1));
- If (STR1 == 0 &&(CONQC == True))//满足在收盘前30秒内
- {
- Commentary("收盘前30秒清仓");//输出"收盘前30秒清仓"
- If (A_GetOpenOrderCount()>0)
- {
- A_DeleteOrder();
- }
- if(A_BuyPosition()>0)
- {
- A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition(),BidPrice); //以买一价清仓
- }
-
- if(A_SellPosition()>0)
- {
- A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition(),AskPrice); //以卖一价清仓
- }
- STR0=0;
- STR1=1;
- Return;
- }
- Commentary("开仓价格:"+"---"+Text(CurTime) + "---"+ Text(A_BuyPosition()) + "...." + Text(BidPrice) + "..."+Text(TickVolum));
- TickCounter= TickCounter + 1;
- If (TickCounter >= 4) // 数据保存完成
- {
- Commentary("STR0:"+Text(STR0) + "--->"+Text(BidPrice[3]) + "---"+Text(BidPrice[2]) + "---"+Text(BidPrice[1]) + "---"+Text(BidPrice[0]));
- //连续3次当笔TICK的买一价都大于上一笔TICK的买一价,并且最新一笔的成交量大于上一笔TICK的成交量,对价做多
- If (STR0 == 0 && BidPrice[3] < BidPrice[2] && BidPrice[2] < BidPrice[1] && BidPrice[1] < BidPrice[0] && CONQC != True) //连续3次当笔TICK的买一价都大于上一笔TICK的买一价,并且不在收盘前30秒内
- {
- Commentary("TickVolum--->:"+Text(TickVolum[2]) + "---"+Text(TickVolum[1]) + "---"+Text(TickVolum[0]));
- If ( TickVolum[1] - TickVolum[2]< TickVolum[0] - TickVolum[1] )//最新一笔的成交量大于上一笔TICK的成交量
- {
- Commentary("连续3次当笔TICK的买一价都大于上一笔TICK的买一价");//输出"连续3次当笔TICK的买一价都大于上一笔TICK的买一价"
- BKID=A_SendOrder(Enum_Buy,Enum_Entry,Lots,AskPrice); //以卖一价买入Lots手仓位
- STR0=1;
- STR1=0;
- }
- }
- //当合约价格上涨2个最小变动价位,加仓1手
- If (STR0 == 1 && A_BuyPosition() == Lots && CONQC != True)//委托索引BKID这笔委托单已经成交,并且不在收盘前30秒内
- {
- If ( New_1 - Bprice> Minpoint * MinP)//最新价与BKID这笔委托单的成交价差了2个最小变动价位
- {
- Commentary("当合约价格上涨2个最小变动价位,加仓1手");//输出"当合约价格上涨2个最小变动价位,加仓1手"
- BKID=A_SendOrder(Enum_Buy,Enum_Entry,1, AskPrice); //以卖一价加1手仓
- STR0=2;
- STR1=0;
- }
- }
- If (STR0 == 2 && A_BuyPosition() == Lots+1 )//委托索引BKID这笔委托单已经成交
- {
- STR0=1;
- }
- }
-
- //止盈10个最小变动价位
- //止损3个最小变动价位
- If ( Bprice - New_1>= Lost * MinP || New_1 - Bprice >= Win * MinP)//最新价跌至开仓价下3个价位止损,或者超过开仓价10个价位止盈
- {
- If (STR0 != 0 && A_BuyPosition() > 0 )//持有多仓
- {
- Commentary("止盈止损");//输出"止盈止损"
- A_SendOrder(Enum_Sell,Enum_Exit, A_BuyPosition(),BidPrice); //以买一价止盈止损
- STR0=0;
- }
- }
-
- Commentary("New_1>>" + Text(New_1) + " High_1>>"+Text(High_1));
- //当持仓手数超过了5手,并且最新价格超过了今天的最高价,对价平仓
- If (STR0 != 0 && A_BuyPosition() > 5 && New_1 > High_1) // 多头持仓超过5手,最新价格超过了今天的最高价
- {
- Commentary("当持仓手数超过了5手,并且最新价格超过了今天的最高价,对价平仓");//输出"当持仓手数超过了5手,并且最新价格超过了今天的最高价,对价平仓"
- A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition(),BidPrice); //以买一价平多仓
- STR0=0;
- }
-
- High_1 = Q_High();
- }
复制代码 |
|