文华常用逻辑编写示例
(2014-07-27 10:53:47)
标签:
财经股票 |
分类: 期货程序化 |
10、//常用K线的逻辑判断1
N1:=BARSLAST(DATE<>REF(DATE,1))+1;//取从开盘到当前的K线根数
CC:=VALUEWHEN(N1=16,C);//当N1=16(0915代表的是1分钟周期,其他周期看K线划分)的时候取那根K线的收盘价
TIME>0945&&(COUNT(BARSBK=1,N1)<1)&&C>=CC+10*MINPRICE,BK;//允许当日最多开仓(BK)一次
TIME>0945&&(COUNT(BARSSK=1,N1)<1)&&CMINPRICE,SK;//允许当日最多SK仓一次
C>=BKPRICE+20*MINPRICE||C<</SPAN>BKPRICE-5*MINPRICE,SP;//当满足开多止损和止盈的时候,进行平仓
C<=SKPRICE-20*MINPRICE||C>SKPRICE+5*MINPRICE,BP;//当满足开空止损和止盈的时候,进行平仓
AUTOFILTER;
//注意N的取值和对应的时间周期
//注意当日最多开几次仓就小于几(N)
//COUNT(BARSBK=1||BARSSK=1,N1)表示的是当天不论开多还是开空只开仓一次。
MA5:MA(C,5),LINETHICK4,COLORYELLOW;//定义5周期均线并用线性为5的黄颜色表示
MA10:MA(C,10),LINETHICK2,COLORMAGENTA;//定义10周期均线并用线性为2的紫红色颜色表示
AA:CROSSUP(MA5,MA10)&&ISUP&&C>MA5;//定义简单的AA条件
TT:=AA&&COUNT(AA,N1)=1;//当日首次满足AA条件
NN:=BARSLAST(TT=1)+1;//当首次满足条件AA到当前的K线的周期数
11、
//常用K线根数的逻辑判断2
MA10:MA(C,10),LINETHICK2,COLORRED;//定义10周期均线用线性为2的红色线表示
MA20:MA(C,20),LINETHICK2,COLORWHITE;//定义20周期均线用线性为2的白色线表示
MA60:=MA(C,60),LINETHICK2,COLORGREEN;//定义60周期均线用线性为2的绿色线表示
CROSSDOWN(MA10,MA20),ICON(1,'ICO4');
AA:=CROSSUP(MA10,MA20)&&COUNT(CROSSUP(MA10,MA20),BARPOS);//从起始K线以来第一次满足10周期均线上穿20周期均线
TA:=BARSLAST(AA)+1,NODRAW;//从起始K线以来第一次满足10周期均线上穿20周期均线到当前的K线周期到当前的K线周期
BB:=CROSSUP(MA20,MA60)&&COUNT(CROSSUP(MA20,MA60),BARPOS);////从起始K线以来第一次满足20周期均线上穿60周期均线
TB:=BARSLAST(BB)+1,NODRAW;//从起始K线以来第一次满足20周期均线上穿60周期均线到当前的K线周期到当前的K线周期
N1:=BARSLAST(CROSSUP(MA10,MA60))+1,NODRAW;//满足10周期均线上穿60周期均线到当前的周期数
N2:BARSLAST(CROSSDOWN(MA10,MA20))+1,NODRAW;//满足10周期均线下穿20周期均线到当前的周期数
HH:REF(N2,N2)+N2-1,NODRAW;//倒数第二次10周期均线和20周期均线死叉到当前周期数
HH1:REF(N2,HH+1)+HH,NODRAW;////倒数第三次10周期均线和20周期均线死叉到当前周期数
N4:REF(N2,HH1+2)+HH1+1,NODRAW;
//注意倒数第二次,第三次的写法,N4不就表示倒数第四次了吗
GJ:REF(H,HH),NODRAW;//倒数第二次死叉的最高价
GJ2:REF(H,HH1),NODRAW;//倒数第三次死叉的最高价
12、
//常用K线逻辑编写3
//对应模型仅供参考风险自负!
N1:=BARSLAST(WEEKDAY<</SPAN>REF(WEEKDAY,1)&&WEEKDAY<</SPAN>REFX(WEEKDAY,1))+1;//代表的当前的星期数
N2:=BARSLAST(WEEKDAY<</SPAN>REF(WEEKDAY,1)&&REF(WEEKDAY,1)>REF(WEEKDAY,2))+1;//代表的当前的星期数
//以上两行的相同表示方法
//不同月份的表示方法就相应可以表示了
一周内的最高价:=HHV(H,N1);
一周内的最低价:=LLV(L,N1);
上周最高价:=REF(HHV(H,N1),N1);
//每次开多距离上次开多大于10根K线
//以下编写示例开仓后或者平仓后多少根新开仓问题
MA5:MA(C,5);
MA10:MA(C,10);
ISUP&&VOL>REF(VOL,1)&&(NOT(BARSBK>0)||BARSBK>10),BK;//每次买入开仓距离前一次买入开仓的K线根数要大于10根
CROSSDOWN(MA5,MA10)&&ISDOWN&&(NOT(BARSSK>0)||BARSSK>10),SK;//每次卖出开仓距离前一次卖出开仓的K线根数要大于10根
ISDOWN&&VOL>MA(VOL,5)&&(NOT(BARSSP>0)||BARSBK>20),SP;//每一次卖出平仓距离上一次买入开仓的K线根数要大于20根
CROSSUP(MA5,MA10)&&ISUP&&H>HV(H,2)&&(NOT(BARSBP>0)||BARSSK>10),BP;//每一次买入平仓距离上一次卖出开仓的K线根数要大于20根
H>=HHV(H,20)&&(NOT(BARSSK>0)||BARSBK>10),SPK;//每次开空距离上次开多大于10根K线
L<=LLV(L,20)&&(NOT(BARSBK>0)||BARSSK>20),BPK;
C>BKPRICE+20*MINPRICE||C<=BKPRICE-5*MINPRICE,SP;
C<=SKPRICE-20*MINPRICE||C>SKPRICE+5*MINPRICE,BP;
AUTOFILTER;
//NOT(BARSBK>0)代表的意思是当前第一次满足的开多、开空。
13、//K线常用逻辑4
//连续亏损的编写和日内多空的限制
//模型仅供参考,风险自负!
AA:=C>O&&VOL>REF(VOL,1);//简单开多条件
BB:=C<</SPAN>O&&VOL>REF(MA(VOL,5),1);//简单开空条件
//日内限制多空间隔交易,隔天则不限制,也就是日内就多空间隔交易,
//到第二天在重新开始循环,但第一个信号可以和昨天的最后一次开仓同向
//AA&&((DATE=REF(DATE,MIN(BARSBK,BARSSK))&&BARSSP>=1&&BARSBP>=1&&ISLASTBP)||(NOT(BARSSP>=1)&&LASTSIG<>SP)||(REF(DATE,MIN(BARSSK,BARSBK))
//当天开仓并且上一次为BP信号或者当根K线为BP信号或者前一个日期存在BK或者SK,选择BK。
//BB&&((DATE=REF(DATE,MIN(BARSBK,BARSSK))&&BARSBP>=1&&BARSSP>=1&&ISLASTSP)||(NOT(BARSBP>=1)&&LASTSIG<>BP)||(REF(DATE,MIN(BARSSK,BARSBK))
//LASTSIG<>BP代表的意思是上一个信号不是BP,相应条件就是为SP
N1:=BARSLAST(DATE<>REF(DATE,1))+1,NODRAW;//当日的K线根数从第一根K线开始到当前的周期数
N2:IFELSE(NOT(BARSSP>=1),1,BARSSP+1),NODRAW;//如果上一次是卖平仓的话取卖平位置到当前的周期数
N3:=IFELSE(BARSBP>=1,BARSBP+1,1),NODRAW;//如果上一次是买平仓的话取买平位置到当前的周期数
N4:MIN(N2,N3),NODRAW;//最近一次平仓到当前K线的周期
N5:REF(N4,N4)+N4-1,NODRAW;//倒数第二次平仓到当前K线的周期
N6:REF(N4,N5+1)+N5,NODRAW;//倒数第三次平仓到当前K线的周期
N7:=IFELSE(N6>N1,N1,N6);//如果在开盘前还有持仓,取当天的分钟周期,如果是开盘后的持仓,取开盘后的周期
KK:=COUNT(CROSS(REF(OFFSETPROFIT,1),OFFSETPROFIT),N7)<3;
AA&&KK,BK;
BB&&KK,SK;//连续亏损3次就不再开仓
C>O&&VOL<=REF(VOL,1),BP;
C>O&&VOL>REF(VOL,1),SP;
AUTOFILTER;
MONO_SIGNAL;