追价算法交易模型确保成交

//————————————————————————

// 简称: zhuijia

// 名称: 追价算法交易模型确保成交

// 类别: 公式应用

// 类型: 用户应用

// 输出: v

//————————————————————————

//模型满足开仓条件发出委托信号后,因行情变动快,加之下单手数多等原因,可能无法快速成交。通过加载追价算法交易模型,可及时将没有成交的部分进行自动撤单,然后自动按照编写的价格方式重新发出委托,如果出现价差过大或长时间无法成交等情况则放弃本次交易。源码如下:

//追价示例

//Data

// data0:”m1709″;

Params

Numeric N(3);//下单手数

Numeric T_jiange(1); //时间间隔

bool KC(True); //开仓条件

Vars

NumericSeries NOW; //当前时间

Numeric dd;

//Global

Numeric BKFLG(0); //买开标志

Numeric BKDEL(0); //买开撤单标志

Numeric BKM(0); //买开委托手数

Numeric BKT(0); //买开委托发出时间

Numeric BKID(0); //买开委托

Begin

// 预处理模块
————————————————————————————————————————————————–

If(!CallAuctionFilter()) Return;// 集合竞价和小节休息过滤

If(Data0.o==InvalidNumeric )

{ Commentary(“判断数据是否存在”);

Return;//判断当前数据是都存在//判断数据是否有效&&Data0.vol[1]<1&&Data1.vol[1]<1

}

If(c==Q_UpperLimit() or c==Q_LowerLimit() ) //判断是否涨跌停//停板情况下不允许建仓;这句可以不用,不然和回测不符合,但是系统设置”防止自成交”打勾+监控器开启。

{ //提醒注意涨跌停

If(c==Q_UpperLimit()) Alert(data0.SymbolName+”涨停”);

If(data0.c==Q_LowerLimit()) Alert(data0.SymbolName+”跌停”);

Commentary(“涨停返回”);

Return;

}

If(AccountDataExist==true)

{

BKFLG=GetGlobalVar(0);

BKDEL=GetGlobalVar(1);

BKM=GetGlobalVar(2);

BKT=GetGlobalVar(3);

BKID=GetGlobalVar(4);

NOW = CurrentTime()*1000000; //当前时间

//———————-成交判断——————–//

if(BKFLG == 1) //如果有买开委托

{ PlotNumeric(“(NOW-BKT) “,(NOW-BKT) );

if(A_OrderStatus(BKID) == Enum_Filled) //如果买开委托成交

{

Commentary(“【做多:买开委托成交!】”);

BKFLG = 0; //买开标志归0

BKDEL = 0; //买开撤单标志归0

SetGlobalVar(0,BKFLG);

SetGlobalVar(1,BKDEL);

}

else if(A_OrderStatus(BKID) == Enum_Declared || A_OrderStatus(BKID) == Enum_FillPart) //如果买开委托全部挂单或部分成交

{

if((NOW-BKT) > T_jiange && BKDEL == 0) //如果时间间隔T秒,且未撤单

{

Commentary(“【做多:买开委托撤单!】”);

A_DeleteOrder(A_OrderContractNo(BKID)); //撤掉买开委托挂单

BKDEL = 1; //已发出撤掉买开委托挂单

SetGlobalVar(1,BKDEL);

if(A_OrderFilledLot(BKID) > 0) //如果买开委托部分成交

{

BKM = BKM – A_OrderFilledLot(BKID); //买开委托手数自减成交手数

SetGlobalVar(2,BKM);

}

if(BKM > 0) //如果买开委托手数大于0

{

Commentary(“【做多:买开委托追价!】”);

A_SendOrder(Enum_Buy,Enum_Entry,BKM,data0.Q_AskPrice+0*MinMove*PriceScale); //以对价发出买开委托手数的买开委托

BKT = NOW; //买开委托发出时间设为当前时间

SetGlobalVar(3,BKT);

}

}

BKDEL = 0; //买开撤单标志归0

}

SetGlobalVar(1,BKDEL);

}

//———————-委托处理——————–//

BKFLG=GetGlobalVar(0);

if(BKFLG == 0) //如果没有买开委托

{ PlotNumeric(“BKFLG”,BKFLG);

if(KC == True) //如果满足开仓条件

{

Commentary(“【做多:买开委托发出!】”);

BKM = N; //买开委托手数设为N手

A_SendOrder(Enum_Buy,Enum_Entry,BKM,data0.Q_BidPrice-50*MinMove*PriceScale); //以排队价发出买开委托手数的买开委托

BKT = NOW; //买开委托发出时间设为当前时间

BKFLG = 1; //已发出买开委托

BKID= 0;//A_GetLastOrderIndex(Enum_Buy,Enum_Entry);

SetGlobalVar(0,BKFLG);

SetGlobalVar(2,BKM);

SetGlobalVar(3,BKT);

SetGlobalVar(4,BKID);

}

}

PlotNumeric(“A_GetLastOrderIndex(Enum_Buy,Enum_Entry)”,A_GetLastOrderIndex(Enum_Buy,Enum_Entry));

PlotNumeric(“A_GetLastOpenOrderIndex(Enum_Buy,Enum_Entry)”,A_GetLastOpenOrderIndex(Enum_Buy,Enum_Entry));

PlotNumeric(“A_OrderFilledLot(BKID)”,A_OrderFilledLot(BKID));

PlotNumeric(“A_OrderStatus”,A_OrderStatus(BKID));

//dd=A_GetLastOrderIndex(Enum_Buy,Enum_Deleted);A_GetLastOpenOrderIndex

//PlotNumeric(“A_OrderStatus1”,A_OrderStatus(dd));

PlotNumeric(“jiange”,(NOW-BKT) );

PlotNumeric(“BKT”,BKT);

PlotNumeric(“BKFLG”,BKFLG);

PlotNumeric(“BKDEL”,BKDEL);

PlotNumeric(“BKID”,BKID);

PlotNumeric(“BKM”,BKM);

PlotBool(“A_OrderStatus(BKID) == Enum_Declared”,A_OrderStatus(BKID) == Enum_Declared);

PlotBool(“A_OrderStatus(BKID) == Enum_Declare”,A_OrderStatus(BKID) == Enum_Declare);

PlotNumeric(“Enum_Deleted”,Enum_Deleted);//6

PlotNumeric(” Enum_Canceled”, Enum_Canceled());//3

PlotNumeric(“Enum_Canceling”,Enum_Canceling);//2

PlotNumeric(“Enum_Filled”,Enum_Filled);//10

PlotNumeric(” Enum_FillPart”, Enum_FillPart);//11

PlotNumeric(” Enum_Entry”, Enum_Entry);//7

PlotNumeric(” Enum_Buy”, Enum_Buy);//0

PlotNumeric(” Enum_Sell”, Enum_Sell);//1

PlotNumeric(” Enum_Exit”, Enum_Exit);//8

PlotNumeric(” Enum_ExitToday”, Enum_ExitToday);//9

PlotNumeric(” Enum_Declare”, Enum_Declare);//4

PlotNumeric(” Enum_Declared”, Enum_Declared);//5

}

End

//算法交易模型执行效果,在第一次委托没有成交时,算法交易模型对委托进行了撤单,撤单后重新追价,确保了委托的成交。

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/68632
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 9 日
下一篇 2024 年 7 月 9 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注