投资者咨询:大括号和小括号的嵌套规则问题 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-8-31 10:17
技术人员回复
日期:2018-8-31 10:30
投资者咨询:大括号和小括号的嵌套规则问题 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-8-31 10:17
//该组件仅仅用来示范如何编写算法交易组件
//用户需要根据自己交易经验,编写组件再实际应用!!!
//主要策略:设定分批总手数和每次分批手数,开平仓时,判断当前价与信号产生时的价位差别是否过大,过大后面的批次就取消。
VAR Modname;
VAR N;//定义总手数。
VAR M;//定义价格划点参数。
VAR Price1;
VAR Code1;//定义合约名称
VAR KPN;//定义每批手数。
GLOBAL_VAR YYN;//定义目前已有手数。
GLOBAL_VAR Status; //这个变量的作用是控制由价差过大而影响下单的走势。
VOID MAIN()//主函数
{
Modname="模组名";
M=10;
N=4;//设定总手数为4
KPN=2;//设定每批2手。
Code1=Modname.F_DealCode();
Price1=Price(Code1,"New");//定义最新价为当前模型所加载合约的最新价
Status=ReadGlobal("STATUS");
IF(Modname.F_FreshSig() == 1&&Modname.F_SigValid() == 1)//取得新信号且信号不消失
{
Status=0;
IF((Modname.F_Sig() == BK||Modname.F_Sig() == SK)&&Status == 0)//当前信号为开仓信号的时候。
{
KTDeal();//运行开仓分批函数。
}
ELSE IF((Modname.F_Sig() == BP||Modname.F_Sig() == SP)&&Status == 0) //当前信号为平仓信号的时候。
{
PTDeal();//运行平仓分批函数。
}
}
ELSE IF(Modname.F_FreshSig() == 0)//取得处理过的信号
{
IF((Modname.F_Sig() == BK||Modname.F_Sig() == SK)&&Status == 0)//当前信号为开仓信号的时候。
{
KTDeal();//运行开仓分批函数。
}
ELSE IF((Modname.F_Sig() == BP||Modname.F_Sig() == SP)&&Status == 0) //当前信号为平仓信号的时候。
{
PTDeal();//运行平仓分批函数。
}
}
}
VOID KTDeal()//定义开仓分批函数
{
IF(YYN<N)//如果已开仓手数小于需要开仓手数。
{
IF(Modname.F_Sig() == BK)//如果当前信号为BK。
{
IF(ABS(Price1-Modname.F_SigPrice())<=M)//如果当前价格与信号发出时价格差不大于M
{
T_Deal(Code1,0,0,KPN,Offers(Code1,"ask1"));//做多指定手数。
YYN=YYN+KPN;//已开仓手数增加KPN
}
ELSE IF(T_IsNoOrder()!=1&&ABS(Price1-Modname.F_SigPrice())>M)//如果当前价格与信号发出时价格差大于M且有挂单
{
MessageOut("价差过大");
T_DeleteOrderAll();
YYN=0;
Status=1;
}
}
ELSE IF(Modname.F_Sig()==SK)//如果当前信号为SK。
{
IF(ABS(Price1-Modname.F_SigPrice())<=M)//如果当前价格与信号发出时价格差不大于M
{
T_Deal(Code1,1,0,KPN,Offers(Code1,"bid1"));//做空指定手数。
YYN=YYN+KPN;//已开仓手数增加KPN
}
ELSE IF(T_IsNoOrder()!=1&&ABS(Price1-Modname.F_SigPrice())>M)//如果当前价格与信号发出时价格差大于M且有挂单
{
MessageOut("价差过大");
T_DeleteOrderAll();
YYN=0;
Status=1;
}
}
ELSE
{
MessageOut("等待成交");//其他情况显示“等待成交”。
}
}
}
VOID PTDeal()//定义平仓分批手数
{
IF(YYN>0)//如果已有持仓的手数大于0
{
IF(Modname.F_Sig() == BP)//如果当前信号为BP。
{
IF(ABS(Price1-Modname.F_SigPrice())<=M)
{
T_Deal(Code1,0,1,KPN,Offers(Code1,"ask1"));//平空仓指定手数。
//此句中T_Deal的第3个参数为1,表示平仓,只适用于非上交所合约,如果绑定上交所合约时,请将1改为2即可。下同理。
YYN=YYN-KPN;//已开仓手数减少KPN
}
ELSE IF(T_IsNoOrder()!=1&&ABS(Price1-Modname.F_SigPrice())>M)
{
MessageOut("价差过大");
T_DeleteOrderAll();
Status=1;
}
}
ELSE IF(Modname.F_Sig() == SP)//如果当前信号为SP。
{
IF(ABS(Price1-Modname.F_SigPrice())<=M)
{
T_Deal(Code1,1,1,KPN,Offers(Code1,"bid1"));//平多仓指定手数。
YYN=YYN-KPN;//已开仓手数减少KPN
}
ELSE IF(T_IsNoOrder()!=1&&ABS(Price1-Modname.F_SigPrice())>M)
{
MessageOut("价差过大");
T_DeleteOrderAll();
Status=1;
}
}
ELSE
{
MessageOut("等待成交");//其他情况显示“等待成交”。
}
}
这个模型里面,大括号嵌套了好多小括号,这样的嵌套是什么意思呢
技术人员回复
日期:2018-8-31 10:44
投资者咨询:大括号和小括号的嵌套规则问题 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-8-31 10:17
技术人员回复
日期:2018-8-31 11:03
投资者咨询:大括号和小括号的嵌套规则问题 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-8-31 10:17
嗯,您帮我看下,我这样写可以吗,为什么加载K线得不到我想要的效果呢
OD:VALUEWHEN(DATE<>REF(DATE,1),O);
OD1:OD+0.05;
OD2:OD-0.05;
DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:=EMA(DIFF,9);
RM:1000*(DIFF-DEA);
RM1:=REF(RM,1);
RM2:=REF(RM,2);
RM3:=REF(RM,3);
RM4:=REF(RM,4);
KD:=C>OD1;//多头开仓条件
KDD:=RM1<0&&RM2<0&&RM3<0&&RM1-RM2>0&&RM2-RM3<0&&C>BKPRICE&&BARSBK>20;//多头加仓条件
KD&&BKVOL=0,BK(1);
KDD&&BKVOL>=1&&ISLASTBK,BK(1);
技术人员回复
日期:2018-8-31 11:33
投资者咨询:大括号和小括号的嵌套规则问题 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-8-31 10:17
投资者咨询:大括号和小括号的嵌套规则问题 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-8-31 10:17