以文本方式查看主题

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

--  作者:新手123
--  发布时间:2016/4/16 19:51:35
--  程序

老师。

   你好,能帮忙把这段程序改为我们的金字塔程序吗?谢谢

 

 

//参数:  K1 15   K2 10
SHORT:=12;
LONG:=26;
M:=9;
MA1:=MA(C,10);
MA2:=MA(C,20);
DIFF :=EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);//短周期与长周期的收盘价的指数平滑移动平均值做差。
DEA  :=EMA(DIFF,M);//DIFF的M个周期指数平滑移动平均
MACD:=2*(DIFF-DEA),COLORSTICK;//DIFF减DEA的2倍画柱状线
SJ:=TIME>=0900 AND TIME<=1500;
 CROSS(MA1,MA2) AND CROSS(MACD,0) AND SJ ,BPK;
CROSS(MA2,MA1) AND CROSSDOWN(MACD,0)  AND SJ  ,SPK;
NN:=BARSLAST(DATE<>REF(DATE,1))+1;
HH:=REF(HHV(H,NN),NN);
//昨日最高
HC:=REF(HHV(C,NN),NN);
//昨日最高收盘
LL:=REF(LLV(L,NN),NN);
//昨日最低
LC:=REF(LLV(C,NN),NN);
//昨日最低收盘
RANGER:=IFELSE((HH - LC) >= (HC - LL),HH - LC,HC - LL);
//取最高减去最第收盘。 与 最高收盘减去最低价格, 两者中大的那个
BUYTRIG:=K1/10*RANGER;
SELLTRIG:=K2/10*RANGER;
BUYPOSITION:=REF(OPEN,NN-1)+BUYTRIG;
//今日开盘+一定幅度
SELLPOSITION:=REF(OPEN,NN-1)-SELLTRIG;
//今日开盘-一定幅度
H>BUYPOSITION && NOT(REF(EXIST(H>BUYPOSITION,NN),1)) && COUNT(H>BUYPOSITION && NOT(REF(EXIST(H>BUYPOSITION,NN),1)),NN)<2  AND SJ ,BPK;
L<SELLPOSITION && NOT(REF(EXIST(L<SELLPOSITION,NN),1)) && COUNT(L<SELLPOSITION && NOT(REF(EXIST(L<SELLPOSITION,NN),1)),NN)<2  AND SJ ,SPK;

C<=(BKPRICE-BKPRICE*0.015) ,SP;
C>=(SKPRICE+SKPRICE*0.015),BP;
SETSIGPRICETYPE(BPK,LIMIT_ORDER);//市价下单
SETSIGPRICETYPE(SPK,LIMIT_ORDER);
SETSIGPRICETYPE(BK,LIMIT_ORDER);
SETSIGPRICETYPE(SK,LIMIT_ORDER);
SETSIGPRICETYPE(BP,LIMIT_ORDER);
SETSIGPRICETYPE(SP,LIMIT_ORDER);
CLOSEKLINE(1,10);//收盘前最后1根K线提前10秒走完
AUTOFILTER;


--  作者:jinzhe
--  发布时间:2016/4/18 9:18:42
--  

SHORT:=12;
LONG:=26;
M:=9;
MA1:=MA(C,10);
MA2:=MA(C,20);
DIFF :=EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);//短周期与长周期的收盘价的指数平滑移动平均值做差。
DEA  :=EMA(DIFF,M);//DIFF的M个周期指数平滑移动平均
MACD:=2*(DIFF-DEA),COLORSTICK;//DIFF减DEA的2倍画柱状线
SJ:=TIME>=090000 AND TIME<=150000;
if CROSS(MA1,MA2) AND CROSS(MACD,0) AND SJ then begin
 sellshort(1,0,marketr);
 buy(holding=0,1,marketr);
end
if CROSS(MA2,MA1) AND CROSS(0,macd)  AND SJ then begin
 sell(1,0,marketr);
 buyshort(holding=0,1,marketr);
end
NN:=BARSLAST(DATE<>REF(DATE,1))+1;
HH:=REF(HHV(H,NN),NN);
//昨日最高
HC:=REF(HHV(C,NN),NN);
//昨日最高收盘
LL:=REF(LLV(L,NN),NN);
//昨日最低
LC:=REF(LLV(C,NN),NN);
//昨日最低收盘
RANGER:=IFELSE((HH - LC) >= (HC - LL),HH - LC,HC - LL);
//取最高减去最第收盘。 与 最高收盘减去最低价格, 两者中大的那个
BUYTRIG:=K1/10*RANGER;
SELLTRIG:=K2/10*RANGER;
BUYPOSITION:=REF(OPEN,NN-1)+BUYTRIG;
//今日开盘+一定幅度
SELLPOSITION:=REF(OPEN,NN-1)-SELLTRIG;
//今日开盘-一定幅度
if H>BUYPOSITION && NOT(REF(EXIST(H>BUYPOSITION,NN),1)) && COUNT(H>BUYPOSITION && NOT(REF(EXIST(H>BUYPOSITION,NN),1)),NN)<2  AND SJ then begin
 sellshort(1,0,marketr);
 buy(holding=0,1,marketr);
end
if L<SELLPOSITION && NOT(REF(EXIST(L<SELLPOSITION,NN),1)) && COUNT(L<SELLPOSITION && NOT(REF(EXIST(L<SELLPOSITION,NN),1)),NN)<2  AND SJ then begin
 sell(1,0,marketr);
 buyshort(holding=0,1,marketr);
end

if C<=(enterprice-enterprice*0.015) and holding>0 then sell(1,0,marketr);
if C>=(enterprice+enterprice*0.015) and holding<0 then sellshort(1,0,marketr);

 


--  作者:新手123
--  发布时间:2016/4/18 20:54:26
--  
谢谢