Data
COD:\"P2309\"; //合约编码,数据区同步
Vars
Numeric N; //下单手数
Numeric X; //循环变量
Numeric M; //条件价位倍数
Numeric W; //委托价位倍数
Numeric P; //条件比例
Numeric T; //时间间隔
Numeric DTN; //撤单tick数量
Numeric ZYM; //止盈价位倍数
Numeric ZSM; //止损价位倍数
Numeric BKC; //多头开仓条件
Numeric SKC; //空头开仓条件
Numeric BKCP; //多头开仓价格
Numeric SKCP; //空头开仓价格
Numeric TKN; //数据区长度
Numeric TKSV; //tick成交量和
Numeric TKVL; //tick累计成交量
Numeric SH; //平仓参数
Numeric NOW; //当前时间
Numeric NEWP; //最新价
Numeric MINP; //最小变动价位
Numeric RLP,FLP; //涨跌停价
Numeric BIDP,ASKP; //买卖一价
Numeric BVSV,AVSV; //买卖量和
Numeric BRP,SRP; //多空头可用持仓
Numeric OPFLG; //模型处理标志
Numeric BKDFLG; //买开处理标志
Numeric SKDFLG; //卖开处理标志
Numeric BPDFLG; //买平处理标志
Numeric SPDFLG; //卖平处理标志
NumericArray TKV; //tick成交量
NumericArray TKA; //tick主动买卖
Var_TickData TKD; //数据区
Global_Numeric COFLG; //输出处理标志
Global_Numeric KCFLG; //开仓处理标志
Global_Numeric BKID,SKID; //开仓委托
Global_Numeric BPID,SPID; //平仓委托
Global_Numeric BKFLG,SKFLG; //开仓标志
Global_Numeric BPFLG,SPFLG; //平仓标志
Global_Numeric BKDEL,SKDEL; //开仓撤单标志
Global_Numeric BPDEL,SPDEL; //平仓撤单标志
Global_Numeric BKTKN,SKTKN; //开仓tick数量
Global_Numeric BKTKV,SKTKV; //开仓累计成交量
Global_Numeric BKAP,SKAP; //开仓成交均价
Global_Numeric BKCT,SKCT; //开仓成交时间
Global_Numeric BKM,SKM; //开仓委托手数
Global_Numeric BPM,SPM; //平仓委托手数
Global_Numeric BKP,SKP; //开仓委托价格
Global_Numeric BPP,SPP; //平仓委托价格
Begin
//------------------------处理开启------------------------//
If(1) //处理开启
{
If(A_IsExchangeOpen() == 1) //如果是开盘状态
{
OPFLG = 1; //开启模型处理
}
}
//------------------------变量赋值------------------------//
If(OPFLG == 1) //变量赋值
{
N = 1; //下单手数
M = 1; //条件价位倍数
W = 1; //委托价位倍数
P = 0.3; //条件比例
T = 30; //时间间隔
DTN = 2; //撤单tick数量
ZYM = 3; //止盈价位倍数
ZSM = 2; //止损价位倍数
NOW = CurrentTime(); //当前时间
NEWP = Price(\"New\"); //最新价
BIDP = Price(\"Bid1\"); //买一价
ASKP = Price(\"Ask1\"); //卖一价
RLP = Price(\"RiseLimit\"); //涨停价
FLP = Price(\"FallLimit\"); //跌停价
MINP = Price(\"MinPrice\"); //最小变动价位
BIDP = IIF(BIDP == 0 && NEWP == FLP,FLP,BIDP); //买一价
ASKP = IIF(ASKP == 0 && NEWP == RLP,RLP,ASKP); //卖一价
BRP = F_BuyRemainPosition(); //多头可用持仓
SRP = F_SellRemainPosition(); //空头可用持仓
BRP = Min(BRP,A_BuyRemainPosition()); //多头可用持仓
SRP = Min(SRP,A_SellRemainPosition()); //空头可用持仓
SH = IIF(A_IsSHCode() == 1,Enum_ExitToday,Enum_Exit); //平仓参数
}
//------------------------数据取值------------------------//
If(OPFLG == 1) //数据取值
{
TKD = Def_TickData(\"P2309\",1,2); //数据区
If(TKD.State != 1) //如果数据区无效
{
If(COFLG == 0) //如果未执行输出处理
{
Commentary(\"【数据存储:数据区存储中!】\");
COFLG = 1; //已执行输出处理
}
OPFLG = 2; //关闭模型处理
}
Else If(TKD.State == 1) //如果数据区有效
{
If(COFLG == 1) //如果已执行输出处理
{
Commentary(\"【数据存储:数据区已有效!】\");
COFLG = 2; //已完成输出处理
}
TKN = TKD.Num; //数据区长度
For X = 0 To TKN - 1 //遍历数据区
{
TKV[X] = TKD[X].DeltaVol; //tick成交量
TKA[X] = TKD[X].Activity; //tick主动买卖
TKSV = TKSV + TKV[X]; //tick成交量和
}
TKVL = TKD[TKN - 1].TickVolum; //tick累计成交量
For X = 1 To 5 //遍历五档
{
BVSV = BVSV + Price(\"BidVol\" + Text(X)); //买量和
AVSV = AVSV + Price(\"AskVol\" + Text(X)); //卖量和
}
If(TKA[0] == 0 && TKA[1] == 0 && TKSV >= P * AVSV) //如果满足多头开仓条件
{
BKCP = IIF(ASKP - BIDP > M * MINP,BIDP + W * MINP,ASKP); //多头开仓价格
BKC = 1; //满足多头开仓条件
}
Else If(TKA[0] == 1 && TKA[1] == 1 && TKSV >= P * BVSV) //如果满足空头开仓条件
{
SKCP = IIF(ASKP - BIDP > M * MINP,ASKP - W * MINP,BIDP); //空头开仓价格
SKC = 1; //满足空头开仓条件
}
}
}
//------------------------成交判断------------------------//
If(OPFLG == 1) //成交判断
{
If(BKFLG == 1) //如果有买开委托
{
If(F_OrderStatus(BKID) == Enum_Filled && BRP > 0) //如果买开委托成交
{
Commentary(\"【多头开仓:买开委托成交!】\");
BKAP = F_OrderFilledPrice(BKID); //买开成交均价
SPDFLG = 1; //开启多头止盈卖平处理
BKCT = NOW; //买开成交时间
BKFLG = 0; //买开标志归0
BKDEL = 0; //买开撤单标志归0
}
Else If(F_OrderStatus(BKID) == Enum_Canceled) //如果买开委托已撤
{
Commentary(\"【多头开仓:买开委托已撤!】\");
If(F_OrderFilledLot(BKID) > 0) //如果买开委托部分成交
{
BKAP = F_OrderFilledPrice(BKID); //买开成交均价
SPDFLG = 1; //开启多头止盈卖平处理
BKCT = NOW; //买开成交时间
}
Else //如果买开委托全部撤单
{
KCFLG = 0; //开仓处理标志归0
}
BKFLG = 0; //买开标志归0
BKDEL = 0; //买开撤单标志归0
}
Else If(F_OrderStatus(BKID) == Enum_Declared || F_OrderStatus(BKID) == Enum_FillPart) //如果买开委托挂单
{
If(BKDEL == 0) //如果未撤单
{
If(TKVL != BKTKV) //如果是新tick
{
BKTKN = BKTKN + 1; //买开tick数量
BKTKV = TKVL; //买开累计成交量
}
If(BKTKN == DTN) //如果满足撤单条件
{
Commentary(\"【多头开仓:买开委托撤单!】\");
F_DeleteOrder(F_OrderContractNo(BKID)); //撤掉买开委托挂单
BKDEL = 1; //已发出撤掉买开委托挂单
}
}
}
}
If(SPFLG > 0) //如果有卖平委托
{
If(F_OrderStatus(SPID) == Enum_Filled) //如果卖平委托成交
{
If(SPFLG == 1) //如果是多头止盈卖平委托
{
Commentary(\"【多头止盈:卖平委托成交!】\");
}
Else If(SPFLG == 2) //如果是多头止损卖平委托
{
Commentary(\"【多头止损:卖平委托成交!】\");
}
Else If(SPFLG == 3) //如果是多头清仓卖平委托
{
Commentary(\"【多头清仓:卖平委托成交!】\");
}
KCFLG = 0; //开仓处理标志归0
SPFLG = 0; //卖平标志归0
SPDEL = 0; //卖平撤单标志归0
}
Else If(F_OrderStatus(SPID) == Enum_Canceled && BRP > 0) //如果卖平委托已撤
{
If(SPDEL == 1) //如果是追价撤单
{
Commentary(\"【多头止损:卖平委托已撤!】\");
If(F_OrderFilledLot(SPID) > 0) //如果卖平委托部分成交
{
SPM = SPM - F_OrderFilledLot(SPID); //卖平委托手数
}
If(BRP > 0 && SPM > 0 && SPM <= BRP) //如果卖平委托手数不超过多头可用持仓
{
SPP = BIDP; //卖平委托价格
Commentary(\"【多头止损:卖平委托追价!】\");
SPID = A_SendOrder(Enum_Sell,SH,SPM,SPP); //发出卖平委托
}
}
Else If(SPDEL == 2) //如果是多头止损撤单
{
Commentary(\"【多头止损:卖平委托已撤!】\");
SPFLG = 0; //卖平标志归0
SPDFLG = 2; //开启多头止损卖平处理
}
Else If(SPDEL == 3) //如果是多头清仓撤单
{
Commentary(\"【多头清仓:卖平委托已撤!】\");
SPFLG = 0; //卖平标志归0
SPDFLG = 3; //开启多头清仓卖平处理
}
SPDEL = 0; //卖平撤单标志归0
}
Else If(F_OrderStatus(SPID) == Enum_Declared || F_OrderStatus(SPID) == Enum_FillPart) //如果卖平委托挂单
{
If(SPDEL == 0) //如果未撤单
{
If(TimeDiff(BKCT,NOW) >= T) //如果满足多头清仓条件
{
Commentary(\"【多头清仓:卖平委托撤单!】\");
F_DeleteOrder(F_OrderContractNo(SPID)); //撤掉卖平委托挂单
SPDEL = 3; //多头清仓撤掉卖平委托挂单
}
Else //如果不满足多头清仓条件
{
If(SPFLG == 1) //如果是多头止盈卖平委托
{
If(NEWP <= BKAP - ZSM * MINP) //如果满足多头止损条件
{
Commentary(\"【多头止损:卖平委托撤单!】\");
F_DeleteOrder(F_OrderContractNo(SPID)); //撤掉卖平委托挂单
SPDEL = 2; //多头止损撤掉卖平委托挂单
}
}
Else If(SPFLG == 2) //如果是多头止损卖平委托
{
Commentary(\"【多头止损:卖平委托撤单!】\");
F_DeleteOrder(F_OrderContractNo(SPID)); //撤掉卖平委托挂单
SPDEL = 1; //已发出撤掉卖平委托挂单
}
}
}
}
}
If(SKFLG == 1) //如果有卖开委托
{
If(F_OrderStatus(SKID) == Enum_Filled && SRP > 0) //如果卖开委托成交
{
Commentary(\"【空头开仓:卖开委托成交!】\");
SKAP = F_OrderFilledPrice(SKID); //卖开成交均价
BPDFLG = 1; //开启空头止盈买平处理
SKCT = NOW; //卖开成交时间
SKFLG = 0; //卖开标志归0
SKDEL = 0; //卖开撤单标志归0
}
Else If(F_OrderStatus(SKID) == Enum_Canceled) //如果卖开委托已撤
{
Commentary(\"【空头开仓:卖开委托已撤!】\");
If(F_OrderFilledLot(SKID) > 0) //如果卖开委托部分成交
{
SKAP = F_OrderFilledPrice(SKID); //卖开成交均价
BPDFLG = 1; //开启空头止盈买平处理
SKCT = NOW; //卖开成交时间
}
Else //如果卖开委托全部撤单
{
KCFLG = 0; //开仓处理标志归0
}
SKFLG = 0; //卖开标志归0
SKDEL = 0; //卖开撤单标志归0
}
Else If(F_OrderStatus(SKID) == Enum_Declared || F_OrderStatus(SKID) == Enum_FillPart) //如果卖开委托挂单
{
If(SKDEL == 0) //如果未撤单
{
If(TKVL != SKTKV) //如果是新tick
{
SKTKN = SKTKN + 1; //卖开tick数量
SKTKV = TKVL; //卖开累计成交量
}
If(SKTKN == DTN) //如果满足撤单条件
{
Commentary(\"【空头开仓:卖开委托撤单!】\");
F_DeleteOrder(F_OrderContractNo(SKID)); //撤掉卖开委托挂单
SKDEL = 1; //已发出撤掉卖开委托挂单
}
}
}
}
If(BPFLG > 0) //如果有买平委托
{
If(F_OrderStatus(BPID) == Enum_Filled) //如果买平委托成交
{
If(BPFLG == 1) //如果是空头止盈买平委托
{
Commentary(\"【空头止盈:买平委托成交!】\");
}
Else If(BPFLG == 2) //如果是空头止损买平委托
{
Commentary(\"【空头止损:买平委托成交!】\");
}
Else If(BPFLG == 3) //如果是空头清仓买平委托
{
Commentary(\"【空头清仓:买平委托成交!】\");
}
KCFLG = 0; //开仓处理标志归0
BPFLG = 0; //买平标志归0
BPDEL = 0; //买平撤单标志归0
}
Else If(F_OrderStatus(BPID) == Enum_Canceled && SRP > 0) //如果买平委托已撤
{
If(BPDEL == 1) //如果是追价撤单
{
Commentary(\"【空头止损:买平委托已撤!】\");
If(F_OrderFilledLot(BPID) > 0) //如果买平委托部分成交
{
BPM = BPM - F_OrderFilledLot(BPID); //买平委托手数
}
If(SRP > 0 && BPM > 0 && BPM <= SRP) //如果买平委托手数不超过空头可用持仓
{
BPP = ASKP; //买平委托价格
Commentary(\"【空头止损:买平委托追价!】\");
BPID = A_SendOrder(Enum_Buy,SH,BPM,BPP); //发出买平委托
}
}
Else If(BPDEL == 2) //如果是空头止损撤单
{
Commentary(\"【空头止损:买平委托已撤!】\");
BPFLG = 0; //买平标志归0
BPDFLG = 2; //开启空头止损买平处理
}
Else If(BPDEL == 3) //如果是空头清仓撤单
{
Commentary(\"【空头清仓:买平委托已撤!】\");
BPFLG = 0; //买平标志归0
BPDFLG = 3; //开启空头清仓买平处理
}
BPDEL = 0; //买平撤单标志归0
}
Else If(F_OrderStatus(BPID) == Enum_Declared || F_OrderStatus(BPID) == Enum_FillPart) //如果买平委托挂单
{
If(BPDEL == 0) //如果未撤单
{
If(TimeDiff(SKCT,NOW) >= T) //如果满足空头清仓条件
{
Commentary(\"【空头清仓:买平委托撤单!】\");
F_DeleteOrder(F_OrderContractNo(BPID)); //撤掉买平委托挂单
BPDEL = 3; //空头清仓撤掉买平委托挂单
}
Else //如果不满足空头清仓条件
{
If(BPFLG == 1) //如果是空头止盈买平委托
{
If(NEWP >= SKAP + ZSM * MINP) //如果满足空头止损条件
{
Commentary(\"【空头止损:买平委托撤单!】\");
F_DeleteOrder(F_OrderContractNo(BPID)); //撤掉买平委托挂单
BPDEL = 2; //空头止损撤掉买平委托挂单
}
}
Else If(BPFLG == 2) //如果是空头止损买平委托
{
Commentary(\"【空头止损:买平委托撤单!】\");
F_DeleteOrder(F_OrderContractNo(BPID)); //撤掉买平委托挂单
BPDEL = 1; //已发出撤掉买平委托挂单
}
}
}
}
}
}
//------------------------多空处理------------------------//
If(OPFLG == 1) //多空处理
{
If(KCFLG == 0) //如果未执行开仓处理
{
If(BKC == 1) //如果满足多头开仓条件
{
Commentary(\"【多头开仓:满足开仓条件!】\");
BKDFLG = 1; //开启买开处理
KCFLG = 1; //已执行多头处理
}
Else If(SKC == 1) //如果满足空头开仓条件
{
Commentary(\"【空头开仓:满足开仓条件!】\");
SKDFLG = 1; //开启卖开处理
KCFLG = 2; //已执行空头处理
}
}
}
//------------------------委托处理------------------------//
If(OPFLG == 1) //委托处理
{
If(BKDFLG == 1) //如果已开启买开处理
{
If(BKFLG == 0) //如果没有买开委托
{
BKM = N; //买开委托手数
BKP = BKCP; //买开委托价格
Commentary(\"【多头开仓:买开委托发出!】\");
BKID = A_SendOrder(Enum_Buy,Enum_Entry,BKM,BKP); //发出买开委托
BKTKV = TKVL; //买开累计成交量
BKTKN = 0; //买开tick数量
BKFLG = 1; //已发出买开委托
}
}
If(SPDFLG > 0) //如果已开启卖平处理
{
If(SPFLG == 0) //如果没有卖平委托
{
If(BRP > 0) //如果有多头可用持仓
{
SPM = BRP; //卖平委托手数
If(SPDFLG == 1) //如果是多头止盈卖平
{
SPP = Min(BKAP + ZYM * MINP,RLP); //卖平委托价格
Commentary(\"【多头止盈:卖平委托发出!】\");
}
Else If(SPDFLG == 2) //如果是多头止损卖平
{
SPP = BIDP; //卖平委托价格
Commentary(\"【多头止损:卖平委托发出!】\");
}
Else If(SPDFLG == 3) //如果是多头清仓卖平
{
SPP = BIDP; //卖平委托价格
Commentary(\"【多头清仓:卖平委托发出!】\");
}
SPID = A_SendOrder(Enum_Sell,SH,SPM,SPP); //发出卖平委托
SPFLG = SPDFLG; //已发出卖平委托
}
}
}
If(SKDFLG == 1) //如果已开启卖开处理
{
If(SKFLG == 0) //如果没有卖开委托
{
SKM = N; //卖开委托手数
SKP = SKCP; //卖开委托价格
Commentary(\"【空头开仓:卖开委托发出!】\");
SKID = A_SendOrder(Enum_Sell,Enum_Entry,SKM,SKP); //发出卖开委托
SKTKV = TKVL; //卖开累计成交量
SKTKN = 0; //卖开tick数量
SKFLG = 1; //已发出卖开委托
}
}
If(BPDFLG > 0) //如果已开启买平处理
{
If(BPFLG == 0) //如果没有买平委托
{
If(SRP > 0) //如果有空头可用持仓
{
BPM = SRP; //买平委托手数
If(BPDFLG == 1) //如果是空头止盈买平
{
BPP = Max(SKAP - ZYM * MINP,FLP); //买平委托价格
Commentary(\"【空头止盈:买平委托发出!】\");
}
Else If(BPDFLG == 2) //如果是空头止损买平
{
BPP = ASKP; //买平委托价格
Commentary(\"【空头止损:买平委托发出!】\");
}
Else If(BPDFLG == 3) //如果是空头清仓买平
{
BPP = ASKP; //买平委托价格
Commentary(\"【空头清仓:买平委托发出!】\");
}
BPID = A_SendOrder(Enum_Buy,SH,BPM,BPP); //发出买平委托
BPFLG = BPDFLG; //已发出买平委托
}
}
}
}
End
这是文华的语言?
目前转化服务只提供简语言级别的(文华6,同花顺,东方财富等)