大括号和小括号的嵌套规则问题 (文华财经WH8赢智V8.2)

投资者咨询:大括号和小括号的嵌套规则问题 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-8-31 10:17
 
1、{()}

2、 { { { {}}}}

3、(((())))

 4、{ { { {(((())))}}}}

 5、{( {()})}

上面几种嵌套都可以吗
技术人员回复
日期: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
已为您问的是趋势模型,趋势模型中只能用()

算法模型中1楼形式都能用

大括号表示分段,里面的内容是一部分,书写后可以在前面点击+- 隐藏或显示
 
多种嵌套是便于查找问题,内容分部分显示,没什么特殊意义
投资者咨询:大括号和小括号的嵌套规则问题 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-8-31 10:17
好的,感谢您的耐心解答,我是新手还请您多多包涵

还有一个问题的,趋势模型和算法模型有什么不同呢
技术人员回复
日期:2018-8-31 11:03
趋势模型是用来加载k线,进行开平仓判断和全自动交易的,编写语言使用比较简单的麦语言

算法模型在独立的运行池,基于每笔tick来判断,主要用于实现精细化下单,比如挂、撤单控制,语言更灵活,也更复杂,和初级的C语言类似

如果您刚接触程序化,建议先体验下趋势模型,大多数思路都可以实现


投资者咨询:大括号和小括号的嵌套规则问题 (文华财经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
 您添加平仓条件后再试下

比如 ISDOWN,SP(BKVOL);

因为正常指令一次交易中只能运行一次,不会重复执行的
投资者咨询:大括号和小括号的嵌套规则问题 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-8-31 10:17
好的
投资者咨询:大括号和小括号的嵌套规则问题 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-8-31 10:17
 老师,算法交易模型去哪里学习,能发个链接给我吗,我想关注一下