您现在的位置:程序化交易>> 期货公式>> 文华财经>> 文华财经知识>>正文内容

具体点位的程序化编写 [文华财经]

  • 咨询内容:  老师好,可否帮助设计一个很简单的程序,做的是香港的恒生指数,从早晨 9:15开始到下午16:30 结束,不做夜盘。 大概这样做: 看秒钟的K先,以早晨9:30分0秒0分的开盘价为基准点。当行情上升到10个点,买入一手(争取正好在第10个点的位置,而不是在“附近”,看能否做到,如做不到也没关系),如果亏15个点则卖出并反手做一手(也是,争取在正好亏15个点的时候做空反手,而不是附近,争取一下)。 如果行情是跌落,也一样,跌到10个点,卖出一手,然后,如果亏损15个点,反手买入,这样,如此循环第做下去,指导行情结束。 另外,可否再加一个平仓条件,就是当盈利100个点的时候,也是平仓,同时开仓(同方向)一手,重复以前的,这新的一手,如果亏15个点则反手,这样,行情会在一开始的时候有买卖,然后在涨、跌100个点的时候也有买卖,都是亏损15个点平仓,否则走到收盘的时候。  谢谢老师,这其实是两个程序,放在一起了,好在都很简单。 

     

     来源:程序化99

  • 文华技术人员: 思路需要核实:
    1.盈利100点平仓,并同向开仓一手,是指比如多头情况下盈利100点卖平后再买开一手?
    这个是无法同时做到的,只能做到同时反向开仓,您调整一下思路,这里先按同时反向开仓给您编写
    2.走到收盘,收盘前是否清仓?如需清仓需要收盘前多长时间清仓?
    这里先按照不清仓给您编写
    3.刚好10点或15点,这样的条件可以编写(如下形式),但是条件较难满足,您了解下
    参考:
    OO:=VALUEWHEN(TIME=093000,O); AA:=TIME>093000&&TIME<163000; C=OO+10*MINPRICE&&COUNTSIG(BK,BARPOS)=0&&AA,BK(1); C=OO-10*MINPRICE&&COUNTSIG(SK,BARPOS)=0&&AA,SK(1); (C=BKPRICE-15*MINPRICE||C=BKPRICE+100*MINPRICE)&&BKVOL>0&&AA,SPK(1); (C=SKPRICE+15*MINPRICE||C=SKPRICE-100*MINPRICE)&&SKVOL>0&&AA,BPK(1);

     

     来源: WWW.CXH99.COM

  • 文华客服:  老师您好,继续这个问题,我有几个问题。 您编的水平确实很高,加上我是菜鸟,还是消化了一回儿。 我的问题有三个:  第一,这个模型,如果我改为过滤模型(以为自始至终我都是一手在操作的),就是把诸如BK(1) 改为BK, spk(1) 也改为spk,最后加上AUTOFILL;, 这样,理论上应该测试的结果和没改之前您的模型结果是一样的,因为按照您的模型,它也是只有一手操作,没有两手或以上的情形,为什么改成过滤模型了之后,测试的结果会有很大的不同呢? 我应该相信哪一个?  第二,您在上面问的很对,我是要当天平仓的,就是在16:30日盘接受的时候平仓,我自己直接加了一个 TIME>162959 CLOSEOUT; 可是,为什么我加了这个,语法上没有错,但执行的时候,60天周期只执行了两三天,这是为什么? 您可否在这基础上,直接帮我改一下,改成不论如何做,最后16:30分平仓? 第三, 您所编的程序,就是涨跌100点,是动态的平仓且反手的,就是说比如一开始是20000点,从20010点开始买入,如果没有跌,到20110就平仓卖出反手,经过几次震荡(每亏15个点反手一次),到20200还会继续平仓卖出反手(就是盈利100点时候),而我的意思是,如果过了20100点还继续涨,就不再每一百点平仓反手了,而是一直做到当天结束。 (下跌也是一个意思!),也就意味着,我不是要求动态的每波动100个点(其实是盈利100点)都平仓,而是,比如20000是基准点,只有在21100 和19890 的时候 会作反手,否则就等到日盘结束就平仓了。 您可否帮我这样改一下,我估计,这样改似乎可以,就是 (C=BKPRICE-15*MINPRICE||C=BKPRICE+100*MINPRICE)&&BKVOL>0&&AA,SPK(1);(C=SKPRICE+15*MINPRICE||C=SKPRICE-100*MINPRICE)&&SKVOL>0&&AA,BPK(1)  
    改成(C=BKPRICE-15*MINPRICE||C=OO+100*MINPRICE)&&BKVOL>0&&AA,SPK(1);(C=SKPRICE+15*MINPRICE||C=OO-100*MINPRICE)&&SKVOL>0&&AA,BPK(1);
    就是把BKPRICE和SKPRICE 都改成OO, 您看对吗? 但是我还有一个要求,就是可否设一个变量,让它记录下来分别在基准价格(比如一开始的20000点)附近上下开平仓了多少回,做个记录,然后分别也在100点涨和跌之后,每一回的震荡(开仓,平仓)次数又有多少回,把这三个数字给做个动态的记录,您看可否? (三个记录分别是: 从20010到19990直接,来回走了多少回,已经从19890到19900, 和 20100到20110之间走了多少次,做个记录 )  ,您看可以吗?  谢谢了,说起来很啰嗦,老师做起来应该是几句话的事情。 感谢!

     

  • 网友回复: 第一,过滤模型和非过滤模型呈现的结果都是准确
    存在差异是因为过滤模型存在信号过滤机制,开仓信号的下个信号必须是平仓信号
    而非过滤模型属于加仓的思路,开仓信号的下个信号可能还是开仓信号,所以就导致了两种模型的信号记录存在差异
    -------
    第二,这是因为时间设置为TIME>162959,只有当163000时的K线有数据时才有可能按照您的思路准确平仓
    否则如果163000这一秒没有数据,那么就不会触发清仓指令,或者是在夜盘时段执行清仓指令也是有可能的
    -------
    第三,您的编写方式不是十分准确,您是指超过100点盈利后就一直持有直到尾盘平仓?
    另外,您所说的记录三个数值,后面两个是指记录盈利100点后的震荡次数?
    但是如果盈利超过100点一直持有到尾盘平仓的话期间是不会有信号震荡的,暂时先给您编写盈利100点震荡次数
    根据您的思路,这样编写试试看
    OO:VALUEWHEN(TIME=093000,O);AA:=TIME>093000&&TIME<162930;C=OO+10*MINPRICE&&COUNTSIG(BK,BARPOS)=0&&AA,BK(1);C=OO-10*MINPRICE&&COUNTSIG(SK,BARPOS)=0&&AA,SK(1);C=BKPRICE-15*MINPRICE&&BKVOL>0&&AA&&COUNT(C>BKPRICE+100*MINPRICE,BARSBK)=0,SPK(1);C=SKPRICE+15*MINPRICE&&SKVOL>0&&AA&&COUNT(C<SKPRICE-100*MINPRICE,BARSSK)=0,BPK(1);BKVOL>0&&AA&&COUNT(C>BKPRICE+100*MINPRICE,BARSBK)=1,SPK(1);SKVOL>0&&AA&&COUNT(C<SKPRICE-100*MINPRICE,BARSSK)=1,BPK(1);CLOSESEC<=30,CLOSEOUT;AA:COUNTSIG(BPK,BARSLAST(TIME=093000)+1)+COUNTSIG(SPK,BARSLAST(TIME=093000)+1),NODRAW;//仅在盈利100点前为准确数值


     

  • 网友回复:  老师好,关于您上面回答的第二个问题还是不是很清楚: 为什么您编的程序好好的,但是我加上在当天期末全部平仓,就60天内只执行两天,我就十分的疑惑。这样吧,还是用您编的这个程序: 
    OO:=VALUEWHEN(TIME=093000,O);AA:=TIME>093000&&TIME<163000;C=OO+10*MINPRICE&&COUNTSIG(BK,BARPOS)=0&&AA,BK(1);C=OO-10*MINPRICE&&COUNTSIG(SK,BARPOS)=0&&AA,SK(1);(C=BKPRICE-15*MINPRICE||C=BKPRICE+100*MINPRICE)&&BKVOL>0&&AA,SPK(1);(C=SKPRICE+15*MINPRICE||C=SKPRICE-100*MINPRICE)&&SKVOL>0&&AA,BPK(1);
    但是,把AA的条件改成: AA:=AA:=TIME>093000&&TIME<162600;  //就是,在每天下午16点26分前执行该程序。然后加上一个
    TIME>162600, CLOSEOUT; 或者 BP(SKVOL); SP(BKVOL); 这样的程序应该可以运行了吧? 可是我在60天周期运行时,还是只执行两三天,不知道为什么,您能够给我一个完整的程序吗? 谢谢老师!  完整的程序就是在16:26分 全部平仓。

 

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

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


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

相关文章

    没有相关内容