分享

【图】请帮忙把macd和笔中枢指标改成富途牛牛可用的(若您已有可直接使用也可)

 缠道禅 2022-08-01 发布于上海
编号:9980941 悬赏30金钻

请帮忙把macd和笔中枢指标改成富途牛牛可用的(若您已有可直接使用也可)

任务已圆满完成 已托管
共需1 稿 每稿 30 金钻  

每人投稿不限 次数

已采纳1 稿 拒绝1 稿 还需要0 稿
任务需求:
macd指标改写
需求:1,此代码改为富途牛牛可用;
          2,添加一段代码将现在一根红柱比前面一根红柱子低时,用颜色区分开,绿柱子也是同样;
          3,  可以显示面积背离和柱子背离提示,最好还能提示黄白线背离;
          4, 把macd柱子面积显示数字出来。
(代码一)
DIFF : EMA(CLOSE,12) - EMA(CLOSE,26);
DEA  : EMA(DIFF,9);
MACD : 2*(DIFF-DEA), COLORSTICK;
HRULER:=CONST( IF(ISLASTBAR,HHV(MAX(ABS(DIFF),ABS(DEA)),90),0)),NODRAW;
{以下计算红绿柱的面积,当绿柱时,红柱面积为0,反之同理}
绿柱面积:=IF(MACD<0,SUM(MACD,BARSLAST(MACD>0)),0);
红柱面积:=IF(MACD>0,SUM(MACD,BARSLAST(MACD<0)),0);
本次最低绿柱:=IF(MACD<0,LLV(MACD,BARSLAST(MACD>0)),0);
本次最高红柱:=IF(MACD>0,HHV(MACD,BARSLAST(MACD<0)),0);
{以下计算红柱期间的最高价(当绿柱时,本次最高价无效,是随机值)
        计算绿柱期间的最低价(当红柱时,本次最低价无效,是随机值
}
本次最低价:=LLV(L,BARSLAST(MACD>0)),NODRAW;
本次最高价:=HHV(H,BARSLAST(MACD<0));
{绿柱时,统计绿柱的累计数量,红柱时,为0}
X1:=IF (MACD<0,BARSLAST(CROSS(DIFF,DEA)),0),NODRAW;
{绿柱时,表示前一波绿柱的累计面积;
首根红柱时,表示最近的绿柱面积;
其他红柱时,为0
前次最低价,同理;
}
前次绿柱面积:=REF(绿柱面积,X1+1),NODRAW;
前次最低价:=REF(本次最低价,X1+1),NODRAW;
前次最低绿柱:=REF(本次最低绿柱,X1+1);
Y1:=IF((绿柱面积<0 AND ABS(绿柱面积)<ABS(前次绿柱面积)
        AND 本次最低价<前次最低价 ),1,0),NODRAW;
Y11:=IF((绿柱面积<0 AND ABS(本次最低绿柱)<ABS(前次最低绿柱)
        AND 本次最低价<前次最低价 ),1,0),NODRAW;
{下面语句在公式中没有用到}
RS1:=MACD<0 AND REF(MACD,1)<0 AND 本次最低价<前次最低价
        AND ABS(绿柱面积)<ABS(前次绿柱面积) AND ABS(MACD)<ABS(REF(MACD,1));
{UP3为1,表示绿柱,且连续第三根缩短}
UP3:=RS1 AND UPNDAY(MACD,3);
STEP1:=IF(UP3,(MACD-REF(MACD,1))*0.45+(MACD-REF(MACD,2))*0.17+(MACD-REF(MACD,3))*0.07,0);
N1:=IF(UP3,ABS(MACD)/ABS(STEP1),0),NODRAW;
补充绿柱面积:=IF(UP3,IF(N1>1,(N1-1)*MACD/2,0),0);
Y1补:=IF((绿柱面积<0 AND ABS(绿柱面积+补充绿柱面积)<ABS(前次绿柱面积)
AND 本次最低价<前次最低价 ),1,0);
底积将背:= IF( UP3,Y1补,0),NODRAW;
底柱将背:= IF(UP3,Y11,0),NODRAW;
底积背离:= IF (CROSS(DIFF,DEA),REF(Y1,1),0),NODRAW;
底柱背离:= IF(CROSS(DIFF,DEA),REF(Y11,1),0),NODRAW;
底背离:底积背离 AND 底柱背离,NODRAW;
底背程度:=IF(底积将背 OR 底积背离,ABS(前次绿柱面积)/ABS(绿柱面积+补充绿柱面积)*前次最低价/本次最低价,0),NODRAW;
底柱程度:=IF(底柱将背 OR 底柱背离,ABS(前次最低绿柱)/ABS(本次最低绿柱)*前次最低价/本次最低价,0),NODRAW;
PT:=MIN(DIFF,DEA)-HRULER/20;
PT1:=MAX(DIFF,DEA)+HRULER/20;
{
DRAWTEXT(底积将背,0.3,'底积将背'),COLOR00FFFF;
}
DRAWBAND(DIFF,RGB(200,50,55),DEA,RGB(50,100,10));
STICKLINE(底积将背,PT,PT-MIN(底背程度,5)*HRULER/(4*5),2,0),COLORD33AE9;
DRAWICON(底积将背,PT-MIN(底背程度,5)*HRULER/(4*5)-HRULER/20,38),COLORYELLOW;
STICKLINE(底柱将背,PT1,PT1+MIN(底柱程度,5)*HRULER/(4*5),2,0),COLORD33AE9;
DRAWICON(底柱将背,PT1+MIN(底柱程度,5)*HRULER/(4*5)+HRULER/10,1),COLORYELLOW;
DRAWTEXT(底柱背离,PT1+HRULER/8,' 柱背'),COLOR00FFFF;
STICKLINE(底柱背离,PT1,PT1+MIN(底柱程度,5)*HRULER/(4*5),3,0),COLOR0000FF;
DRAWICON(底柱背离,PT1+MIN(底柱程度,5)*HRULER/(4*5)+HRULER/10,34),COLORYELLOW;
DRAWTEXT(底积背离,PT-HRULER/8,' 积背'),COLOR00FFFF;
STICKLINE(底积背离,PT,PT-MIN(底背程度,5)*HRULER/(4*5),3,0),COLOR0000FF;
DRAWICON(底积背离,PT-MIN(底背程度,5)*HRULER/(4*5)-HRULER/20,23),COLORYELLOW;
D_SCORE:=IF(底积背离 AND 底柱背离,100,
                IF(底积背离 OR 底柱背离,80,
                IF(底积将背 AND 底柱将背,90,
                IF(底积将背 OR 底柱将背,70,
                0))));
DT_SOCRE:=IF(D_SCORE>0,D_SCORE,
                IF(REF(D_SCORE,1)>0,REF(D_SCORE,1)*0.8,
                IF(REF(D_SCORE,2)>0,REF(D_SCORE,2)*0.6,
                IF(REF(D_SCORE,3)>0,REF(D_SCORE,3)*0.4,
                IF(REF(D_SCORE,4)>0,REF(D_SCORE,4)*0.2,0) ) )  )),NODRAW;
X2:=IF (MACD>0,BARSLAST(CROSS(DEA,DIFF)),0);
前次红柱面积:=REF(红柱面积,X2+1);
前次最高价:=REF(本次最高价,X2+1);
前次最高红柱:=REF(本次最高红柱,X2+1);
Y2:=IF((红柱面积>0 AND 红柱面积<前次红柱面积 AND 本次最高价>前次最高价 ),1,0);
Y22:=IF((红柱面积>0 AND ABS(本次最高红柱)<ABS(前次最高红柱)
        AND 本次最高价>前次最高价 ),1,0),NODRAW;
RS2:= MACD>0 AND REF(MACD,1)>0 AND C>前次最高价 AND ABS(红柱面积)<ABS(前次红柱面积) AND ABS(MACD)<ABS(REF(MACD,1));
{DOWN3为1,表示红柱,且连续第三根缩短}
DOWN3:=RS2 AND DOWNNDAY(MACD,3);
STEP2:=IF(DOWN3,(MACD-REF(MACD,1))*0.45+(MACD-REF(MACD,2))*0.17+(MACD-REF(MACD,3))*0.07,0);
N2:=IF(DOWN3,ABS(MACD)/ABS(STEP2),0),NODRAW;
补充红柱面积:=IF(DOWN3,IF(N2>1,(N2-1)*MACD/2,0),0);
Y2补:=IF((红柱面积>0 AND ABS(红柱面积+补充红柱面积)<ABS(前次红柱面积)
AND 本次最高价>前次最高价 ),1,0);
顶积将背:= IF( DOWN3,Y2补,0),NODRAW;
顶柱将背:= IF(DOWN3,Y22,0),NODRAW;
顶积背离:= IF (CROSS(DEA,DIFF),REF(Y2,1),0),NODRAW;
顶柱背离:= IF(CROSS(DEA,DIFF),REF(Y22,1),0),NODRAW;
顶背离: 顶积背离 AND 顶柱背离,NODRAW;
顶背程度:=IF(顶积将背 OR 顶积背离,ABS(前次红柱面积)/ABS(红柱面积+补充红柱面积)*本次最高价/前次最高价,0),NODRAW;
顶柱程度:=IF(顶柱将背 OR 顶柱背离,ABS(前次最高红柱)/ABS(本次最高红柱)*本次最高价/前次最高价,0),NODRAW;
{
DRAWICON(顶积背离,0,19),COLOR00FF00;
STICKLINE(顶积背离,0,-0.3,2,0),COLOR00FF00;
DRAWTEXT(顶积背离,-0.3,'顶积背离'),COLORFF0000;
}
STICKLINE(顶积将背,PT,PT-MIN(顶背程度,5)*HRULER/(4*5),2,0),COLORFFFF00;
DRAWICON(顶积将背,PT-MIN(顶背程度,5)*HRULER/(4*5)-HRULER/20,39),COLORYELLOW;
STICKLINE(顶柱将背,PT1,PT1+MIN(顶柱程度,5)*HRULER/(4*5),2,0),COLORFFFF00;
DRAWICON(顶柱将背,PT1+MIN(顶柱程度,5)*HRULER/(4*5)+HRULER/10,2),COLORYELLOW;
DRAWTEXT(顶柱背离,PT1+HRULER/8,' 柱背'),COLOR00FFFF;
STICKLINE(顶柱背离,PT1,PT1+MIN(顶柱程度,5)*HRULER/(4*5),3,0),COLOR00FF00;
DRAWICON(顶柱背离,PT1+MIN(顶柱程度,5)*HRULER/(4*5)+HRULER/10,35),COLORYELLOW;
DRAWTEXT(顶积背离,PT-HRULER/8,' 积背'),COLOR00FFFF;
STICKLINE(顶积背离,PT,PT-MIN(顶背程度,5)*HRULER/(4*5),3,0),COLOR00FF00;
DRAWICON(顶积背离,PT-MIN(顶背程度,5)*HRULER/(4*5)-HRULER/20,45),COLORYELLOW;

NOTEXTSDIFF:DIFF,COLORWHITE;
NOTEXTSDEA:DEA,COLORYELLOW;

NOTEXTMACDDRAW:MACD, COLORSTICK;


(代码二)

DIF:EMA(CLOSE,6)-EMA(CLOSE,13);
DEA:EMA(DIF,5);
MACD:(DIF-DEA)*2,COLORSTICK;
JC:=DEA-DIF;
AA:=BARSLAST(JC<0);
BB:=BARSLAST(JC>0);
T:IFELSE(AA>BB,AA,BB),NODRAW;
绿柱面积:10*IFELSE(MACD<0,SUM(MACD,BARSLAST(JC<0)),0),NODRAW;
红柱面积:10*IFELSE(MACD>0,SUM(MACD,BARSLAST(JC>0)),0),NODRAW;
U:IFELSE(AA>BB,ABS(绿柱面积)/AA,红柱面积/BB),NODRAW;
A1:=IFELSE(MACD<0,LLV(绿柱面积,BARSLAST(JC<0)),0);
A2:=IFELSE(MACD>0,HHV(红柱面积,BARSLAST(JC>0)),0);
DRAWNUMBER(CROSS(DEA,DIF),0+1.2/10,REF(A2,1),2,COLORRED);
DRAWNUMBER(CROSS(DIF,DEA),0-1.2/10,REF(A1,1),2,COLORGREEN);

]需求二:画笔,(代码已经是富途可用的代码,但是觉得画得不是很准确,代码本身是老笔的定义,最好能改为新笔的定义,另外就是显示每一笔之间的K线根数,当然您有更好的代码也可以哈)

代码


老笔:=0;
G:=MA(C,5);D:=MA(C,10);
HH:=REF(H,5)=HHV(H,11);
LL:=REF(L,5)=LLV(L,11);
FG01:=BACKSET(HH,6)>BACKSET(HH,5) ;


FD01:=BACKSET(LL,6)>BACKSET(LL,5) ;
FG02:=IF(BARSLAST(FG01)=BARSLAST(FD01) AND G>D,FG01,IF(BARSLAST(FD01)>BARSLAST(FG01),FG01,0));

FD02:=IF(BARSLAST(FG01)=BARSLAST(FD01) AND D>G,FD01,IF(BARSLAST(FG01)>BARSLAST(FD01),FD01,0));
FG0:=FG02 AND H=HHV(H,BARSLAST(FD02));
FD0:=FD02 AND L=LLV(L,BARSLAST(FG02));
GP:IF(FG0,H,DRAWNULL),POINTDOT,COLORCYAN;


DP:IF(FD0,L,DRAWNULL),POINTDOT,COLORCYAN;
GQ:=L>REF(H,1) AND DAY!=REF(DAY,1);
DQ:=H<REF(L,1) AND DAY!=REF(DAY,1);
GQL:=REF(L,BARSLAST(GQ));
DQH:=REF(H,BARSLAST(DQ));

FGH:=REF(H,BARSLAST(FG0));
FGL:=REF(L,BARSLAST(FG0));
FGH1:=REF(H,BARSLAST(FG0)+1);
FGL1:=REF(L,BARSLAST(FG0)+1);
FGH2:=REF(H,BARSLAST(FG0)+2);
FGL2:=REF(L,BARSLAST(FG0)+2);
FDH:=REF(H,BARSLAST(FD0));
FDL:=REF(L,BARSLAST(FD0));
FDH1:=REF(H,BARSLAST(FD0)+1);
FDL1:=REF(L,BARSLAST(FD0)+1);
FDH2:=REF(H,BARSLAST(FD0)+2);
FDL2:=REF(L,BARSLAST(FD0)+2);
FGZH:=IF(FGL<=FGL1,FGH2,FGH1);
FGZL:=IF(FGH1<FGL,FGL,IF(FGL<=FGL1,FGL2,FGL1));
FDZH:=IF(FDL1>FDH,FDH,IF(FDH>=FDH1,FDH2,FDH1));
FDZL:=IF(FDH>=FDH1,FDL2,FDL1);

FG1:=FGH>FDZH AND FG0;
FD1:=FDL<FGZL AND FD0;
FG:=FG1 AND FGH>FDH AND FGL>FDL AND FGL1>FDL;
FD:=FD1 AND FDL<FGL AND FDH<FGH AND FDH1<FGH;
BH0:=(H<=REF(H,1) AND L>=REF(L,1)) OR (H>=REF(H,1) AND L<=REF(L,1));
BHG:=IF(BARSLAST(FD0)>0,COUNT(BH0,BARSLAST(FD0)),0);
BHD:=IF(BARSLAST(FG0)>0,COUNT(BH0,BARSLAST(FG0)),0);
BGQ:=IF(BARSLAST(FD0)>0,COUNT(GQ,BARSLAST(FD0)),0);
BDQ:=IF(BARSLAST(FG0)>0,COUNT(DQ,BARSLAST(FG0)),0);

BK0:=IF(BHG>0,BHG+2+老笔,IF(BHD,BHD+2+老笔,3));
BK:=IF(BGQ,BK0-BGQ,IF(BDQ,BK0-BDQ,BK0));
G1X:=(FG AND BARSLAST(FD)>BK);
D1X:=(FD AND BARSLAST(FG)>BK);
G1:=(FG0 AND REF(H,BARSLAST(FG0))>=REF(H,BARSLAST(G1X)) AND BARSLAST(D1X)>BARSLAST(G1X))OR (FG1 AND COUNT(GQ,BARSLAST(FD1))>0 AND REF(H,BARSLAST(FG1))>REF(H,BARSLAST(G1X)));
D1:=(FD0 AND REF(L,BARSLAST(FD0))<=REF(L,BARSLAST(D1X)) AND BARSLAST(G1X)>BARSLAST(D1X))OR (FD1 AND COUNT(DQ,BARSLAST(FG1))>0 AND REF(L,BARSLAST(FD1))<REF(H,BARSLAST(D1X)));
G1H:=IF(BARSLAST(D1)>BARSLAST(G1),REF(H,BARSLAST(G1)),REF(H,BARSLAST(D1)));
D1L:=IF(BARSLAST(G1)>BARSLAST(D1),REF(L,BARSLAST(D1)),REF(L,BARSLAST(G1)));
G2:=G1 AND H=HHV(G1H,BARSLAST(D1)+1) AND H>REF(H,1) AND BARSLAST(D1)>BARSLAST(G1);
D2:=D1 AND L=LLV(D1L,BARSLAST(G1)+1) AND L<REF(L,1) AND BARSLAST(G1)>BARSLAST(D1);
G21:=FG0 AND REF(H,BARSLAST(FG0))>REF(H,BARSLAST(G2)) AND BARSLAST(D2)>BARSLAST(G2);
G22:=FD0 AND REF(L,BARSLAST(FD0))<REF(L,BARSLAST(D2)) AND BARSLAST(G2)>BARSLAST(D2);

G3:=G2 OR (FG0 AND REF(H,BARSLAST(FG0))>REF(H,BARSLAST(G2)) AND BARSLAST(D2)>BARSLAST(G2));
D3:=D2 OR (FD0 AND REF(L,BARSLAST(FD0))<REF(L,BARSLAST(D2)) AND BARSLAST(G2)>BARSLAST(D2));



GPB:IF(G1X,H,DRAWNULL),CIRCLEDOT,COLORYELLOW;
DPB:IF(D1X,L,DRAWNULL),CIRCLEDOT,COLORYELLOW;

{画线}
NN:=G3;UU:=D3;
L1:DRAWLINE(UU,L,NN, H,0),COLORLIGREEN;L2:DRAWLINE(NN,H,UU, L,0),COLORLIGREEN;

任务需求补充补充于2022-3-25 15:18
对了 马兄,您那个展示给我用标普期货2206的十分钟图发我哈
任务需求补充补充于2022-3-25 14:56
您展示的时候最好用标普2206期货合约展示一下给我看,我才能对比比较清楚哈 ,麻烦你了哈
任务需求补充补充于2022-3-25 14:51
我没有理想币 回复不了你,只能在补充说明上跟你说
任务需求补充补充于2022-3-25 14:50
另外,马兄 ,还有笔与笔之间的K线根数要显示啊
任务需求补充补充于2022-3-25 14:49
基本这样,但还有这一点没实现(添加一段代码将现在一根红柱比前面一根红柱子低时,用颜色区分开,绿柱子也是同样),另外能将macd面积计算出来的数字,不要那么多小数点吗,相应那个计算出来的面积的数字,跟图
任务需求补充补充于2022-3-25 12:12
对了,还有笔与笔之间,还要显示 幅度的百分比和 绝对点数
任务需求补充补充于2022-3-25 11:45
macd不是富途可用的代码哈,笔代码是

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约