以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  请老师帮忙将文华模型改写成金字塔模型,谢谢了!  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=168421)

--  作者:云潇逸士
--  发布时间:2019/2/25 16:36:44
--  请老师帮忙将文华模型改写成金字塔模型,谢谢了!

请老师帮忙将下面文华跨周期模型改写成金字塔模型,在此谢谢了!

 

TXYHXJSJK(被引用指标)

RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;//收盘价与N周期最低值做差,N周期最高值与N周期最低值做差,两差之间做比值。
K:=SMA(RSV,3,1);//RSV的移动平均值
D:=SMA(K,3,1);//K的移动平均值

PB1:=(EMA(CLOSE,4)+MA(CLOSE,4*2)+MA(CLOSE,4*4))/3;
PB2:(EMA(CLOSE,6)+MA(CLOSE,6*2)+MA(CLOSE,6*4))/3;
PB3:(EMA(CLOSE,9)+MA(CLOSE,9*2)+MA(CLOSE,9*4))/3;
PB4:(EMA(CLOSE,13)+MA(CLOSE,13*2)+MA(CLOSE,13*4))/3;
PB5:=(EMA(CLOSE,18)+MA(CLOSE,18*2)+MA(CLOSE,18*4))/3;
PB6:=(EMA(CLOSE,24)+MA(CLOSE,24*2)+MA(CLOSE,24*4))/3;
BK1:=  (PB2>PB3 && PB3>PB4) || K>D  || (PB2>REF(PB2,1) && PB3>REF(PB3,1) && PB4>REF(PB4,1));
SK1:=(PB2<PB3 && PB3<PB4) || K<D || (PB2<REF(PB2,1) && PB3<REF(PB3,1) && PB4<REF(PB4,1));

 

------------------------------------------------------

跨周期指标

#IMPORT [ DAY,1,TXYHXJSJK ] AS VAR1
ZD:=VAR1.BK1;
ZK:=VAR1.SK1;
RSV:=(CLOSE-LLV(LOW,30))/(HHV(HIGH,8)-LLV(LOW,54))*100;
K:=SMA(RSV,1,80);
D:=SMA(K,9,58);
MA1:=MA(C,19);
MA2:=MA(C,15);
ATR:=ABS(CLOSE-REF(CLOSE,22))/(HHV(HIGH,6)-LLV(L,55))*100;
AA1:=ABS(C-REF(C,1))>=REF(HHV(ABS(H-L),42),1);//
AA2:=ABS(C-REF(C,2))>= REF(HHV(ABS(C-REF(C,2)),48),1);
TMP:=STD(C,17);
KPJ:=VALUEWHEN(DATE<>REF(DATE,1),O);
SPJ:=VALUEWHEN(DATE<>REF(DATE,1),C);
SG:=MAX(KPJ,SPJ)+10/100*12*TMP;
XG:=MIN(KPJ,SPJ)-10/100*8*TMP;
ISUP&&(AA1||AA2)&& BARSSK>4&&D>1&&ATR>21 AND LASTSIG=201,BP;
ISUP&&(AA1||AA2)&& BARSSK>9&&D>1&&ATR>51 AND LASTSIG<>201&&ZD,BK;
ISDOWN&&(AA1||AA2)&& BARSBK>15&&D<99&&ATR>4 AND LASTSIG=200 ,SP;
ISDOWN&&(AA1||AA2)&& BARSBK>21&&D<99&&ATR>1 AND LASTSIG<>200&&ZK ,SK;
C>SG&&ATR>24 && MA1>MA2&&C>SKPRICE AND LASTSIG=201,BP;
C>SG&&ATR>38 && MA1>MA2&&C>SKPRICE AND LASTSIG<>201&&ZD,BK;
C<XG&&ATR>6 && MA1<MA2&&C<BKPRICE AND LASTSIG=200,SP;
C<XG&&ATR>9 && MA1<MA2&&C<BKPRICE AND LASTSIG<>200&&ZK,SK;
C>=SKPRICE*(1+0.0001*132),BP;
C<=BKPRICE*(1-0.0001*137),SP;
C<SKPRICE*(1-0.001*149),BP;
C>BKPRICE*(1+0.001*150),SP;
C<BKHIGH*(1-0.001*105) ,SP;
C>SKLOW*(1+0.001*105),BP;
SETALLSIGPRICETYPE(LIMIT_ORDER);
TRADE_OTHER(\'AUTO\');
AUTOFILTER;

 

                                                                                      再次谢谢老师了!


--  作者:FireScript
--  发布时间:2019/2/25 17:15:51
--  
 处理中,请注意本帖的回复。
--  作者:FireScript
--  发布时间:2019/2/26 9:55:29
--  
 被引用指标代码不需要动。把代码复制到一个单独指标中编译下即可:

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看


第二部分:



ZD:STKINDI(\'\',\'TXYHXJSJK.BK1\',0,6,0);
ZK:STKINDI(\'\',\'TXYHXJSJK.SK1\',0,6,0);


RSV:=(CLOSE-LLV(LOW,30))/(HHV(HIGH,8)-LLV(LOW,54))*100;
K:=SMA(RSV,1,80);
D:=SMA(K,9,58);
MA1:=MA(C,19);
MA2:=MA(C,15);
ATR:=ABS(CLOSE-REF(CLOSE,22))/(HHV(HIGH,6)-LLV(L,55))*100;
AA1:=ABS(C-REF(C,1))>=REF(HHV(ABS(H-L),42),1);//
AA2:=ABS(C-REF(C,2))>= REF(HHV(ABS(C-REF(C,2)),48),1);
TMP:=STD(C,17);
KPJ:=VALUEWHEN(DATE<>REF(DATE,1),O);
SPJ:=VALUEWHEN(DATE<>REF(DATE,1),C);
SG:=MAX(KPJ,SPJ)+10/100*12*TMP;
XG:=MIN(KPJ,SPJ)-10/100*8*TMP;

if ISUP&&(AA1||AA2)&& (ENTERBARS+1)>4&&D>1&&ATR>21 AND TYPE(1)=3 then  sellshort(holding<0,holding,market);
if ISUP&&(AA1||AA2)&& ((ENTERBARS+1)>9 or ENTERBARS=-1)&&D>1&&ATR>51 AND (TYPE(1)<>3 or type(1)=0)&&ZD then buy(holding=0,1,market);
if ISDOWN&&(AA1||AA2)&& (ENTERBARS+1)>15&&D<99&&ATR>4 AND TYPE(1)=1  then sell(holding>0,holding,market);
if ISDOWN&&(AA1||AA2)&& ((ENTERBARS+1)>21 or ENTERBARS=-1)&&D<99&&ATR>1 AND (TYPE(1)<>1 or type(1)=0)&&ZK then buyshort(holding=0,1,market);
if C>SG&&ATR>24 && MA1>MA2&&C>ENTERPRICE AND TYPE(1)=3 then sellshort(holding<0,holding,market);
if C>SG&&ATR>38 && MA1>MA2&&C>ENTERPRICE AND TYPE(1)<>3&&ZD then buy(holding=0,1,market);
if C<XG&&ATR>6 && MA1<MA2&&C<ENTERPRICE AND TYPE(1)=1 then sell(holding>0,holding,market);;
if C<XG&&ATR>9 && MA1<MA2&&C<ENTERPRICE AND TYPE(1)<>1&&ZK then buyshort(holding=0,1,market);
if C>=ENTERPRICE*(1+0.0001*132)then sellshort(holding<0,holding,market);
if C<=ENTERPRICE*(1-0.0001*137) then sell(holding>0,holding,market);
if C<ENTERPRICE*(1-0.001*149)then sellshort(holding<0,holding,market);;
if C>ENTERPRICE*(1+0.001*150) then sell(holding>0,holding,market);;
if C<hhv(h,ENTERBARS+1)*(1-0.001*105) then sell(holding>0,holding,market);
if C>llv(l,ENTERBARS+1)*(1+0.001*105) then sellshort(holding<0,holding,market);


仅供参考。


--  作者:云潇逸士
--  发布时间:2019/2/26 10:42:42
--  

谢谢老师!


--  作者:云潇逸士
--  发布时间:2019/2/26 16:16:40
--  

#IMPORT[DAY,1,RCOMAI] AS VAR2
RC:=VAR2.RC;
RO:=VAR2.RO;
DD:=VAR2.D;
DB:=VAR2.B;

 

老师您好,我模仿您将上面文华语句改成下面的形式,15分钟跨周期模型,请问对吗?

RC:=STKINDI(\'\',\' RCOMAI.RC\',0,6,0);
RO:=STKINDI(\'\',\' RCOMAI.RO\',0,6,0);
DD:=STKINDI(\'\',\' RCOMAI.D\',0,6,0);
DB:=STKINDI(\'\',\' RCOMAI.B\',0,6,0);


--  作者:FireScript
--  发布时间:2019/2/26 16:18:24
--  
 对的。是这样的。不过 RCOMAI这个必须单独建个指标才行,否则你引用不到。
--  作者:云潇逸士
--  发布时间:2019/2/26 16:19:22
--  
我改了一个文华15分钟跨周期模型成金字塔的,可交易信号有点乱,和文华的不一致,晕。。
--  作者:FireScript
--  发布时间:2019/2/26 16:50:17
--  
 软件不一样,代码逻辑一样情况下也可能有差异,因为软件的实现机制本身肯定有差异的。并且信号之类情况的可能还收到数据量,复权以及其他设置的影响。