以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  求老师改写金字塔交易模型  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=165052)

--  作者:博云
--  发布时间:2018/8/21 9:00:34
--  求老师改写金字塔交易模型

老师你好,,这是文华财经版本的交易系统,麻烦您给改成金字塔版本的交易系统,可以吗?万分感谢

 

BKVOL=0 AND BUYPK AND DIRECTION>=0,bpk(VAR1);
SKVOL=0 AND SELLPK AND DIRECTION<=0,spk(VAR1);

BKVOL>0 AND BUYJ1,BK(VAR1);
SKVOL>0 AND SELLJ1,SK(VAR1);

BKVOL>0 AND BUYJ2,BK(VAR1);
SKVOL>0 AND SELLJ2,SK(VAR1);

SELLS,SP(BKVOL);
BUYS,BP(SKVOL);


--  作者:FireScript
--  发布时间:2018/8/21 9:34:38
--  
 DIRECTION 是什么意思?我没有查到具体含义,是你自定义的变量还是什么?

--  作者:博云
--  发布时间:2018/8/21 11:11:10
--  

PARAM1:=5;
PARAM2:=40;
PARAM3:=150;

FUND:=20000;
DIRECTION:=0;
VAR1 : =MAX(1,INTPART(FUND/(O*MULTIPLIER*0.1)));


--  作者:博云
--  发布时间:2018/8/21 11:16:09
--  

PARAM1:=5;
PARAM2:=40;
PARAM3:=150;

FUND:=20000;
DIRECTION:=0;
VAR1 : =MAX(1,INTPART(FUND/(O*MULTIPLIER*0.1)));


--  作者:博云
--  发布时间:2018/8/21 11:24:55
--  

是自己定义的变量

 


--  作者:FireScript
--  发布时间:2018/8/21 14:01:24
--  
 里面有部分变量没有定义,这个你需要自行去补充下,因为你上面贴的代码也没涉及到他们的定义

PARAM1:=5;
PARAM2:=40;
PARAM3:=150;

FUND:=20000;
DIRECTION:=0;
VAR1 : =MAX(1,INTPART(FUND/(O*MULTIPLIER*0.1)));

if  BUYPK AND DIRECTION>=0 then
BEGIN
SELLSHORT(holding<0,holding,market);
buy(holding=0,1,market);
END

if  SELLPK AND DIRECTION<=0 then
BEGIN
SELL(holding>0,holding,market);
BUYSHORT(holding=0,1,market);
END

buy(HOLDING>0 AND BUYJ1,1,market);
buyshort(HOLDING<0 AND SELLJ1,1,market);

buy(HOLDING>0 AND BUYJ2,1,market);
buyshort(HOLDING<0 AND SELLJ2,1,market);

sell(SELLS and holding>0,holding,market);
sellshort(BUYS and holding<0,holding,market);


--  作者:博云
--  发布时间:2018/8/21 14:34:37
--  

老师    ,好像还是有点问题,我把全部策略的代码发给你看一下,可以吗


--  作者:博云
--  发布时间:2018/8/21 14:36:33
--  
PARAM1:=5;
PARAM2:=40;
PARAM3:=150;

FUND:=20000;
DIRECTION:=0;
VAR1 : =MAX(1,INTPART(FUND/(O*MULTIPLIER*0.1)));

N_TR : =26;
VAR2 : =MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
VAR3 : =MA(VAR2,N_TR);

SHORT: =12;
LONG : =26;
M    : =9;
VAR4 : =EMA(CLOSE,SHORT*PARAM1) - EMA(CLOSE,LONG*PARAM1);
VAR5 : =EMA(VAR4,M*PARAM1);
VAR6 : =VAR4 - VAR5;

VAR7 : =EMA(CLOSE,SHORT*PARAM2) - EMA(CLOSE,LONG*PARAM2);
VAR8 : =EMA(VAR7,M*PARAM2);
VAR9 : =VAR7 - VAR8;

VAR10: =MA(HHV(HIGH,PARAM3),PARAM3);
VAR11: =MA(LLV(LOW,PARAM3),PARAM3);
VAR12: =(VAR10+VAR11)*0.5;

VAR13: =REF(VAR12,BARSLAST(REF(BKVOL,1)=0 AND BKVOL>0));
VAR14: =REF(VAR12,BARSLAST(REF(SKVOL,1)=0 AND SKVOL>0));

BOOL1: =CROSS(CLOSE,VAR10);
BOOL2: =CROSS(VAR11,CLOSE);
VAR15: =BARSLAST(BOOL1);
VAR16: =BARSLAST(BOOL2);

BOOL3: =VAR15<VAR16;
BOOL4: =VAR15>VAR16;

BUYPK : =BARPOS>PARAM3 AND BOOL1;
SELLPK: =BARPOS>PARAM3 AND BOOL2;

BUYJ1 : =BARPOS>PARAM3 AND CLOSE>BKPRICE+VAR3;
SELLJ1: =BARPOS>PARAM3 AND CLOSE<SKPRICE-VAR3;

BUYJ2 : =BARPOS>PARAM3 AND VAR9>0 AND VAR6>0 AND BOOL3 AND CLOSE>BKPRICE;
SELLJ2: =BARPOS>PARAM3 AND VAR9<0 AND VAR6<0 AND BOOL4 AND CLOSE<SKPRICE;

SELLS : =CLOSE<=VAR13;
BUYS  : =CLOSE>=VAR14;


BKVOL=0 AND BUYPK AND DIRECTION>=0,bpk(VAR1);
SKVOL=0 AND SELLPK AND DIRECTION<=0,spk(VAR1);

BKVOL>0 AND BUYJ1,BK(VAR1);
SKVOL>0 AND SELLJ1,SK(VAR1);

BKVOL>0 AND BUYJ2,BK(VAR1);
SKVOL>0 AND SELLJ2,SK(VAR1);

SELLS,SP(BKVOL);
BUYS,BP(SKVOL);
//TRADE_OTHER(\'AUTO\');

--  作者:FireScript
--  发布时间:2018/8/21 14:44:19
--  
 PARAM1:=5;
PARAM2:=40;
PARAM3:=150;

FUND:=20000;
DIRECTION:=0;
VAR1 : =MAX(1,INTPART(FUND/(O*MULTIPLIER*0.1)));

N_TR : =26;
VAR2 : =MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
VAR3 : =MA(VAR2,N_TR);

SHORT: =12;
LONG : =26;
M    : =9;
VAR4 : =EMA(CLOSE,SHORT*PARAM1) - EMA(CLOSE,LONG*PARAM1);
VAR5 : =EMA(VAR4,M*PARAM1);
VAR6 : =VAR4 - VAR5;

VAR7 : =EMA(CLOSE,SHORT*PARAM2) - EMA(CLOSE,LONG*PARAM2);
VAR8 : =EMA(VAR7,M*PARAM2);
VAR9 : =VAR7 - VAR8;

VAR10: =MA(HHV(HIGH,PARAM3),PARAM3);
VAR11: =MA(LLV(LOW,PARAM3),PARAM3);
VAR12: =(VAR10+VAR11)*0.5;

VAR13: =REF(VAR12,BARSLAST(REF(holding,1)=0 AND holding>0));
VAR14: =REF(VAR12,BARSLAST(REF(holding,1)=0 AND holding<0));

BOOL1: =CROSS(CLOSE,VAR10);
BOOL2: =CROSS(VAR11,CLOSE);
VAR15: =BARSLAST(BOOL1);
VAR16: =BARSLAST(BOOL2);

BOOL3: =VAR15<VAR16;
BOOL4: =VAR15>VAR16;

BUYPK : =BARPOS>PARAM3 AND BOOL1;
SELLPK: =BARPOS>PARAM3 AND BOOL2;

BUYJ1 : =BARPOS>PARAM3 AND CLOSE>ENTERPRICE+VAR3 and holding>0;
SELLJ1: =BARPOS>PARAM3 AND CLOSE<ENTERPRICE-VAR3 and holding<0;

BUYJ2 : =BARPOS>PARAM3 AND VAR9>0 AND VAR6>0 AND BOOL3 AND CLOSE>ENTERPRICE and holding>0;
SELLJ2: =BARPOS>PARAM3 AND VAR9<0 AND VAR6<0 AND BOOL4 AND CLOSE<ENTERPRICE and holding<0;

SELLS : =CLOSE<=VAR13;
BUYS  : =CLOSE>=VAR14;


if  BUYPK AND DIRECTION>=0 then
BEGIN
SELLSHORT(holding<0,holding,market);
buy(holding=0,1,market);
END

if  SELLPK AND DIRECTION<=0 then
BEGIN
SELL(holding>0,holding,market);
BUYSHORT(holding=0,1,market);
END

buy(HOLDING>0 AND BUYJ1,1,market);
buyshort(HOLDING<0 AND SELLJ1,1,market);

buy(HOLDING>0 AND BUYJ2,1,market);
buyshort(HOLDING<0 AND SELLJ2,1,market);

sell(SELLS and holding>0,holding,market);
sellshort(BUYS and holding<0,holding,market);


前面的代码做下修改就可以了,不过毕竟是不同软件的代码。软件的实现机制还是有差异的,这个需要悉知。

--  作者:博云
--  发布时间:2018/8/21 14:45:15
--  

好的,谢谢了,老师,您辛苦了