投资者咨询:[求助]网格模式 (文华财经WH6赢顺V6.7)
来源:文华财经 日期:2018-8-28 9:47
技术人员回复
日期:2018-8-28 10:25
可以的
但网格交易的思路判断比较复杂,需要在WH8上使用算法交易模型来写,比趋势模型编写上难度大一些
而且论坛是不提供完整程序化模型编写的,如果您自己编写能力有限,需要付费成为VIP用户,会有专门的工程师为您编写的
当前给您一个简单的网格算法编写
GLOBAL_VAR COD; //合约编码
GLOBAL_VAR BKM,SKM; //下单手数
GLOBAL_VAR FLG; //多空委托标识
GLOBAL_VAR NUM; //交易次数统计
GLOBAL_VAR OPEN; //开盘价
GLOBAL_VAR M; //价格差
GLOBAL_VAR NEWP; //最新价
GLOBAL_VAR CST; //服务器时间
GLOBAL_VAR BRP,SRP; //组件多空头可用持仓
GLOBAL_VAR QCFLG; //清仓标志
VOID MAIN()
{
VLFUN(); //执行变量赋值函数
OPFUN(); //执行开盘处理函数
}
//----------------------自定义函数--------------------//
VOID VLFUN() //变量赋值函数
{
COD = "rb1805"; //合约编码
OPEN = Price(COD,"Open"); //开盘价
M = 50; //涨跌价格差
NEWP = Price(COD,"New"); //最新价
CST = CurrentServerTime(COD); //服务器时间
BRP = AL_BuyRemainPosition(COD); //组件多头可用持仓
SRP = AL_SellRemainPosition(COD); //组件空头可用持仓
}
VOID OPFUN() //开盘处理函数
{
IF(T_IsExchangeOpen(COD) == 1) //如果当前状态为开盘
{
IF(FLG == 0)
{
IF(NEWP >= OPEN + M) //到达开多仓位
{
NUM = NUM + 1;
BKFUN();
}
IF(NEWP <= OPEN - M) //到达开空仓位
{
NUM = NUM + 1;
SKFUN();
}
}
ELSE IF(FLG == 1 && NEWP <= OPEN - M) //如果上次开仓为多仓,且满足空仓条件
{
NUM = NUM + 1;
SKFUN();
}
ELSE IF(FLG == 2 && NEWP >= OPEN + M) //如果上次开仓为空仓,且满足多仓条件
{
NUM = NUM + 1;
BKFUN();
}
}
ELSE IF(T_IsExchangeOpen(COD) != 1) //如果当前状态不是开盘
{
IF(QCFLG == 1)
{
QCFLG = 0;
}
}
}
//-------------------------买开-----------------------//
VOID BKFUN() //买开函数
{
BKM = NUM;
MessageOut("【买开委托发出!】");
T_Deal1(COD,0,0,BKM,LIMIT_ORDER); //以市价发出买开手数的买开委托
FLG = 1;
}
//-------------------------卖开-----------------------//
VOID SKFUN() //卖开函数
{
SKM = NUM;
MessageOut("【卖开委托发出!】");
T_Deal1(COD,1,0,SKM,LIMIT_ORDER); //以市价发出卖开手数的卖开委托
FLG = 2;
}
//-------------------------清仓-----------------------//
VOID QCFUN() //买平函数
{
IF(SRP > 0) //如果有空头可用持仓
{
MessageOut("【清仓:买平委托发出!】");
IF(T_IsSHCode(COD) == 1) //如果当前合约是上海市场合约
{
T_Deal1(COD,0,2,SRP,LIMIT_ORDER); //以市价发出空头可用持仓手数的买平今仓委托
}
ELSE //如果当前合约不是上海市场合约
{
T_Deal1(COD,0,1,SRP,LIMIT_ORDER); //以市价发出空头可用持仓手数的买平委托
}
}
IF(BRP > 0) //如果有多头可用持仓
{
MessageOut("【清仓:卖平委托发出!】");
IF(T_IsSHCode(COD) == 1) //如果当前合约是上海市场合约
{
T_Deal1(COD,1,2,BRP,LIMIT_ORDER); //以市价发出多头可用持仓手数的卖平今仓委托
}
ELSE //如果当前合约不是上海市场合约
{
T_Deal1(COD,1,1,BRP,LIMIT_ORDER); //以市价发出多头可用持仓手数的卖平委托
}
}
}