您現在的位置:程序化交易>> 期貨公式>> 文華財經>> 文華財經公式>>正文內容

經典白糖程序化交易模型源碼[文華財經公式]

//該模型模型不錯,主要是一些高手提供出來給大家學習

// 文華財經免費白糖
BA:= BARPOS; // 當前K線位置(從1開始)
VOL1:= IFELSE(LLV(VOL,0)=0, 1, INTPART(VOL*100)); // 從頭到尾遍歷。只要出現 成交量=0時,返回1。否則,返回VOL*100取整。
HC:=LLV(IFELSE(H-C=0, 1000, H-C), 0); // 從頭到尾遍歷,尋找最小的 最高價與 收盤價的距離。默認當最高價= 最低價時,返回1000。
CL:=LLV(IFELSE(C-L=0, 1000, ABS(C-L)), 0); // 從頭到尾遍歷,尋找最小的收盤價與最低價距離。
CO:=LLV(IFELSE(C-O=0, 1000, ABS(C-O)), 0); // 從頭到尾遍歷,尋找最小的收盤價與 開盤價距離。
ZXBD:=MIN(HC, MIN(CL, CO)); // 找當前周期之前的最小的HC, CL, CO。
DFX:= REF(L, 2)=LLV(L,15) && REF(L,1)>REF(L,2) && L>REF(L,1) && REF(L,2)<=REF(L,3); // 是否上漲起點。原:“L>REF(L, 2)” 【參數】
GFX:= REF(H, 2)=HHV(H,9) && REF(H,1)<REF(H,2) && H<REF(H,1) && REF(H,2)>=REF(H,3); // 是否下跌起點。 原:“H<REF(H, 2)” 【參數】
DFXI:= VALUEWHEN(DFX, BA); // 取上漲起點的K線位置。若是上漲起點,則返回K線位置。反之返回前一個上漲起點的K線位置。
GFXI:= VALUEWHEN(GFX, BA); // 跟上面類似,取下跌起點K線位置。
DDP1:= VALUEWHEN(DFX, REF(L, 2)); // 取上漲起點的最低值。
GDP1:= VALUEWHEN(GFX, REF(H, 2)); // 取下跌起點的最高值。
DDP:= VALUEWHEN(DFX && DDP1<>REF(DDP1, 1), DDP1); // 取當前的上漲起點最低值。實際等于DDP1。
GDP:= VALUEWHEN(GFX && GDP1<>REF(GDP1, 1), GDP1); // 取當前的下跌起點最高值。實際等于GDP1。
DFX1I:= VALUEWHEN(DFX, REF(DFXI, 1)); // 取上漲起點的前一個上漲起點的K線位置。
DFX1P:= VALUEWHEN(DFX, REF(DDP, BA-DFX1I)); // 取上漲起點的前一個上漲起點的K線位置的最低值。原"DFX1P:= VALUEWHEN(DFX, REF(DDP, BA-DFX1I+1));"。
GFX1I:= VALUEWHEN(GFX, REF(GFXI, 1)); // 取下跌起點的前一個下跌起點的K線位置。
GFX1P:= VALUEWHEN(GFX, REF(GDP,BA-GFX1I)); // 取下跌起點的前一下跌起點的K線位置的最高值。原"GFX1P:= VALUEWHEN(GFX, REF(GDP,BA-GFX1I+1));"。
DFXP:= VALUEWHEN(DFX && DDP<>REF(DDP,1), MIN(DDP, MIN(DFX1P, REF(DDP, 1)))); // 取當前上漲起點最低值、前一個上漲起點值、上一個周期最低值中的最低值。
GFXP:= VALUEWHEN(GFX && GDP<>REF(GDP,1), MAX(GDP, MAX(GFX1P, REF(GDP, 1)))); // 取當前下跌起點最高值、前一個下跌起點值、上一個周期最高值中的最高值。
// ---------------------------------------拋物轉向------------------------------------------
SA:= SAR(4, 0.02, 0.2); // 拋物轉向值 【參數】
DZZ:= SA>0 && REF(SA, 1)<=0; // 拋物轉向值是否上漲啟動。原"SA>0 && NOT(REF(SA,1)>0) || BA=0"。
GZZ:= SA<0 && REF(SA, 1)>=0; // 拋物轉向值是否下跌啟動。原"SA<0 && NOT(REF(SA,1)<0) || BA=0"。
DZZI:= VALUEWHEN(DZZ, BA); // 返回拋物轉向值上漲的K線位置。
GZZI:= VALUEWHEN(GZZ, BA); // 返回拋物轉向值下跌的K線位置。
DZZ0I:= IFELSE(
NOT(
  VALUEWHEN(
   DFX && REF(SA, 2)<0 && REF(L, 2)=LLV(L, BA-GZZI),  // 原"REF(L, 2)=LLV(L, BA-GZZI+1)"
  BA-2)>=0
),
0,
VALUEWHEN(
  (DFX && REF(DZZ, 2)=1)
  || (DFX && REF(SA, 2)<0 && REF(L, 2)=LLV(L, BA-GZZI)), // 原"REF(L, 2)=LLV(L, BA-GZZI+1)"
BA-2)
); // 確認DFXI-2位置上是否是最低點,找DFX的最低點。是:返回DFXI-2。否:返回上一個DZZ0I。
GZZ0I:= IFELSE(
NOT(
  VALUEWHEN(
   GFX && REF(SA, 2)>0 && REF(H, 2)=HHV(H, BA-DZZI+1),  // 原"REF(H, 2)=HHV(H, BA-DZZI+1)"
  BA-2)>=0),
0,
VALUEWHEN(
  (GFX && REF(GZZ, 2)=1)
  || (GFX && REF(SA, 2)>0 && REF(H, 2)=HHV(H, BA-DZZI+1)), // 原"REF(H, 2)=HHV(H, BA-DZZI+1)"
BA-2)
); // 確認GFXI-2位置上是否是最高點,找GFX的最高點。是:返回GFXI-2。否:返回上一個GZZ0I。
DD0I:= VALUEWHEN(DZZ || DZZ0I=0, DZZ0I); // 返回拋物轉向上漲啟動最低點。落后于DZZ0I。
GD0I:= VALUEWHEN(GZZ || GZZ0I=0, GZZ0I); // 返回拋物轉向下跌啟動最高點。落后于GZZ0I。
DZZ0P:= VALUEWHEN(DZZ && DZZI-GZZI>3, LLV(L, BA-GZZ0I)); // 拋物轉向上漲啟動對應的最低點。原"LLV(L, BA-GZZ0I+1)"。 【參數】
GZZ0P:= VALUEWHEN(GZZ && GZZI-DZZI>3, HHV(H, BA-DZZ0I)); // 拋物轉向下跌啟動對應的最高點。原"HHV(H, BA-DZZ0I+1)"。 【參數】
DD0P:= VALUEWHEN(DZZ, DZZ0P); // 等于DZZ0P。實際與DD0I并不是一一對應。
GD0P:= VALUEWHEN(GZZ, GZZ0P); // 等于GZZ0P。實際與GD0I并不是一一對應。
DD0RP:= VALUEWHEN(DZZ, REF(DD0P,1)); // DD0P前一個周期值。
GD0RP:= VALUEWHEN(GZZ, REF(GD0P,1)); // GD0P前一個周期值。
DZP:= VALUEWHEN(DZZ, MIN(DD0P, DD0RP)); // DD0P與DD0RP最小值。一路下來,拋物轉向上漲啟動的最低點。
GZP:= VALUEWHEN(GZZ, MAX(GD0P, GD0RP)); // GD0P與GD0RP最大值。一路下來,拋物轉向下跌啟動的最高點。
QSI:= IFELSE(DZZ0I=0, 0, VALUEWHEN(DZZ, REF(DZZ0I, BA-GZZI))); // 上漲啟動時,返回前面一個DZZ0I。原"REF(DZZ0I, BA-GZZI+1)"。
GQSI:= IFELSE(GZZ0I=0, 0, VALUEWHEN(GZZ, REF(GZZ0I, BA-DZZI))); // 下跌啟動時,返回前面一個GZZ0I。原"REF(GZZ0I, BA-DZZI+1)"。
SZR:= IFELSE(SA>0, 1, 0); // 是否在上漲。是:1;否:0。
XDR:= IFELSE(SA<0, 1, 0); // 是否在下跌。是:1;否:0。
XDTS2:= VALUEWHEN(DZZ && SUM(XDR, DZZI-GZZI+1) > 3, SUM(XDR, DZZI-GZZI+1)); // 拋物轉向上漲啟動 && 前面下跌超過3個單位時,統計前面下跌的周期?!緟怠?br /> SZTS2:= VALUEWHEN(GZZ && SUM(SZR, GZZI-DZZI+1) > 3, SUM(SZR, GZZI-DZZI+1)); // 拋物轉向下跌啟動 && 前面上漲超過3個單位時,統計前面上漲的周期?!緟怠?br /> XDTS2I:= VALUEWHEN(DZZ && SUM(XDR, DZZI-GZZI+1) > 3, BA); // 滿足XDTS2條件的上漲起點位置。
SZTS2I:= VALUEWHEN(GZZ && SUM(SZR, GZZI-DZZI+1) > 3, BA); // 滿足SZTS2條件的下跌起點位置。
XDTS1:= VALUEWHEN(DZZ && SUM(SZR, DZZI-REF(GZZI, BA-REF(DZZI, 2))+1) < 4, DZZI-REF(GZZI, BA-REF(DZZI, 2))); // 上漲啟動 && 至前2個上漲周期的上漲小于4個單位時,返回這個時間跨度?!緟怠?br /> XDTS1I:= VALUEWHEN(DZZ && SUM(SZR, DZZI-REF(GZZI, BA-REF(DZZI, 2))+1) < 4, BA); // XDTS1的位置。 【參數】
XDTS:= IFELSE(DZZ && SUM(SZR, DZZI-REF(GZZI, BA-REF(DZZI, 2))+1) < 4, XDTS1, XDTS2); // 上漲啟動 && 至前2個上漲周期的上漲小于4個單位時,返回XSDTS1。否則返回XDTS2。 【參數】
SZTS1:= VALUEWHEN(GZZ && SUM(XDR, GZZI-REF(DZZI, BA-REF(GZZI, 2))+1) < 4, GZZI-REF(DZZI, BA-REF(GZZI, 2))); // 下跌啟動 && 至前2個下跌周期的下跌小于4個單位時,返回這個時間跨度?!緟怠?br /> SZTS1I:= VALUEWHEN(GZZ && SUM(XDR, GZZI-REF(DZZI, BA-REF(GZZI, 2))+1) < 4, BA); // SZTS1的位置。 【參數】
SZTS:= IFELSE(GZZ && SUM(XDR, GZZI-REF(DZZI, BA-REF(GZZI, 2))+1) < 4, SZTS1, SZTS2); // 下跌啟動 && 至前2個上漲周期的上漲小于4個單位時,返回SZTS1。否則返回SZTS2。 【參數】
// DZZ0I是在BA前2個單位,個人認為此判斷條件不會成立(除了第一根K線外)。TODO: 不理解。
DINI:= IFELSE(BA=DZZ0I || BA-DZZ0I=1, SUM(L*VOL1, BA-QSI+1) / SUM(VOL1, BA-QSI+1) , SUM(L*VOL1, BA-DZZ0I+1) / SUM(VOL1, BA-DZZ0I+1));
GINI:= IFELSE(BA=GZZ0I || BA-GZZ0I=1, SUM(H*VOL1, BA-GQSI+1) / SUM(VOL1, BA-GQSI+1), SUM(H*VOL1, BA-GZZ0I+1) / SUM(VOL1, BA-GZZ0I+1));
DDT0:= DFX && (REF(C, 2)<REF(DINI, 2) || REF(C, 3)<REF(DINI, 3));
DDT0I:= VALUEWHEN(DDT0, DZZ0I);
DDT01I:= VALUEWHEN(DDT0, REF(DDT0I, 1));
DINI0:= IFELSE(BA=DDT0I || BA-DDT0I=1, SUM(L*VOL1, BA-DDT01I+1) / SUM(VOL1, BA-DDT01I+1), SUM(L*VOL1, BA-DDT0I+1) / SUM(VOL1, BA-DDT0I+1));
DDT00:= (DZZ && SZTS<=XDTS && DZZI-GZZI>3);
DDT00I:= IFELSE(NOT(DDT00), 0, VALUEWHEN(DDT00, DD0I));
DZ00I:= VALUEWHEN(DFX && (REF(C, 3)<REF(DINI0, 3) || REF(C, 2)<REF(DINI0, 2)), DZZ0I);
DZ0I:= MAX(DDT00I, DZ00I);
DZ0:= IFELSE(BA=DZ0I||BA-DZ0I=1,(SUM(L*VOL1,BA-REF(DZ0I,1)+1))/(SUM(VOL1,BA-REF(DZ0I,1)+1)),(SUM(L*VOL1,BA-DZ0I+1))/(SUM      (VOL1,BA-DZ0I+1)));
DZ1I:= VALUEWHEN(DFX&&(REF(C,3)<REF(DZ0,3)||REF(C,2)<REF(DZ0,2)),DZZ0I);
DZ1:= IFELSE(BA=DZ1I||BA-DZ1I=1,(SUM(L*VOL1,BA-REF(DZ1I,1)+1))/(SUM(VOL1,BA-REF(DZ1I,1)+1)),(SUM(L*VOL1,BA-DZ1I+1))/(SUM      (VOL1,BA-DZ1I+1)));
DZ2I:= VALUEWHEN(DFX&&(REF(C,3)<REF(DZ1,3)||REF(C,2)<REF(DZ1,2)),DZZ0I);
DZ2:= IFELSE(BA=DZ2I||BA-DZ2I=1,(SUM(L*VOL1,BA-REF(DZ2I,1)+1))/(SUM(VOL1,BA-REF(DZ2I,1)+1)),(SUM(L*VOL1,BA-DZ2I+1))/(SUM      (VOL1,BA-DZ2I+1)));
DZ3I:= VALUEWHEN(DFX&&(REF(C,3)<REF(DZ2,3)||REF(C,2)<REF(DZ2,2)),DZZ0I);
DZ3:= IFELSE(BA=DZ3I||BA-DZ3I=1,(SUM(L*VOL1,BA-REF(DZ3I,1)+1))/(SUM(VOL1,BA-REF(DZ3I,1)+1)),(SUM(L*VOL1,BA-DZ3I+1))/(SUM      (VOL1,BA-DZ3I+1)));
GDT0:= GFX&&(REF(C,2)>REF(GINI,2)||REF(C,3)>REF(GINI,3));
GDT0I:= VALUEWHEN(GDT0,GZZ0I);
GDT01I:= VALUEWHEN(GDT0,REF(GDT0I,1));
GINI0:= IFELSE(BA=GDT0I||BA-GDT0I=1,SUM(H*VOL1,BA-GDT01I+1)/SUM(VOL1,BA-GDT01I+1),SUM(H*VOL1,BA-GDT0I+1)/SUM(VOL1,BA-  GDT0I+1));
GDT00:= (GZZ&&SZTS>=XDTS&&GZZI-DZZI>3);
GDT00I:= IFELSE(NOT(GDT00),0,VALUEWHEN(GDT00,GD0I));
GZ00I:= VALUEWHEN(GFX&&(REF(C,3)>REF(GINI0,3)||REF(C,2)>REF(GINI0,2)),GZZ0I);
GZ0I:= MAX(GDT00I,GZ00I);
GZ0:= IFELSE(BA=GZ0I||BA-GZ0I=1,(SUM(H*VOL1,BA-REF(GZ0I,1)+1))/(SUM(VOL1,BA-REF(GZ0I,1)+1)),(SUM(H*VOL1,BA-GZ0I+1))/(SUM      (VOL1,BA-GZ0I+1)));
GZ1I:= VALUEWHEN(GFX&&(REF(C,3)>REF(GZ0,3)||REF(C,2)>REF(GZ0,2)),GZZ0I);
GZ1:= IFELSE(BA=GZ1I||BA-GZ1I=1,(SUM(H*VOL1,BA-REF(GZ1I,1)+1))/(SUM(VOL1,BA-REF(GZ1I,1)+1)),(SUM(H*VOL1,BA-GZ1I+1))/(SUM      (VOL1,BA-GZ1I+1)));
GZ2I:= VALUEWHEN(GFX&&(REF(C,3)>REF(GZ1,3)||REF(C,2)>REF(GZ1,2)),GZZ0I);
GZ2:= IFELSE(BA=GZ2I||BA-GZ2I=1,(SUM(H*VOL1,BA-REF(GZ2I,1)+1))/(SUM(VOL1,BA-REF(GZ2I,1)+1)),(SUM(H*VOL1,BA-GZ2I+1))/(SUM      (VOL1,BA-GZ2I+1)));
GZ3I:= VALUEWHEN(GFX&&(REF(C,3)>REF(GZ2,3)||REF(C,2)>REF(GZ2,2)),GZZ0I);
GZ3:= IFELSE(BA=GZ3I||BA-GZ3I=1,(SUM(H*VOL1,BA-REF(GZ3I,1)+1))/(SUM(VOL1,BA-REF(GZ3I,1)+1)),(SUM(H*VOL1,BA-GZ3I+1))/(SUM      (VOL1,BA-GZ3I+1)));
DD:= FLOOR((DZ3+ZXBD)/ZXBD)*ZXBD-ZXBD;
GD:= FLOOR((GZ3+ZXBD)/ZXBD)*ZXBD;
GDW:= VALUEWHEN(CROSS(C,GD),BA);
DDW:= VALUEWHEN(CROSS(DD,C),BA);
DK:= IFELSE(DDW>GDW,GD,DD);
DD1:= FLOOR((DINI+ZXBD)/ZXBD)*ZXBD-ZXBD;
GD1:= FLOOR((GINI+ZXBD)/ZXBD)*ZXBD;
GDW11:= VALUEWHEN(CROSS(C,GD1),BA);
DDW11:= VALUEWHEN(CROSS(DD1,C),BA);
DKD:= IFELSE(DDW11>GDW11,GD1,DD1);
DWD:= VALUEWHEN(CROSS(C,DKD),BA);
GWD:= VALUEWHEN(CROSS(DKD,C),BA);
GDW1:= VALUEWHEN(CROSS(C,GFXP)||BA=0,BA);
DDW1:= VALUEWHEN(CROSS(DFXP,C)||BA=0,BA);
DKP:= IFELSE(DDW1>GDW1,GFXP,DFXP);
BZD:= MAX(DK,MAX(DKD,GFXP));
SZD:= MIN(DK,MIN(DKD,DFXP));
DTA:= CROSS(C,BZD);
KTA:= CROSS(SZD,C);
DTAI:= VALUEWHEN(DTA||BA=0,BA);
KTAI:= VALUEWHEN(KTA||BA=0,BA);
DTB:= C<DK&&C<DKD&&REF(CROSS(DKP,C),1)=1&&C>REF(DKP,2)&&DFX;
KTB:= C>DK&&C>DKD&&REF(CROSS(C,DKP),1)=1&&C<REF(DKP,2)&&GFX;
DTC:= C<DK&&C<DKD&&SUM(L<DKP&&C>DKP,2)=2;
KTC:= C>DK&&C>DKD&&SUM(H>DKP&&C<DKP,2)=2;
DTD:= C>DKD&&SUM(C>DK,2)>=2&&SUM(DKD=DK,BA-DWD+1)=BA-DWD&&DKD>DK&&REF(DKD=DK,1)=1;
KTD:= C<DKD&&SUM(C<DK,2)>=2&&SUM(DKD=DK,BA-GWD+1)=BA-GWD&&DKD<DK&&REF(DKD=DK,1)=1;
DTE:= CROSS(C,DK)&&SUM(DK=DKD,BA-REF(DWD,1)+1)=BA-REF(DWD,1)+1;
KTE:= CROSS(DK,C)&&SUM(DK=DKD,BA-REF(GWD,1)+1)=BA-REF(GWD,1)+1;
DTF:= CROSS(C,DK)&&SUM(CROSS(C,GFXP),BA-1)=0;
KTF:= CROSS(DK,C)&&SUM(CROSS(DFXP,C),BA-1)=0;
KTG:= C>DK&&CROSS(DKD,C)&&SUM(C>DK&&C>DKP&&L<DKD&&C>DKD&&O=L,BA-DWD+1)>=1;
DTG0:= C>DK&&CROSS(C,DKD)&&SUM(KTG,BA-GWD+1)>=1;
KTH:= REF(SUM(DK=DKD,2)=2&&CROSS(DK,C)&&ISUP,1)=1&&C<REF(C,1);
DTJ:= C>DKP&&C<DK&&CROSS(C,DKD)&&SUM(C<DK&&L<DKP&&C>DKP&&ISUP,BA-GWD+1)>=1;
KTJ0:= C<DK&&CROSS(DKD,C)&&SUM(DTJ,BA-DWD+1)>=1;
DTK:= C<DK&&CROSS(C,DKD)&&SUM(CROSS(DKP,C),BA-GWD+1)>=1&&ISUP&&L>REF(H,1)&&SUM(L<DK&&C>DK,BA-GWD+1)>=1;
KTK0:= C<DK&&CROSS(DKD,C)&&SUM(DTK,BA-DWD+1)>=1;
KTL:= CROSS(DKD,C)&&SUM(CROSS(C,DKP)&&C>DKD&&DKD>DK,BA-DWD+1);
KTM:= CROSS(DKD,C)&&SUM(SUM(L<DKD&&C>DKD,2)=2,BA-DWD+1)>=1&&SUM(CROSS(C,DKP)||CROSS(C,DK),BA-DWD+1)=0;
DTL:= CROSS(C,DKD)&&O-L<0.5&&SUM(CROSS(DK,C)&&DK<>DKD,BA-GWD+1);
DT1:= DTA || DTC || DTB || DTD || DTE || DTF || DTG0 || DTJ || DTK || DTL;
KT1:= KTA || KTC || KTB || KTD || KTE || KTF || KTG || KTH || KTJ0 || KTK0 || KTL || KTM;
DTI:= VALUEWHEN(DT1 || BA=0, BA);
KTI:= VALUEWHEN(KT1 || BA=0, BA);
REF(DTI<=KTI,1)=1&&DTI>KTI,BPK;
REF(DTI>=KTI,1)=1&&DTI<KTI,SPK;

 

有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友

可聯系技術人員 QQ: 262069696  點擊在線交流進行 有償 編寫!不貴!點擊查看價格!

 


【字體: 】【打印文章】【查看評論

相關文章

    沒有相關內容
  排列五千神机器人软件