您现在的位置:程序化交易>> 期货公式>> (MC)multicharts>> MC知识>>正文内容

请管理员查看官网期货网格策略MC_Grid Trading在一些品种中运用问题 [MC]

  • MC用户求助:

    本人使用精英版MC,使用PT插入官网的期货网格策略MC_Grid Trading,而该策略因关键字tl_setend_bnde 趋势画线语句在精英版有无图表交易错误提示,删除了含该关键字的所有语句。如图:

    删除后的网格策略在商品DCE.i/DCEj/dce.jm/SHFE.hc/SHFE.ni/SHFE.rb/SHFE.ru回测绩效中出现大量的低盈利或0盈利的情况,是不是该策略代码中Leg表示的网格间距对以上商品本身的合约价格数值精度不同造成跳数方面的问题?该怎样去改写。请管理员帮忙解决!!谢谢!!数据图如下:

     

  • MC回复讨论一:

    您的问题主要是行情的波动太小,而不是趋势线语句的删除。

    第一、网格策略中的参数length使用的是200根bar,期货网格策略是将最近length根bar的间距8等分,而leg的距离就是相邻两根网格线之间的间距,leg计算的是跳数,和具体的价格值没有关系。

    第二、您使用的是1分钟周期,这样可能导致leg的值很小,特别是在行情波动不太的情况下,所以您可能调整一下您的周期或者对leg的值进行一下限制,设置leg有一个最小值和一个最大值以此限制leg的范围;关于leg的限制,您可以参考一下官网上的股票网格策略的限制。

     

  • MC回复讨论二:

    input: pricevalue(close), length(200), flag_bar(60), buyp(10), sloss(2), lots(1), Minpip(5), Maxpip(25);

    var: flag1(0), flag2(-flag_bar), mp(0), leg(0),mid(0), b1(0), b2(0), b3(0), b4(0), s1(0), s2(0), s3(0), s4(0), zhs_b(0), zhs_s(0), cur_bar(1);

    array: arr_num[8](0);

     

    mp=marketposition;

    if getappinfo(aistrategyauto)=1 then

    if not lastbaronchart_s then

    cur_bar=currentbar+1

    else once cur_bar=currentbar;

     

    if (postradeexitname(1,postradecount(1)-1)="zhs_s" or postradeexitname(1,postradecount(1)-1)="zhs_b") and mp[1]<>0 and mp=0 then

    flag2=currentbar;

    if mp=0 and currentbar>=cur_bar then

    flag1=flag1+1

    else flag1=0;

     

     

    if cur_bar=currentbar or (mp<>mp[1] and mp=0) or flag1=flag_bar or flag2+flag_bar=currentbar then begin

    value11=highest(pricevalue,length);

    value22=lowest(pricevalue,length);

    value33=intportion(((value11-value22)/(minmove*1 point))/8);

     

    if value33<Minpip then

    leg=Minpip

    else if value33>Maxpip then

    leg=Maxpip

    else leg=value33;

    // mid=(value11+value22)/2;

    mid=close;

    b1=mid-1*leg*(minmove*1 point);

    b2=mid-2*leg*(minmove*1 point);

    b3=mid-3*leg*(minmove*1 point);

    b4=mid-4*leg*(minmove*1 point);

    s1=mid+1*leg*(minmove*1 point);

    s2=mid+2*leg*(minmove*1 point);

    s3=mid+3*leg*(minmove*1 point);

    s4=mid+4*leg*(minmove*1 point);

    zhs_s=b4-sloss*leg*(minmove*1 point);

    zhs_b=s4+sloss*leg*(minmove*1 point);

    arr_num[0]=TL_new_bn(currentbar,mid,currentbar,mid);

    arr_num[1]=tl_new_bn(currentbar,b1,currentbar,b1);

    arr_num[2]=tl_new_bn(currentbar,b2,currentbar,b2);

    arr_num[3]=tl_new_bn(currentbar,b3,currentbar,b3);

    arr_num[4]=tl_new_bn(currentbar,b4,currentbar,b4);

    arr_num[5]=tl_new_bn(currentbar,s1,currentbar,s1);

    arr_num[6]=tl_new_bn(currentbar,s2,currentbar,s2);

    arr_num[7]=tl_new_bn(currentbar,s3,currentbar,s3);

    arr_num[8]=tl_new_bn(currentbar,s4,currentbar,s4);

    tl_setcolor(arr_num[0],blue);

    flag1=0;

    end;

     

     

    if currentbar>=cur_bar and flag2+flag_bar<=currentbar then begin

    if close>b1-minmove*4 point then

    buy("b1") lots shares next bar at b1 limit;

    if close>b2-minmove*4 point then

    buy("b2") lots shares next bar at b2 limit;

    if close>b3-minmove*4 point then

    buy("b3") lots shares next bar at b3 limit;

    if close>b4-minmove*4 point then

    buy("b4") lots shares next bar at b4 limit;

     

    if close<s1+minmove*4 point then

    sellshort("s1") lots shares next bar at s1 limit;

    if close<s2+minmove*4 point then

    sellshort("s2") lots shares next bar at s2 limit;

    if close<s3+minmove*4 point then

    sellshort("s3") lots shares next bar at s3 limit;

    if close<s4+minmove*4 point then

    sellshort("s4") lots shares next bar at s4 limit;

    setstopcontract;

    setprofittarget(lots*bigpointvalue*minmove*leg point);

    sell("zhs_s") next bar at zhs_s stop;

    buytocover("zhs_b") next bar at zhs_b stop;

    tl_setend_bn(arr_num[0],currentbar,mid);

    tl_setend_bn(arr_num[1],currentbar,b1);

    tl_setend_bn(arr_num[2],currentbar,b2);

    tl_setend_bn(arr_num[3],currentbar,b3);

    tl_setend_bn(arr_num[4],currentbar,b4);

    tl_setend_bn(arr_num[5],currentbar,s1);

    tl_setend_bn(arr_num[6],currentbar,s2);

    tl_setend_bn(arr_num[7],currentbar,s3);

    tl_setend_bn(arr_num[8],currentbar,s4);

    end;

    以上红色标记的部分是在MC官网期货网格策略的基础上增加的部分,用于限制网格间距的范围。

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 511411198  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容