投资者咨询:帮我修改一下组件 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-8-7 22:31
【策略】
模组信号:BK、SK。//增加SP BP的信号获取
委托价格:市价委托。
锁仓条件:1.浮盈大于10个点后,回落到开仓价格。//清除 1.浮盈大于10个点后,回落到开仓价格
2.浮亏大于等于10点。
止盈条件:1.浮盈大于100个点,回落到50个点。//清除回落到50个点
2.浮盈大于10000。
清仓时间:14:58分及23:58分清仓
投资者咨询:帮我修改一下组件 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-8-7 22:31
修改红色字体部分
技术人员回复
日期:2018-8-8 8:12
参考
/*【策略】
模组信号:BK、SK。//增加SP BP的信号获取
委托价格:市价委托。
锁仓条件:1.浮盈大于10个点后,回落到开仓价格。//清除 1.浮盈大于10个点后,回落到开仓价格
2.浮亏大于等于10点。
止盈条件:1.浮盈大于100个点,回落到50个点。//清除回落到50个点
2.浮盈大于10000。
清仓时间:14:58分及23:58分清仓*/
GLOBAL_VAR MOD; //模组名称
GLOBAL_VAR COD; //合约编码
GLOBAL_VAR N; //委托手数
GLOBAL_VAR SH; //平仓参数
GLOBAL_VAR ZYP; //止盈金额
GLOBAL_VAR MINP; //最小变动价位
GLOBAL_VAR QCT1,QCT2; //清仓时间
GLOBAL_VAR CLT1,CLT2; //收盘时间
GLOBAL_VAR SCTM; //锁仓高点价位倍数
GLOBAL_VAR ZYTM; //止盈高点价位倍数
GLOBAL_VAR ZYBM; //止盈低点价位倍数
GLOBAL_VAR NEWP; //最新价
GLOBAL_VAR NOW; //当前时间
GLOBAL_VAR CST; //服务器时间
GLOBAL_VAR BPF,SPF; //多空头盈亏
GLOBAL_VAR BRP,SRP; //多空头可用持仓
GLOBAL_VAR BKAP,SKAP; //开仓委托均价
GLOBAL_VAR QCFLG; //清仓处理标志
GLOBAL_VAR SCFLG; //锁仓处理标志
GLOBAL_VAR ZYFLG; //止盈处理标志
GLOBAL_VAR HSFLG; //回落锁仓处理标志
GLOBAL_VAR HZFLG; //回落止盈处理标志
GLOBAL_VAR BKID,SKID,SPID,BPID; //开平仓委托
GLOBAL_VAR BKFLG,SKFLG,SPFLG,BPFLG; //开平仓标志
GLOBAL_VAR BKDEL,SKDEL,SPDEL,BPDEL; //开平仓撤单标志
VOID MAIN() //主函数
{
VLFUN(); //执行变量赋值函数
OPFUN(); //执行开盘处理函数
}
//----------------------自定义函数--------------------//
VOID VLFUN() //变量赋值函数
{
MOD = "GDJMX1"; //模组名称
COD = MOD.F_DealCode(); //合约编码
N = 1; //下单手数
ZYP = 800; //止盈金额浮盈600
SCTM = 10; //锁仓高点10价位倍数
ZYTM = 20; //浮盈大于20个点,回落到10个点
ZYBM = 10; //止盈低点价位倍数回落到10个点
MINP = MinPrice(COD); //最小变动价位
NEWP = Price(COD,"New"); //最新价
QCT1 = Time("14:58:00"); //白盘清仓时间
CLT1 = Time("15:00:00"); //白盘收盘时间
QCT2 = Time("23:58:00"); //夜盘清仓时间
CLT2 = Time("01:00:00"); //夜盘收盘时间
CST = CurrentServerTime(COD); //服务器时间
BRP = AL_BuyRemainPosition(COD); //多头可用持仓
SRP = AL_SellRemainPosition(COD); //空头可用持仓
BPF = AL_BuyProfitLoss(COD); //多头盈亏
SPF = AL_SellProfitLoss(COD); //空头盈亏
IF(T_IsSHCode(COD) == 1) //如果当前合约是上海市场合约
{
SH = 2; //平仓参数设为2
}
ELSE //如果当前合约不是上海市场合约
{
SH = 1; //平仓参数设为1
}
}
VOID OPFUN() //开盘处理函数
{
IF(T_IsExchangeOpen(COD) == 1) //如果当前状态是开盘
{
KPCCHK(); //执行成交判断函数
IF((CST >= QCT1 && CST < CLT1) || (CST >= QCT2 || CST < CLT2)) //如果是清仓时间
{
QCNFUN(); //执行清仓处理函数
}
ELSE //如果不是清仓时间
{
IF(QCFLG > 0) //如果已处理清仓
{
QCFLG = 0; //清仓标志归0
}
SIGFUN(); //执行信号处理函数
ZYPFUN(); //执行止损处理函数
SCNFUN(); //执行锁仓处理函数
}
}
}
VOID KPCCHK() //成交判断函数
{
BKCHK(); //执行买开成交判断函数
SPCHK(); //执行卖平成交判断函数
SKCHK(); //执行卖开成交判断函数
BPCHK(); //执行买平成交判断函数
}
VOID SIGFUN() //信号处理函数
{
IF(MOD.F_FreshSig() == 1) //如果当前信号是未处理过的新信号
{
IF(MOD.F_SigValid() == 1) //如果当前信号未消失
{
IF(MOD.F_Sig() == BK) //如果信号类型为BK
{
MessageOut("【BK信号!】");
BKFUN(); //执行买开函数
}
IF(MOD.F_Sig() == SK) //如果信号类型为SK
{
MessageOut("【SK信号!】");
SKFUN(); //执行卖开函数
}
}
}
}
VOID SCNFUN() //锁仓处理函数
{
IF(SCFLG == 0) //如果未处理锁仓
{
IF(BKFLG == 2) //如果有买开委托
{
BKAP = T_OrderMatchAvPrice(BKID); //买开委托成交均价
IF(SKFLG == 0) //如果未发出卖开锁仓委托
{
IF(NEWP >= BKAP + SCTM * MINP) //如果最新价格大于买开均价加止盈点位
{
HSFLG = 1; //开启回落锁仓处理
}
IF( NEWP <= BKAP - SCTM * MINP) //如果满足多头锁仓条件
{
MessageOut("【多头锁仓:卖开委托发出!】");
SKID = T_Deal1(COD,1,SH,BRP,LIMIT_ORDER); //以市价出多头可用持仓手数的卖开委托
SKFLG = 3; //已发出多头锁仓卖开委托
HSFLG = 0; //回落锁仓处理标志归0
SCFLG = 1; //已处理多头锁仓
}
}
}
ELSE IF(SKFLG == 2) //如果有卖开委托
{
SKAP = T_OrderMatchAvPrice(SKID); //卖开委托成交均价
IF(BKFLG == 0) //如果未发出买开锁仓委托
{
IF(NEWP <= SKAP - SCTM * MINP) //如果最新价格小于买开均价减止盈点位
{
HSFLG = 1; //开启回落锁仓处理
}
IF( NEWP >= SKAP + SCTM * MINP) //如果满足空头锁仓条件
{
MessageOut("【空头锁仓:买开委托发出!】");
BKID = T_Deal1(COD,0,0,SRP,LIMIT_ORDER); //以市价出空头可用持仓手数的买开委托
BKFLG = 3; //已发出空头锁仓买开委托
HSFLG = 0; //回落锁仓处理标志归0
SCFLG = 1; //已处理空头锁仓
}
}
}
}
}
VOID ZYPFUN() //止盈处理函数
{
IF(SCFLG == 0) //如果未处理锁仓
{
IF(ZYFLG == 0) //如果未处理止盈
{
IF(BKFLG == 2) //如果买开委托已成交
{
BKAP = T_OrderMatchAvPrice(BKID); //买开委托成交均价
IF(NEWP >= BKAP + ZYTM * MINP) //如果最新价达到多头止盈价位
{
SPFUN(); //执行卖平函数
}
IF( BPF >= ZYP) //如果满足多头止盈条件
{
SPFUN(); //执行卖平函数
}
}
ELSE IF(SKFLG == 2) //如果卖开委托已成交
{
SKAP = T_OrderMatchAvPrice(SKID); //买开委托成交均价
IF(NEWP <= SKAP - ZYTM * MINP) //如果最新价达到空头止盈价位
{
BPFUN(); //执行买平函数
}
IF( SPF >= ZYP) //如果满足空头止盈条件
{
BPFUN(); //执行买平函数
}
}
}
}
}
VOID QCNFUN() //清仓处理函数
{
IF(QCFLG == 0) //如果为进行清仓处理
{
MessageOut("【尾盘清仓:清仓处理开始!】");
IF(BKFLG == 1 || BKFLG == 3) //如果有买开委托
{
IF(BKDEL == 0) //如果未撤单
{
IF(T_OrderState(BKID) == 0 || T_OrderState(BKID) == 3) //如果买开委托未全部成交
{
MessageOut("【清仓撤单:买开委托撤单!】");
T_DeleteOrder(BKID); //撤掉买开委托挂单
BKDEL = 1; //清仓撤掉买开委托
}
ELSE //如果买开委托未挂单
{
BKDEL = 2; //清仓撤掉买开委托
}
}
}
ELSE IF(BKFLG == 2 || BKFLG == 4) //如果买开委托已成交
{
BKFLG = 0; //买开标志归0
}
IF(SKFLG == 1 || SKFLG == 3) //如果有卖开委托
{
IF(SKDEL == 0) //如果未撤单
{
IF(T_OrderState(SKID) == 0 || T_OrderState(SKID) == 3) //如果卖开委托未全部成交
{
MessageOut("【清仓撤单:卖开委托撤单!】");
T_DeleteOrder(SKID); //撤掉卖开委托挂单
SKDEL = 1; //清仓撤掉卖开委托挂单
}
ELSE //如果卖开委托未挂单
{
SKDEL = 2; //清仓撤掉卖开委托挂单
}
}
}
ELSE IF(SKFLG == 2 || SKFLG == 4) //如果卖开委托已成交
{
SKFLG = 0; //买开标志归0
}
IF(SPFLG == 1) //如果有卖平委托
{
IF(SPDEL == 0) //如果未撤单
{
IF(T_OrderState(SPID) == 0 || T_OrderState(SPID) == 3) //如果卖平委托未全部成交
{
MessageOut("【清仓撤单:卖平委托撤单!】");
T_DeleteOrder(SPID); //撤掉卖平委托挂单
SPDEL = 1; //清仓撤掉卖平委托挂单
}
ELSE //如果卖平委托未挂单
{
SPDEL = 2; //清仓撤掉卖平委托挂单
}
}
}
IF(BPFLG == 1) //如果有买平委托
{
IF(BPDEL == 0) //如果未撤单
{
IF(T_OrderState(BPID) == 0 || T_OrderState(BPID) == 3) //如果买平委托未全部成交
{
MessageOut("【清仓撤单:买平委托撤单!】");
T_DeleteOrder(BPID); //撤掉买平委托挂单
BPDEL = 1; //清仓撤掉买平委托挂单
}
ELSE //如果买平委托未挂单
{
BPDEL = 2; //清仓撤掉买平委托挂单
}
}
}
QCFLG = 1; //已发出清仓撤单
}
IF(QCFLG == 1) //如果已发出清仓撤单
{
IF(BKFLG == 0 && SKFLG == 0 && BPFLG == 0 && SPFLG == 0) //如果没有开平仓委托
{
IF(BRP > 0) //如果有多头可用持仓
{
MessageOut("【清仓平多:卖平委托发出!】");
SPID = T_Deal1(COD,1,SH,BRP,LIMIT_ORDER); //以市价发出多头可用持仓手数的卖平委托
SPFLG = 2; //已发出清仓卖平委托
}
IF(SRP > 0) //如果有空头可用持仓
{
MessageOut("【清仓平空:买平委托发出!】");
BPID = T_Deal1(COD,0,SH,SRP,LIMIT_ORDER); //以市价发出空头可用持仓手数的买平委托
BPFLG = 2; //已发出清仓买平委托
}
QCFLG = 2; //已发出清仓平仓
}
}
IF(QCFLG == 2) //如果已发出清仓平仓
{
IF(BPFLG == 0 && SPFLG == 0) //如果没有平仓委托
{
MessageOut("【尾盘清仓:清仓处理完成!】");
SCFLG = 0; //锁仓处理标志归0
ZYFLG = 0; //止盈处理标志归0
QCFLG = 3; //清仓处理完成
}
}
}
//-------------------------买开-----------------------//
VOID BKFUN() //买开函数
{
IF(BKFLG == 0) //如果没有开仓委托挂单
{
MessageOut("【BK信号:买开委托发出!】");
BKID = T_Deal1(COD,0,0,N,LIMIT_ORDER); //以市价发出N手的买开委托
BKFLG = 1; //已发出买开委托
}
}
VOID BKCHK() //买开成交判断函数
{
IF(BKFLG == 1 || BKFLG == 3) //如果有买开委托
{
IF(T_OrderState(BKID) == 1 && CheckPosition() == 0) //如果买开委托成交
{
IF(BKFLG == 1) //如果是BK信号买开委托
{
MessageOut("【BK信号:买开委托成交!】");
BKFLG = 2; //买开委托已成交
}
ELSE IF(BKFLG == 3) //如果是空头锁仓买开委托
{
MessageOut("【空头锁仓:买开委托成交!】");
BKFLG = 4; //买开委托已成交
}
BKDEL = 0; //买开撤单标志归0
}
ELSE IF(T_OrderState(BKID) == 2) //如果买开委托被撤单
{
MessageOut("【清仓撤单:买开委托已撤!】");
BKFLG = 0; //买开标志归0
BKDEL = 0; //买开撤单标志归0
}
ELSE IF(T_OrderState(BKID) == 0 || T_OrderState(BKID) == 3) //如果买开委托未全部成交
{
IF(BKDEL == 2) //如果是清仓撤掉买开委托
{
MessageOut("【清仓撤单:买开委托撤单!】");
T_DeleteOrder(BKID); //清仓撤掉买开委托挂单
BKDEL = 3; //已发出清仓撤掉买开委托挂单
}
}
}
}
//-------------------------卖平-----------------------//
VOID SPFUN() //卖平函数
{
IF(SPFLG == 0) //如果没有卖平委托
{
MessageOut("【多头止盈:卖平委托发出!】");
SPID = T_Deal1(COD,1,SH,BRP,LIMIT_ORDER); //以市价发出多头可用持仓手数的卖平委托
SPFLG = 1; //已发出多头止盈卖平委托
HZFLG = 0; //回落止盈处理标志归0
ZYFLG = 1; //已处理多头止盈
}
}
VOID SPCHK() //卖平成交判断函数
{
IF(SPFLG > 0) //如果有卖平委托
{
IF(T_OrderState(SPID) == 1 && CheckPosition() == 0) //如果卖平委托成交
{
IF(SPFLG == 1) //如果是多头止盈卖平委托
{
MessageOut("【多头止盈:卖平委托成交!】");
ZYFLG = 0; //止盈处理标志归0
}
ELSE IF(SPFLG == 2) //如果是清仓平多卖平委托
{
MessageOut("【清仓平多:卖平委托成交!】");
}
BKFLG = 0; //买开标志归0
SPFLG = 0; //卖平标志归0
SPDEL = 0; //卖平撤单标志归0
}
ELSE IF(T_OrderState(SPID) == 2) //如果卖平委托被撤单
{
MessageOut("【清仓撤单:卖平委托已撤!】");
SPFLG = 0; //卖平标志归0
SPDEL = 0; //卖平撤单标志归0
}
ELSE IF(T_OrderState(SPID) == 0 || T_OrderState(SPID) == 3) //如果卖平委托未全部成交
{
IF(SPDEL == 2) //如果是清仓撤单
{
MessageOut("【清仓撤单:卖平委托撤单!】");
T_DeleteOrder(SPID); //撤掉卖平委托挂单
SPDEL = 3; //清仓撤掉卖平委托挂单
}
}
}
}
//------------------------卖开-----------------------//
VOID SKFUN() //卖开函数
{
IF(SKFLG == 0) //如果没有卖开委托
{
MessageOut("【SK信号:卖开委托发出!】");
SKID = T_Deal1(COD,1,0,N,LIMIT_ORDER); //以市价发出N手的卖开委托
SKFLG = 1; //已发出卖开委托
}
}
VOID SKCHK() //卖开成交判断函数
{
IF(SKFLG == 1 || SKFLG == 3) //如果有卖开委托
{
IF(T_OrderState(SKID) == 1 && CheckPosition() == 0) //如果卖开委托成交
{
IF(SKFLG == 1) //如果是SK信号卖开委托
{
MessageOut("【SK信号:卖开委托成交!】");
SKFLG = 2; //卖开委托已成交
}
IF(SKFLG == 3) //如果是多头锁仓卖开委托
{
MessageOut("【多头锁仓:卖开委托成交!】");
SKFLG = 4; //卖开委托已成交
}
SKDEL = 0; //卖开撤单标志归0
}
ELSE IF(T_OrderState(SKID) == 2) //如果卖开委托被撤单
{
MessageOut("【清仓撤单:卖开委托已撤!】");
SKFLG = 0; //卖开标志归0
SKDEL = 0; //卖开撤单标志归0
}
ELSE IF(T_OrderState(SKID) == 0 || T_OrderState(SKID) == 3) //如果卖开委托未全部成交
{
IF(SKDEL == 2) //如果是清仓撤掉卖开委托
{
MessageOut("【清仓撤单:卖开委托撤单!】");
T_DeleteOrder(SKID); //清仓撤掉卖开委托挂单
SKDEL = 3; //已发出清仓撤掉卖开委托挂单
}
}
}
}
//-------------------------买平-----------------------//
VOID BPFUN() //买平函数
{
IF(BPFLG == 0) //如果没有买平委托
{
MessageOut("【空头止盈:买平委托发出!】");
BPID = T_Deal1(COD,0,SH,BRP,LIMIT_ORDER); //以市价发出空头可用持仓手数的买平委托
BPFLG = 1; //已发出空头止盈买平委托
HZFLG = 0; //回落止盈处理标志归0
ZYFLG = 1; //已处理空头止盈
}
}
VOID BPCHK() //买平成交判断函数
{
IF(BPFLG > 0) //如果有买平委托
{
IF(T_OrderState(BPID) == 1) //如果买平委托成交
{
IF(BPFLG == 1) //如果是空头止盈买平委托
{
MessageOut("【空头止盈:买平委托成交!】");
ZYFLG = 0; //止盈处理标志归0
}
ELSE IF(BPFLG == 2) //如果是清仓平空买平委托
{
MessageOut("【清仓平空:买平委托成交!】");
}
SKFLG = 0; //卖开标志归0
BPFLG = 0; //买平标志归0
BPDEL = 0; //买平撤单标志归0
}
ELSE IF(T_OrderState(BPID) == 2) //如果买平委托被撤单
{
MessageOut("【清仓撤单:买平委托已撤!】");
BPFLG = 0; //买平标志归0
BPDEL = 0; //买平撤单标志归0
}
ELSE IF(T_OrderState(BPID) == 0 || T_OrderState(BPID) == 3) //如果买平委托未全部成交
{
IF(BPDEL == 2) //如果是清仓撤单
{
MessageOut("【清仓撤单:买平委托撤单!】");
T_DeleteOrder(BPID); //撤掉买平委托挂单
BPDEL = 3; //清仓撤掉买平委托挂单
}
}
}
}
投资者咨询:帮我修改一下组件 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-8-7 22:31
模组的平仓信号 组件不执行
投资者咨询:帮我修改一下组件 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-8-7 22:31
技术人员回复
日期:2018-8-8 15:13
投资者咨询:帮我修改一下组件 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-8-7 22:31
好的 谢谢 晚上开盘了我试试
投资者咨询:帮我修改一下组件 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-8-7 22:31
投资者咨询:帮我修改一下组件 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-8-7 22:31
技术人员回复
日期:2018-8-9 11:37






