[求助]代码求助 (文华财经WH8赢智V8.2)

投资者咨询:[求助]代码求助 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-7-23 8:25
  Y:=(H+L)/2;
AA: =REF((SMA(Y, 5, 1)), 3);
BB: =REF ((SMA (Y, 8,1)), 5);
CC: =REF((SMA(Y, 13, 1)),8);
R2:=REF(BB,5);
KU1: = IFELSE(H=HHV(H,3), 1,0);
KD1 :=IFELSE(L=LLV(LOW, 3), 1,0);
UL:=IFELSE(REF(KU1,2) = 1 AND REF(KU1, 1)=0 AND
KU1=0, REF (HIGH, 2), REF (HIGH, 2+BARSLAST (REF(KU1, 2) = 1 AND REF (KU1, 1)=0 AND KU1=0))); 
DL:=IFELSE(REF(KD1,2) = 1 AND REF(KD1, 1)=0 AND
KD1 =0, REF (LOW, 2), REF (LOW, 2+BARSLAST (REF (KD1,2) =1 AND REF(KD1, 1)=0 AND KD1=0))); 
SHANG: IFELSE (HIGH>=R2, UL, REF (UL, BARSLAST (HIGH>R2)));
XIA: IFELSE (LOW<=R2, DL,REF(DL, BARSLAST (LOW <=R2)));
C>SHANG AND REF (CLOSE, 1)<REF (SHANG, 1) AND ISLASTBPK=0 ,BPK;
C<XIA AND REF(CLOSE,1)> REF (XIA, 1) AND ISLASTSPK=0,SPK;
A0:=SMA(Y, 5, 1)-SMA(Y, 34, 1);

AC:=SMA((A0-SMA(A0,5,1)),5,1);
A0>REF(A0, 1) AND REF (A0, 1)>REF(A0, 2) AND AC>REF(AC, 1) AND REF (AC, 1)>REF(AC,2) AND  C>REF (C, 1) AND BUYVOL<4 AND ISLASTBPK=1, BK;
A0<REF(A0, 1) AND REF (A0, 1)<REF(A0, 2) AND AC<REF(AC, 1) AND REF (AC, 1)<REF (AC, 2) AND C<REF(C,1) AND BUYV0L<4 AND ISLASTSPK=1, SK;
//A:=MINPRICE ('IF1207');
(((C<=BKPRICE-SL*MINPRICE||C>=BKPRICE+TP*A)&&BKPRICE>0) OR (C>R2)) AND SELLVOL>0, SP; 
(((C>=SKPRICE+SL*MINPRICE||C<=SKPRICE-TP*A)&&SKPRICE>0) OR (C<R2)) AND BUYVOL>0,BP;
以上是鳄鱼线,SELLVOL与BUYVOL函数并没有,请问应该怎么写?
投资者咨询:[求助]代码求助 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-7-23 8:25
 下面是交易指令,请问如何改写成麦语言,与上面的代码结合?
VAR N;//定义总手数。
VAR KPN;//定义每批手数。
VAR M;//定义价格划点参数。
VAR STATUS; //这个变量的作用是控制由价差过大而影响下单的走势。
VAR PRICE;
VAR A;//控制开平仓次数 VOID MAIN0//主函数。{
M=10;
N-3;//设定总手数为3 KPN-1;//设定每批1手。
A=L;
STATUS=READGLOBAL (NSTATUS,R);
PRICE=PRICE (F-DEALCODE 0); //定义最新价为当前模型所加载合约的最新价 IF (F-FRESHSIG 0 ==L&&F_SIGVAL ID 0 ==1) //取得新信号且信号不消失 (
STATUS=0;
IF((F.SIG() ==BK| | F.SIG 0 ==SK) &&STATUS==0MF.SE 1 LPOS I T ION () <NMF.BUYPOSI TION
()<N)//当前信号为开仓信号的时候。
{
KTDEAL (); //运行开仓分批函数。
}
ELSE IF ((F.SIG 0==BP| |F.SIG() ==SP) &&STA TUS==0) //当前信号为平仓信号的时
候。
{
PTDEA 1 (); //运行平仓分批函数。
}
ELSE IF ((F.SIG 0 ==BPK I I F.SIG () ==SPK) &&STATUS==0) //当前信号为平开仓
信号的时候。
{
TDEALO;//运行平开仓函数。
ELSE IF (F-FRESHSIG 0 ==0) //取得处理过的信号
IF((F_SIG()==BK| | F.SIG 0 ==SK) MSTATUS==0&&F.SE 1 LPOSI T ION () <=N&&F.BUYPOSI TIO N 0 <=N)//当前信号为开仓信号的时候。
{
KTDEA 1 (); //运行开仓分批函数。
}
ELSE IF ((F.SIG ()==BP| |F.SIG ()==SP)&&STATUS==0) //当前信号为平仓信号的时
候。
{
PTDEALO;//运行平仓函数。
IF ((F.SIG 0 ==BPKI IF.SIG 0 ==SPK)MSTATUS==0) //当前信号为平仓信号 的时候。
{
TDEAL 0 ; //运行平开仓分批函数。
)
}
ELSE IF (F―S I GVA 1 I D () ==0) // 当前信号消失
{
BTDEAL (); //执行信号消失处理函数
}
WRITEGLOBAL ("STATUS”,STATUS);//将本次运行过后的下单状态写到到注册表中。} VOID KTDEALO//定义开仓分批函数
{ IF(F.SIG () ==BK&&F.BUYPOSITION () <N && A==L)//如果当前信号为BK。
{
IF (ABS (PRICE (F―DEALCODE ()) -F-BUYAVGPRICE ()) <=M) //如果当前价格与信号 发出时价格差不大于M
{
T.DEAL (F-DEALCODE (),0,0, KPN, OFFERS (F.DEALCODE (),,RASKL”); //
做多KPN手数。
A=0;
}
投资者咨询:[求助]代码求助 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-7-23 8:25
 ELSE
IF(T-ISNOORDER() !=1&&ABS(PRICE (F.DEAICODE ())-F.SIGPRICE 0)>M*MINPRICE (F.DEAICOD E())) //如果当前价格与信号发出时价格差大于M且有挂单
{
MESSAGEOUT (”价差过大N);
T-DELETEORDERAL 1 ();
STA TUS=L;
} }
ELSE IF (F.SIG () ==SK&&F.SELLPOSI T ION () <=N && A==0)//如果当前信号为SK。
{
IF (ABS (PRICE (F.DEALCODE ()) -F.SEL LAVGPR ICE 0) <=M)"如果当前价格与信 号发出时价格差不大于M
{
T―DEA 1 (F.DEALCODE 0,1,0,KPN, OFFERS (F.DEALCODE 0,"BIDL")); //做空KPN手数。
A=L; }
ELSE
IF(T_ISNOORDER()!=1&&ABS (PRICE (F^DEAICODE 0)-F-SIGPRICE ())>M*MINPRICE (F.DEALCOD
E ())) //如果当前价格与信号发出时价格差大于M且有挂单
{
MESSAGEOUT (”价差过大”);
T-DELETEORDERAL 1 ();
STATUS=L;
}
)
ELSE
{ MESSAGEOUT (”等待成交");//其他情况显示“等待成交”。
} ) VOID PTDEAL ()//定义平仓函数{
IF (F-SE LLPOSITION () >=01 I F.BUYPOS IT ION () >=0) //如果已有持仓的手数大于 0 {
IF (F.SIG 0 ==BP) //如果当前信号为BP。 {
T-DEAL (F-DEALCODE (), 0,1,F―SEL LPOS IT ION (), OFFERS (F―DEALCODE (),"ASKL ”));//平 空仓指定手数。
//此句中T-DEAL的第3个参数为1,表示平仓,只适用于非上交所合约,如 果绑定上交所合约时,请将1改为2即可。下同理。
} ELSE IF(F_SIG()==SP)//如果当前信号为SP。 {
T-DEAL (F-DEALCODE 0,1,1, F.BUYPOS I T ION 0 , OFFERS (F-DEALCODE (),"BIDL"));//平多 仓指定手数。 } ELSE
{ MESSAGEOUT ("等待成交’?);//其他情况显示“等待成交”。
} } }
VOID TDEAL ()//定义开仓分批函数 {
IF (F.SIG ()==BPK) //如果信号是买平开信号 {
IF (F-SELLPOSITIONO>0 && F-SEL LPOSITION () <KPN && A==L)//如果当前模型空 头持仓大于0小于KPN
T-DEAL (F-DEALCODE (), 0,1, F.SEL LPOSI TION (), PRICE+2*MINPRICE (F.DEAICODE ())); //
以当前模型空头持仓手数发出买平委托
//此句中T-DEAL的第3个参数为1,表示平仓,只适用于非上交所合约,如果绑 定上交所合约时,请将1改为2即可。
T-DEAL (F. DEAL CODE 0,0, 0,KPN,PRICE+2*MINPRICE (F-DEALCODE 0));//以 KPN 手发出买开委托


ELSE IF (F.SE LLPOSITION () >=KPN && A==L)//如果当前空头持仓大于等于 KPN 手 {
T-DEAL (F-DEALCODE (),0,1,KPN, PRICE+2*MINPRICE (F-DEALCODE ()));//以KPN 手发出买平委托
//此句中T-DEAL的第3个参数为1,表示平仓,只适用于非上交所合约,如果绑 定上交所合约时,请将1改为2即可。
T-DEAL (F. DEAL CODE (),0,0,KPN,PRICE+2*MINPR ICE (F-DEA ICODE ()));//以 KPN
手发出买开委托
A=0;
ELSE IF (F.SELLPOSITIONO ==0&& A二 =1)//空头持仓为0 {
MESSAGEOUT ("当前没有空头持仓?’);
投资者咨询:[求助]代码求助 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-7-23 8:25
 T.DEAL (F.DEALCODE (), 0, 0, KPN,PRICE+2*MINPRICE (F―DEALCODE ()));//以KPN 手发出买开委托
A=0;
IF (F.SIG()==SPK) //如果信号是卖平开信号 {
IF (F.BUYPOSITION ()>0 && F.BUYPOSITION () <KPN&& A==0)//如果当前模型多头持 仓大于0小于KPN
T 一 DEAL (F.DEALCODE (),1,1,F.BUYPOS IT ION (), PR ICE-2 *MINPR ICE (F.DEALCODE ())); // 以当前模型多头持仓手数发出卖平委托
//此句中T-DEAL的第3个参数为1,表示平仓,只适用于非上交所合约,如果绑 定上交所合约时,请将1改为2即可。
T-DEAL (F.DEALCODE 0,1, 0,KPN,PR ICE - 2*MINPR ICE (F-DEALCODE ()));//以 KPN
手发出卖开委托


ELSE IF (F.BUYPOS IT ION 0>=KPN && A==0)//如果当前空头持仓大于 KPN 手 {
T-DEAL (F.DEALCODE (), 1, 1,KPN,PR ICE - 2*MINPRICE (F―DEALCODE ()));//以 KPN 手发出卖平委托
//此句中T_DEAL的第3个参数为1,表示平仓,只适用于非上交所合约,如果绑 定上交所合约时,请将1改为2即可。
T-DEAL (F.DEALCODE0,1, 0, KPN, PRICE-2*MINPRICE (F.DEALCODE ()));//以KPN 手发出卖开委托
A=L;
}
ELSE IF (F.BUYPOS IT ION () ==0 M A==0)//多头持仓为 0 {
MESSAGEOUT ("当前没有多头持仓");
T.DEAL (F.DEALCODE (), 1, 0, KPN,PRICE-2*MINPRICE (F―DEALCODE ()));//以KPN 手发出卖开委托
A=L;
VOID BTDEAL () //信号消失处理函数
IF (F.SIGO ==BPK)
{
IF (F.BUYPOSITION ()>0 && F.BUYPOSITION ()<KPN && A==L)//如果当前模型多头 持仓大于0小于KPN
T-DEAL (F―DEALCODE 0,1,1, F.BUYPOSITION (), PR ICE-2*MINPRICE (F.DEALCODE ()));
//以当前模型多头持仓手数发出卖平委托,此句中T-DEA 1的第3个参数为1,表 示平仓,只适用于非上交所合约,如果绑定上交所合约时,请将1改为2即可。
A=0;
}
ELSE IF (F.BUYPOSITION 0 >=KPN && A==L)//如果当前多头持仓大于KPN手 {
T-DEAL (F』EALCODE (),1,1,KPN,PRICE-2*MINPRICE (F-DEALCODE 0));
//以KPN手发出卖平委托,此句中T_DEAL的第3个参数为1,表示平仓,只适用 于非上交所合约,如果绑定上交所合约时,请将〗改为2即可。
A=0;
}
ELSE IF (F.BUYPOSITION () ==0)
{
MESSAGEOUT ("当前没有多头持仓");
IF (F.SIGO ==SPK)
{
IF (F.SELLPOSITION ()>0 && F.SEL LPOSI TION () <KPN && A==0)//如果当前模型空 头持仓大于0小于KPN
T-DEAL (F-DEALCODE (),0,1,F-SELLPOSITION (),PRICE+2*MINPRICE (F-DEALCODE ()));
//以当前模型空头持仓手数发出买平委托,此句中T-DEAL的第3个参数为1,表 示平仓,只适用于非上交所合约,如果绑定上交所合约时,请将1改为2即可。
A=L;
}
ELSE IF (F.SELLPOSITION () >=KPN && A==0)//如果当前模型空头持仓大于KPN {
T.DEA 1 (F-DEA1 CODE 0,0,1,KPN, PRICE+2*MINPRICE (F-DEA1 CODE 0));
//以KPN手数发出买平委托,此句中T-DEAL的第3个参数为1,表示平仓,只适用 于非上交所合约,如果绑定上交所合约时,请将1改为2即可。
A=L;
}
ELSE IF (F―SELLPOSI T ION 0 ==0)
MESSAGEOUT (”当前没有空头持仓");
IF (F_SIG()==BK)//如果BK信号消失
{
T-DEAL (F-DEALCODE0,1,1,KPN,PRICE-2*MINPRICE (F.DEAICODE ())); //当前合约 平掉误开仓手数KPN
//此句中T-DE.AL的第3个参数为1,表示平仓,只适用于非上交所合约,如果绑定上 交所合约时,请将1改为2即可。
}
ELSE IF (F-SIGO==SK)//如果SK信号消失 {
T-DEAL (F-DEAICODE (), 0, 1, KPN, PR ICE+2*MINPRICE (F-DEAICODE ())); //当前合约 平掉误开仓手数KPN
//此句中T-DEAL的第3个参数为1,表示平仓,只适用于非上交所合约,如果绑定上 交所合约时,请将1改为2即可。
}
ELSE IF (F-SIG()==BP)//如果BP信号消失 {
T-DEAL (F_DEALCODE 0,1,0, KPN, PRICE-2*MINPRICE (F.DEA 1 CODE ())); //当前合约
重新卖开误平仓手数KPN }
ELSE IF (F-SIG()==SP)//如果SP信号消失 {
T-DEA 1 (F-DEAICODE (),0,0,KPN, PRICE+2*MINPRICE (F-DEAICODE ())); //当前合约 重新买开仓误平仓手数KPN
技术人员回复
日期:2018-7-23 8:57
 分析后回复
投资者咨询:[求助]代码求助 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-7-23 8:25
 谢谢,期待您的回复
技术人员回复
日期:2018-7-23 9:42

 1楼趋势模型修改参考:

 

  Y:=(H+L)/2;
AA: =REF((SMA(Y, 5, 1)), 3);
BB: =REF ((SMA (Y, 8,1)), 5);
CC: =REF((SMA(Y, 13, 1)),8);
R2:=REF(BB,5);
KU1: = IFELSE(H=HHV(H,3), 1,0);
KD1 :=IFELSE(L=LLV(LOW, 3), 1,0);
UL:=IFELSE(REF(KU1,2) = 1 AND REF(KU1, 1)=0 AND
KU1=0, REF (HIGH, 2), REF (HIGH, 2+BARSLAST (REF(KU1, 2) = 1 AND REF (KU1, 1)=0 AND KU1=0)));
DL:=IFELSE(REF(KD1,2) = 1 AND REF(KD1, 1)=0 AND
KD1 =0, REF (LOW, 2), REF (LOW, 2+BARSLAST (REF (KD1,2) =1 AND REF(KD1, 1)=0 AND KD1=0)));
SHANG: IFELSE (HIGH>=R2, UL, REF (UL, BARSLAST (HIGH>R2)));
XIA: IFELSE (LOW<=R2, DL,REF(DL, BARSLAST (LOW <=R2)));
C>SHANG AND REF (CLOSE, 1)<REF (SHANG, 1) AND ISLASTBPK=0 ,BPK;
C<XIA AND REF(CLOSE,1)> REF (XIA, 1) AND ISLASTSPK=0,SPK;
A0:=SMA(Y, 5, 1)-SMA(Y, 34, 1);

SL:=10;
TP:=10;
A:=1;
AC:=SMA((A0-SMA(A0,5,1)),5,1);
A0>REF(A0, 1) AND REF (A0, 1)>REF(A0, 2) AND AC>REF(AC, 1) AND REF (AC, 1)>REF(AC,2) AND  C>REF (C, 1) AND BKVOL<4 AND ISLASTBPK=1, BK;
A0<REF(A0, 1) AND REF (A0, 1)<REF(A0, 2) AND AC<REF(AC, 1) AND REF (AC, 1)<REF (AC, 2) AND C<REF(C,1) AND BKVOL<4 AND ISLASTSPK=1, SK;
//A:=MINPRICE ('IF1207');
(((C<=BKPRICE-SL*MINPRICE||C>=BKPRICE+TP*A)&&BKPRICE>0) OR (C>R2)) AND SKVOL>0, SP;
(((C>=SKPRICE+SL*MINPRICE||C<=SKPRICE-TP*A)&&SKPRICE>0) OR (C<R2)) AND BKVOL>0,BP;
AUTOFILTER;

 

1楼趋势模型装入模组后,可由后续的算法模型进行委托处理

 

 
投资者咨询:[求助]代码求助 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-7-23 8:25
 下面那部分代码,可以帮忙转化成文华语言吗?
技术人员回复
日期:2018-7-23 10:04

 分析您2楼到4楼的源码有缺失以及乱码的情况,无法直接改写的

 

此外,这部分源码属于算法模型的编写较复杂

 

您可以将算法部分的思路整理出来直接通过编写为文华的算法模型

 

算法模型可以参考下帖中1楼中的高级教程资料学习一下:【学习资料】程序化培训教程、名词解释,文华能帮我编模型?

 

――――――――――――――――――――――――

 

如果自身编写能力有限,算法模型需要专门开发人员编写
 
如果您需要我们帮助您编写完整的模型,可以考虑购买WH8授权成为VIP实盘客户,您考虑一下

有关WH8授权,您可以拨打 400-811-3366 咨询