最新公告
  • 欢迎您光临九毛八公式指标网www.9m8.cn,本站全新改版试运行,期间内容全部免费,欢迎下载!欢迎加入本站VIP
  • 金字塔 阿火秘笈——汇集各种模型编写方法(最新更新—通过飞信给自己发短信的VBA代码)

    正文概述    2024-04-14 10:59:54  

    一,如何把 K线走完模式 的模型转换成 固定轮询模式 的模型

    以便把各个模型放在同一个框架内进行图表程序化交易

    举例:

    均线交叉模型(K线走完模型):

    runmode:0;

    ma5:=ma(c,5);

    ma20:=ma(c,20);

    entertime:=time 100000 and time 144500;

    if holding 0 and ma5 ma20 then sell(1,1,market);

    if holding 0 and ma5 ma20 then sellshort(1,1,market);

    if holding=0 and ma5 ma20 and entertime then buy(1,1,market);

    if holding=0 and ma5 ma20 and entertime then buyshort(1,1,market);

    if time =150000 then begin

    sell(1,1,market);

    sellshort(1,1,market);

    end

    简单的改法,自然是把各个条件 过去化 ,如:ma5 改为 ref(ma(c,5),1);但这种方法碰到大型的、复杂的模型时,容易出错

    可采用这种方法,把holding用全局变量cc替换,然后加入红色部分代码,红色部分代码要放在信号语句的前面:

    runmode:0;

    variable:cc=0;

    ma5:=ma(c,5);

    ma20:=ma(c,20);

    entertime:=time 100000 and time 144500;

    if holding 0 and cc =0 then sell(1,1,limitr,o);

    if holding 0 and cc =0 then sellshort(1,1,limitr,o);

    if holding=0 and cc 0 then buy(1,1,limitr,o);

    if holding=0 and cc 0 then buyshort(1,1,limitr,o);

    if cc 0 and ma5 ma20 then cc:=0;

    if cc 0 and ma5 ma20 then cc:=0;

    if cc=0 and ma5 ma20 and entertime then cc:=1;

    if cc=0 and ma5 ma20 and entertime then cc:=-1;

    if time =150000 then begin

    cc:=0;

    end

    那么,如果是 K线走完模式和盘中模式并存,怎么做呢?也简单,就是在 开盘价下单语句 后面加入蓝色部分的 盘中下单语句 就行了

    如下:

    runmode:0;

    variable:zs=0,cc=0;

    ma5:=ma(c,5);

    ma20:=ma(c,20);

    entertime:=time 100000 and time 144500;

    if holding 0 and cc =0 then sell(1,1,limitr,o);

    if holding 0 and cc =0 then sellshort(1,1,limitr,o);

    if holding=0 and cc 0 then buy(1,1,limitr,o);

    if holding=0 and cc 0 then buyshort(1,1,limitr,o);

    if cc 0 and l zs then begin

    sell(1,1,limitr,min(o,zs-0.6));

    cc:=0;

    end

    if cc 0 and h zs then begin

    sellshort(1,1,limitr,max(o,zs+0.6));

    cc:=0;

    end

    if cc 0 and ma5 ma20 then cc:=0;

    if cc 0 and ma5 ma20 then cc:=0;

    if cc=0 and ma5 ma20 and entertime then begin

    cc:=1;

    zs:=c-10;

    end

    if cc=0 and ma5 ma20 and entertime then begin

    cc:=-1;

    zs:=c+10;

    end

    if time =150000 then begin

    cc:=0;

    end


    二、移动止损的编写方法:
    还是以之前的模型为例,希望加入移动止损,即:开仓后的最高点回落10个点要盘中止损离场
    加入一个全局变量 hl,记录开多后的最高点,开空后的最低点:
    runmode:0;
    variable:zs=0,cc=0,hl=0;
    ma5:=ma(c,5);
    ma20:=ma(c,20);
    entertime:=time 100000 and time 144500;
    if holding 0 and cc =0 then sell(1,1,limitr,o);
    if holding 0 and cc =0 then sellshort(1,1,limitr,o);
    if holding=0 and cc 0 then buy(1,1,limitr,o);
    if holding=0 and cc 0 then buyshort(1,1,limitr,o);
    if cc 0 and l zs then begin
    sell(1,1,limitr,min(o,zs-0.6));
    cc:=0;
    end
    if cc 0 and h zs then begin
    sellshort(1,1,limitr,max(o,zs+0.6));
    cc:=0;
    end
    if cc 0 and ma5 ma20 then cc:=0;
    if cc 0 and ma5 ma20 then cc:=0;
    if cc=0 and ma5 ma20 and entertime then begin
    cc:=1;
    zs:=c-10;
    hl:=h;
    end
    if cc=0 and ma5 ma20 and entertime then begin
    cc:=-1;
    zs:=c+10;
    hl:=l;
    end
    if cc 0 and h hl then begin//创新高后,上移hl
    hl:=h;
    zs:=hl-10;
    end
    if cc 0 and l hl then begin//创新低后,下移hl
    hl:=l;
    zs:=hl+10;
    end
    if time =150000 then begin
    cc:=0;
    end

    三、逐K线模式的模型,用免费版下单交易的方法
    runmode:0;
    variable:cc=0;
    ma5:=ma(c,5);
    ma20:=ma(c,20);
    entertime:=time 100000 and time 144500;
    exitlong:cc 1,tfilter;
    exitshort:cc -1,tfilter;
    enterlong:ref(cc,1) 1 and cc=1,tfilter;
    entershort:ref(cc,1) -1 and cc=-1,tfilter;
    if cc 0 and ma5 ma20 then cc:=0;
    if cc 0 and ma5 ma20 then cc:=0;
    if cc=0 and ma5 ma20 and entertime then cc:=1;
    if cc=0 and ma5 ma20 and entertime then cc:=-1;
    if time =150000 then cc:=0;

    原理是,用全局变量cc记录仓位,然后根据仓位的变化情况来确定下单信号


    四、日内满仓反手的写法
    因为满仓的情况下,要等平仓单成交、保证金释放后,开仓下单才能成功。
    用系统自带的orderqueue在平仓单没有第一时间成交的情况下有一定的局限性,可用如下的方法:
    runmode:0;
    input:cw(3,1,10,1);
    variable:cc=0;
    ma5:=ma(c,5);
    ma20:=ma(c,20);
    entertime:=time 100000 and time 144500;
    if holding 0 and cc =0 then sell(1,cw,limitr,o);
    if holding 0 and cc =0 then sellshort(1,cw,limitr,o);
    //此方法撤单和追单时间要控制在出信号的K线时间以内
    if holding=0 and cc 0 and cw+tholding2 =cw then buy(1,cw,limitr,o);//平空成交后, cw+tholding2 =cw 才会成立并开多
    if holding=0 and cc 0 and cw-tholding2 =cw then buyshort(1,cw,limitr,o);//平多成交后, cw-tholding2 =cw 才会成立并开空
    if cc 0 and ma5 ma20 then cc:=0;
    if cc 0 and ma5 ma20 then cc:=0;
    if cc=0 and ma5 ma20 and entertime then cc:=1;
    if cc=0 and ma5 ma20 and entertime then cc:=-1;
    if time =150000 then begin
    cc:=0;
    end

    五、自行计算最大回撤的方法,放到逐K线模式的模型最后面即可:

    zichan:asset,noaxis;
    if barpos=1 then begin
    MaxAsset:=zichan;
    Maxhc:=0; end
    if zichan MaxAsset then MaxAsset:=zichan;
    if MaxAsset-zichan Maxhc then Maxhc:=MaxAsset-zichan;
    最大回撤:Maxhc,linethick0;
    交易次数:totaltrade,linethick0;
    正确率:percentwin,linethick0;
    //这里的变量 MaxAsset 、 Maxhc 其实是全局变量,可不必声明。有重新赋值变量值才会改变

    六、 后台下单模板 ,可用于各种模型。不会写后台模型的塔友,以后不用写了,复制此模板即OK
    只要把此模板放在 模型的最后面,就可以后台全自动化交易了。此方法还有一个好处,即使用固定轮询模式,也不会漏单
    注意:把800988替换成自己的账户,按ctrl+H 进行替换
    有个性化需求的,也可在此模板上的基础上定制。不会的可以找我
    runmode:0;
    Globalvariable:hold=drawnull;
    //这里添加上你自己的模型
    //这里添加上你自己的模型
    cc800988:=holding;//这句放在信号稳定的地方,即时下单的,就放下单语句的后面,K线走完下单的就放下单语句的前面
    drawtextex(1,1,800,0,'虚拟持仓为:'+numtostr(cc800988,0));//在图表上输出虚拟持仓以便监控
    if not(islastbar) or workmode 1 then exit;
    xiadan800988:=cc800988-hold;
    if xiadan800988 0.5 then begin
    cang:=min(xiadan800988,abs(hold));
    if hold 0 then tsellshort(1,cang,mkt,0,0,'800988'),allowrepeat;
    cang:=xiadan800988+min(hold,0);
    if cang 0 then tbuy(1,cang,mkt,0,0,'800988'),allowrepeat;
    end
    if xiadan800988 -0.5 then begin
    cang:=min(abs(xiadan800988),abs(hold));
    if hold 0 then tsell(1,cang,mkt,0,0,'800988'),allowrepeat;
    cang:=abs(xiadan800988)-max(hold,0);
    if cang 0 then tbuyshort(1,cang,mkt,0,0,'800988'),allowrepeat;
    end
    hold:=cc800988;

    九毛八公式指标,一个优质的公式指标平台!
    九毛八公式指标 » 金字塔 阿火秘笈——汇集各种模型编写方法(最新更新—通过飞信给自己发短信的VBA代码) 加入收藏