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

请版主帮我写个可以用于精英版自动交易股票的简单策略。 [MC]

  • MC用户求助:

    购买了精英版,奈何对MC都不怎么了解,别谈精英版了,竑廷说,你都没适用过就买软件了啊?我心想没办法,因为一直想实现股票轮动的操作。想实现一个股票轮动操作的简单策略。请版主帮忙。

    不用选股,我会自己每天往左侧的股票池里面加股票。

    策略要做到的就是按照既定规则操作。规则如下:

    1、突破近期N根K线的最高点,开仓买入股票。(N可以自定义,我需要根据每只股票的情况,自己在每个股票上设定N值)

    2、买入后,自动设定止损价。止损价=建仓价格-2ATR(这里就是采用海龟的止损方法,2ATR中的2可自定义。)

    3、当价格上涨大于建仓价与2ATR之和时,止损价上移至建仓价格。(2ATR中的2可自定义。)

    4、当价格继续上涨后,止盈位为最高价回落2ATR。(2ATR中的2可自定义。)(其实就是追踪止盈)

    5、每个股票建仓后,5根K线后,当前价格-建仓价小于2ATR,自动平仓。(这里的5,可以自定义参数,2也可以)

    6、每个股票占有总账户资金的十分之一。(十分之一也可以自定义)。假如有20万资金,那每个股票根据自己的股价,可以买入2万左右,因为股价不一样,只能是买入最接近2万的那个数值的手数。不能大于2万元。懂我的意思吗?比如一个股票16元,那就买入2万/16元=1250股,舍去百位后面的数字,就是买入12手,市值19200元。假如一个股票价格17元,那就买入2万/17元=1176.4股,即11手,市值18700元。

    复杂吗?可以写吗?求版主帮忙。一直想实现股票轮动。还有一些细节再说一下。

    按照每个股票占有总资金十分之一,那么就是说,我的账户最多只能买10个股票。(是这样吗?)当所有的资金都被占用(即:满仓)后,股票池内即使有新的股票发出买入信号,都不会进来。直到有在仓的股票平仓后,新发生信号的股票才能进入。

    每个股票仅操作一次,(是不是买入并卖出的股票,会自动从股票池里面离开?)

    跪谢版主!

     

  • MC回复讨论一:

    抱歉,下午在开会,才看到,您的问题下个星期会及时处理。

     

  • MC回复讨论二:

    第一、您的PT策略代码如下:
    //左侧的策略代码,名称为:ygnh123

    inputs: N(10), n_atr(2);

    variables:  var0( 0 ), var_atr(0), mp(0), cur(0);

    mp=marketposition;

    var0 =highest(close,N)[1];

    cur=T_Plus_1_Extension;  //这个函数可以在官网下载“均线金死叉策略 (股票)”,这个模板中有

    pmm_set_my_named_num("close",close);

    condition2 = CurrentBar > 1 and close cross above var0 and marketposition=0;

    if condition2 then 

    pmm_set_my_named_num("condition2",1)

    else pmm_set_my_named_num("condition2",0);

    Buy ( "MA3CrsLE" ) next bar at market ;

    if mp[1]=0 and mp=1 then

    var_atr=AvgTrueRange(10);

    if cur>=100 then

    setdollartrailing(currentcontracts*bigpointvalue*2*var_atr);

     

    //资金管理信号,名称为:ygnh123_PMM

    input: max_entry(10), account_per(10);

    var: contr(0);

    array: strategy_arr_index[](0);

     

    value1=max_entry-portfolio_currententries;

    array_setmaxindex(strategy_arr_index,max_entry-1);

    pmms_strategies_deny_entries_all;

     

    value3=0;

    if value1>0 then begin

    for value2=0 to value1-1 begin

    if pmms_get_strategy_named_num(value2,"condition2")=1 then begin

    strategy_arr_index[value3]=value2;

    value3=value3+1;

    end;

    end;

    end;

    for value4=0 to value3-1 begin

    value7=strategy_arr_index[value4];

    pmms_strategy_allow_entries(value7);

    contr=intportion(0.01*account_per*(portfolio_netprofit+initialcapital)/(100*pmms_get_strategy_named_num(value7,"close")))*100;

    pmms_strategy_set_entry_contracts(value7,contr);

     

    end;

    第二、以上策略的关键字等在这里就不一一说明,您可以在策略星学院搜索课程“轮动选牛股”就可以找到相关的讲解;您的PT策略没有排序,当同一时间有超过10个股票满足进场条件时,只会选择最开始的10个股票进场;由于您的策略需要针对不同的股票设置不同的参数,那么您可以使用不同的策略组(因为每个策略组中的策略都是相同的参数),设置如下:

    第三、除了以上的说明之外,您的策略中有手动操作的部分:手动添加股票和手动删除交易过的股票;这种情况下,您每次添加和删除的时候需要停止自动交易,然后再开启自动交易;但是,若您停止自动交易时策略有持仓,那么有几个地方需要注意一下:
    1、每次重启自动交易,手动输入当天的可卖股数及价格;这样挺麻烦。
    2、勾选策略属性中的“使用经纪商实际部位”,但是这种情况下,您需要在收盘后操作(即停止自动交易,然后重启自动交易)

     

  • MC回复讨论三:

    为版主的职业精神点赞!对于您第三里面的说明,我添加股票都是收盘以后,也需要停止自动交易然后再开启吗?也需要手动输入可卖股数及价格吗?还有,为什么要删除股票?股票不是自动进入交易后,一次买卖后自动删除吗?

     

  • MC回复讨论四:

    为版主的职业精神点赞!对于您第三里面的说明,我添加股票都是收盘以后,也需要停止自动交易然后再开启吗?也需要手动输入可卖股数及价格吗?还有,为什么要删除股票?股票不是自动进入交易后,一次买卖后自动删除吗?

 

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

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


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

相关文章

    没有相关内容