ytweiwei帮我编过一次,但我的诉求变了一下 请熟悉金字塔编程的老师帮忙编一个日内规则 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分平仓。 开空止损或者平空后,不再出现开空交易信号 谢谢
最新规则如下: IF日内交易规则 当天有效,1分钟周期。 开多开空信号截止时间为下午3点05分 基本原理:突破当天开盘后39分钟内的最高价最低价作多作空。 一天最多交易二次,一次作多,一次作空 交易手数为1手(可以设置) 记录当天开盘后39分钟内的最高,最低价,最高价记为HH,最低价记为LL 开多: 最新价大于HH,开多(超价20(0.2为一个跳动价位)个跳动价位买入追买,保证成交) 当成交后,设下止损价为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分平仓。 开空止损或者平空后,不再出现开空交易信号
INPUT:NMIN(39,10,60,10); //设置参数时 VARIABLE:FLAG_D=0,FLAG_K=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 H>STOP_P AND HOLDING<0 THEN SELLSHORT(1,1,LIMITR,MAX(O,STOP_P)+20*MINDIFF); IF L<LL*0.97 AND HOLDING<0 THEN SELLSHORT(1,1,LIMITR,LL*0.97+50*MINDIFF); IF L<STOP_P AND HOLDING>0 THEN SELL(1,1,LIMITR,MIN(O,STOP_P)-20*MINDIFF); IF H>HH*1.03 AND HOLDING>0 THEN SELL(1,1,LIMITR,HH*1.03-50*MINDIFF); IF TIME=151000 THEN //收盘平仓,并重置全局变量 BEGIN SELLSHORT(HOLDING<0,1,LIMITR,OPEN+20*MINDIFF); SELL(HOLDING>0,1,LIMITR,OPEN-20*MINDIFF); FLAG_D:=0; FLAG_k:=0; END IF H>HH AND HOLDING=0 AND FLAG_D=0 AND TIME<151000 THEN //开多单 BEGIN FLAG_D:=1; BUY(1,1,LIMITR,HH+20*MINDIFF); STOP_P:=MAX(LL,HH-50*MINDIFF); IF FLAG_K=0 THEN STOP_P:=MAX(LL,HH-50*MINDIFF);//当天第一笔交易,未回落50个跳动点就已突破LL,则立马止损反手做空 END IF L<LL AND HOLDING=0 AND FLAG_K=0 AND TIME<151000 THEN //开空单 BEGIN FLAG_K:=1; BUYSHORT(1,1,LIMITR,LL-20*MINDIFF); STOP_P:=LL+50*MINDIFF; IF FLAG_D=0 THEN STOP_P:=MIN(HH,LL+50*MINDIFF);//功能同上 END IF HOLDING>0 AND H>HH+50*MINDIFF THEN STOP_P:=HH+4*MINDIFF; //重置止损位 IF HOLDING<0 AND L<LL-50*MINDIFF THEN STOP_P:=LL-4*MINDIFF;//重置止损位