思路不错
写好了,用于1分钟周期,我觉得没问题,版主检查下吧!
不对的地方,请指正
股指突破模型
INPUT:NMIN(39,10,60,10); //设置参数时间
INPUT:NOFFSET(20,2,50,2); //设置参数滑点
INPUT:LOTS(1,1,100,1); //设置参数仓位
INPUT:STOPSET(50,50,100,10); //设置参数止损
VARIABLE:FLAG=0; //用于限制开仓次数
VARIABLE:STOP_P=0; //用于变动止损
CYC:=BARSLAST(DATE>REF(DATE,1))+1; //统计日内K线数
HH:=VALUEWHEN(TIME<=91500+NMIN*100,HHV(H,CYC)); {在从开盘到设定时间(默认参数开盘39分)内保存当天最高价}
LL:=VALUEWHEN(TIME<=91500+NMIN*100,LLV(L,CYC)); {在从开盘到设定时间(默认参数开盘39分)内保存当天最低价}
IF HIGH > HH AND HOLDING<=0 AND FLAG<>1 THEN {如果最高价突破设定时间内的前高加设定偏移并且目前没有多单,那么}
BEGIN
MYPRICE: = HH + NOFFSET*MINDIFF; {预设进场价.既等于设定时间内的前高加设定偏移}
IF C >= MYPRICE THEN
BEGIN
MYPRICE: = C;
FLAG:=1;
SELLSHORT(HOLDING<0,0,LIMITR,MYPRICE); {如果有空单先平}
BUY(HOLDING=0,LOTS,LIMITR,MYPRICE); {如果没有多单则以开盘价开多LOTS手 }
IF C<=HH-STOPSET*MINDIFF THEN SELL(HOLDING>0,0,LIMITR,C-NOFFSET*MINDIFF);
IF C>=HH+STOPSET*MINDIFF THEN STOP_P:=4;
IF C<=HH+STOP_P*MINDIFF THEN SELL(HOLDING>0,0,LIMITR,C-NOFFSET*MINDIFF);
IF C>=HH*1.03 THEN SELL(HOLDING>0,0,LIMITR,C-NOFFSET*MINDIFF);
END
END
IF LOW <= LL AND HOLDING>=0 AND FLAG<>3 THEN {以下开空部分同上,只不过方向相反}
BEGIN
MYPRICE: = LL - NOFFSET*MINDIFF;
IF C <= MYPRICE THEN
BEGIN
MYPRICE: = C;
FLAG:=3;
SELL(HOLDING>0,0,LIMITR,MYPRICE);
BUYSHORT(HOLDING=0,LOTS,LIMITR,MYPRICE);
IF C>=LL+STOPSET*MINDIFF THEN SELLSHORT(HOLDING<0,0,LIMITR,C+NOFFSET*MINDIFF);
IF C<=LL-STOPSET*MINDIFF THEN STOP_P:=4;
IF C>=LL-STOP_P*MINDIFF THEN SELLSHORT(HOLDING<0,0,LIMITR,C+NOFFSET*MINDIFF);
IF C<=LL*0.97 THEN SELLSHORT(HOLDING<0,0,LIMITR,C+NOFFSET*MINDIFF);
END
END
IF TIME >= 151000 THEN {收盘平仓}
BEGIN
SELL(HOLDING>0,0,LIMITR,C-NOFFSET*MINDIFF);
SELLSHORT(HOLDING<0,0,LIMITR,C+NOFFSET*MINDIFF);
END
给了5个金币了。说明落英写对了?
管理员自己不会写么?不能吧?
IF C >= MYPRICE THEN
BEGIN
MYPRICE: = C;
FLAG:=1;
SELLSHORT(HOLDING<0,0,LIMITR,MYPRICE); {如果有空单先平}
BUY(HOLDING=0,LOTS,LIMITR,MYPRICE); {如果没有多单则以开盘价开多LOTS手 }
……
END
写得不对吧?要的是最新价>hh,就以hh+20*mindiff开仓的
我来写一个
不好意思 只能做成这样了
INPUT:NMIN(39,10,60,10); //设置参数时间
INPUT:NOFFSET(20,2,50,2); //设置参数滑点
INPUT:LOTS(1,1,100,1); //设置参数仓位
VARIABLE:FLAG=0; //用于限制开仓次数
VARIABLE:STOPSET=50; //用于变动止损
CYC:=BARSLAST(DATE>REF(DATE,1))+1; //统计日内K线数
HH:=VALUEWHEN(TIME<=91500+NMIN*100,HHV(H,CYC)); {在从开盘到设定时间(默认参数开盘39分)内保存当天最高价}
LL:=VALUEWHEN(TIME<=91500+NMIN*100,LLV(L,CYC)); {在从开盘到设定时间(默认参数开盘39分)内保存当天最低价}
//开多仓
LONG:=HOLDING=0 AND C > HH AND TIME>91500+NMIN*100 AND TIME<151000;;
//平多仓条件:
bline:=IF(holding>0,HHV(HIGH,TYPEBAR(1,1))-50*MINDIFF,L-50*MINDIFF);//多单移动止损线
PARTLINE(holding>0, bline, colorrgb(255,0,0));
SLONG:=(HOLDING>0 AND bline>=C) ; //OR (HOLDING>0 AND C>HH*1.03)
//开空仓
SHORT:=HOLDING=0 AND C < LL AND TIME>91500+NMIN*100 AND TIME<151000;
//平空仓条件:
sline:=IF(holding<0,LLV(LOW,TYPEBAR(1,3))+STOPSET*MINDIFF,L+STOPSET*MINDIFF);//空单移动止损线
PARTLINE(holding<0, sline, colorrgb(0,255,0));
SSHORT:=(HOLDING<0 AND sline<=C) ; //OR (HOLDING<O AND C<=LL*0.97)
BUY(LONG,LOTS,LIMITR,C+NOFFSET*MINDIFF); {如果没有多单则以开盘价开多LOTS手 }
SELL(SLONG,HOLDING,LIMITR,C-NOFFSET*MINDIFF);
BUYSHORT(SHORT,LOTS,LIMITR,C-NOFFSET*MINDIFF);
SELLSHORT(SSHORT,HOLDING,LIMITR,C+NOFFSET*MINDIFF);
//收盘平仓
SELL(HOLDING>0 AND TIME>=151000,HOLDING,LIMITR,C-NOFFSET*MINDIFF);
SELLSHORT(HOLDING<0 AND TIME>=151000,HOLDING,LIMITR,C+NOFFSET*MINDIFF);
晕,我的规则发在海洋和TB怎么跑这里来了,呵呵,我最新改了一下,请同学帮忙再编一下,谢谢
IF日内交易规则
当天有效,1分钟周期。
基本原理:突破当天开盘后39分钟内的最高价最低价作多作空。
一天最多交易二次,一次作多,一次作空
交易手数为1手(可以设置)
记录当天开盘后39分钟内的最高,最低价,最高价记为HH,最低价记为LL
开多:
最新价大于HH,开多(超价20个跳动价位买入追买,保证成交)
当成交后,设下止损价为HH减去40个跳动点
当有最新价达到HH加上50个跳动点时,止损价改为HH加上4个跳动点
平仓1:最新价大于HH*1.03平仓,以指定价(最新价-50个跳动点)平仓
平仓2:到3点10分平仓。
开多止损或者平多后,不再出现开多交易信号
开空:
最新价小于LL,开空(超价20跳动个价位追卖,保证成交)
当成交后,设下止损价为LL加上40个跳动点
当有最新价达到LL减去50个跳动点时,止损价改为LL减去4个跳动点
平仓1:最新价小于LL*0.97平仓,以指定价(最新价+50个跳动点)平仓
平仓2:到3点10分平仓。
开空止损或者平空后,不再出现开空交易信号