开拓者期货期权程序化系统交易论坛
标题:
把文华9的盘口高频移植过来了,开始印钞票
[打印本页]
作者:
hyqh903200076
时间:
2020-6-18 17:41:48
标题:
把文华9的盘口高频移植过来了,开始印钞票
//------------------------------------------------------------------------
// 简称: 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();
}
复制代码
作者:
bb15047534846
时间:
2020-6-22 16:56:05
咋都没人回复呢
作者:
win5ms
时间:
2020-9-1 21:16:06
Global 无法识别的字符串
欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/)
Powered by Discuz! X2