欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件交易策略发布专区 → [原创]公布一个可以实用的自动交易程序

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有81509人关注过本帖树形打印复制链接

主题:[原创]公布一个可以实用的自动交易程序

帅哥哟,离线,有人找我吗?
zg611029
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:262 积分:2802 威望:0 精华:0 注册:2011/11/17 19:20:51
  发帖心情 Post By:2012/2/14 9:51:43 [只看该作者]

以下是引用wd369在2012-2-13 19:00:03的发言:

仔细看了一下,在周期中波动一次是可以开和止损的,但如果波动多次就看不出来了.

而且查看其中交易中损失最大的两次,有2万的损失.按说应该是4000左右.

从这两次意外的损失就可看出些问题.

原因出在用H, L 值 进行比较是有漏洞的,因为H L值 是不连续的.

 

 所以,实盘中用使用固定轮询和高频扫描出来的结果和测试的结果应该差别不小,但是趋好还是趋坏就不清楚了.

[此贴子已经被作者于2012-2-13 19:02:02编辑过]

在讨论收益时,你不能修改我的策略的核心思想,否则就是讨论你自己的策略收益!这个策略的核心思想是:碰上轨就开多仓(持仓=0时)碰下轨开空仓(持仓=0)如果你在测试时将H/L改为C能满足我的策略的要求吗?测试时用H/L表示价格是否触摸到上下轨。如果你怕在一个周期里来回刷,你可以用1分钟周期。甚至是秒周期,对这个策略来说收益都是一样的。至于滑点漏单等那是下一个面(操作层面)的问题。

 


 回到顶部
帅哥哟,离线,有人找我吗?
wd369
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:288 积分:1038 威望:0 精华:0 注册:2011/12/8 17:52:45
  发帖心情 Post By:2012/2/14 11:04:53 [只看该作者]

我只是说下建议,个人认为用收盘价C来测试更好些. 要不你的策略的历史测试和实盘结果就相差太大了.

因为把H L 用在CROSS中判断是有问题的.

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
zg611029
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:262 积分:2802 威望:0 精华:0 注册:2011/11/17 19:20:51
  发帖心情 Post By:2012/2/14 11:26:15 [只看该作者]

讨论二

止损止盈

(不是我好为人师,实在实闲的无聊,交易程序在自动执行,我只要监测一下就行了,只好在这里打打情,骂骂俏。高手看了哈哈一笑就行了,新手看了多少还是有帮助的,程序代码编写时没有使用什么技巧,尽管运行效率可能不高,但很直观,问题只要不是太幼稚,我都会回答,欢迎大家讨论)

在这个策略中止损等于已经有了,不管持有什么仓位,只要价格一触及中轨就会平仓。所以额外的止损就不需要了。那么需要止赢吗,我认为不需要。在赚钱时我们要吃光喝尽。亏钱时控制在一定的范围内。如果大家看到本来赚了很多,可是一会又回来了,很心痛,我们可以加一个回撤止赢。可以按回撤百分比也可以按具体的点数。代码如下:


 回到顶部
帅哥哟,离线,有人找我吗?
zg611029
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:262 积分:2802 威望:0 精华:0 注册:2011/11/17 19:20:51
  发帖心情 Post By:2012/2/14 11:44:56 [只看该作者]

//股指期货自动交易程序
//编制:zg611029 qq:2313936161

//上下轨和中轨的距离

input:n(13,1,20,1);

//中轴偏移值

input:m(70,-200,200,1);

//回撤止赢点数

input:m1(24,5,30,1);

//交易手数:
tn:=1;

r1:=barslast(day-ref(day,1)<>0);

r5:ref(o,r1)+0.1*m;
r6:r5+n;
r7:r5-n;

if time>091500 and time<150000 then

begin

if cross(h,r6) then
begin
buy(holding=0,tn,limitr,r6);
end
if cross(r7,l) then
begin
buyshort(holding=0,tn,limitr,r7);
end
if holding>0 and cross(r5,l) then
begin
sell(1,0,limitr,r5);
end
if holding<0 and cross(h,r5) then
begin
sellshort(1,0,limitr,r5);
end

end

//回撤止赢

r10:=enterbars;

r11:=llv(l,r10+1);

r12:=hhv(h,r10+1);

if time>091500 and time<150000 then

begin

if holding>0 and r12-c>m1 and r10>=1 then

begin

sell(1,0,thisclose);

end

if holding<0 and c-r11>m1 and r10>=1 then

begin

sellshort(1,0,thisclose);

end
end
//收盘前清仓
if time>=151000 then
begin
sellshort(holding<0,0,thisclose);
sell(holding>0,0,thisclose);
end

持仓:holding,colorwhite,linethick0;
交易总数:totaltrade,colorwhite,linethick0;
盈亏:asset-1000000,noaxis,colorred,linethick1;

 

 

 

注意 13 70 24 都是优化的结果。


 回到顶部
帅哥哟,离线,有人找我吗?
zg611029
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:262 积分:2802 威望:0 精华:0 注册:2011/11/17 19:20:51
  发帖心情 Post By:2012/2/14 12:16:41 [只看该作者]

以下是引用wd369在2012-2-14 11:04:53的发言:

我只是说下建议,个人认为用收盘价C来测试更好些. 要不你的策略的历史测试和实盘结果就相差太大了.

因为把H L 用在CROSS中判断是有问题的.

 

 

没什么,大家只是讨论着玩,消磨下时间,C在实时行情中不仅仅是收盘价,更重要的是最新价,测试是对过去完成的事情,所以这里的C只有收盘价的概念。测试时把H L 用在CROSS中判断只是确定在这根k线中曾经的价格是否碰到过上下轨。所以在实盘时要把HL改用C,如果不考虑滑点的话,测试结果和实盘时没有区别的,你把实时的“C”和收盘价的“C”混为一谈了。


 回到顶部
帅哥哟,离线,有人找我吗?
zg611029
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:262 积分:2802 威望:0 精华:0 注册:2011/11/17 19:20:51
  发帖心情 Post By:2012/2/14 14:22:28 [只看该作者]

不好意思代码我也没有运行过,刚才去测试了一下,发现了一个BUG,我改过来了,最高收益可以达到82万/手,年收益率在140%左右,完全可以用于实战。

参数N可以用来改变交易次数,自己可以取一个合理的值就行了。M和M1也无关紧要,只要取一个合理的值,就不会改变模型的性质。代码如下:

 

 

 

//股指期货自动交易程序
//编制:zg611029 qq:2313936161

//上下轨和中轨的距离

input:n(13,1,20,1);

//中轴偏移值

input:m(70,-200,200,1);

//回撤止赢点数

input:m1(24,5,30,1);

//交易手数:
tn:=1;

r1:=barslast(day-ref(day,1)<>0);

r5:ref(o,r1)+0.1*m;
r6:r5+n;
r7:r5-n;

if time>091500 and time<150000 then
begin

if r1=0 and holding=0 then
begin
buy(h>r6,tn,limitr,r6);
buyshort(l<r7,tn,limitr,r7);
end

if cross(h,r6) then
begin
buy(holding=0,tn,limitr,r6);
end
if cross(r7,l) then
begin
buyshort(holding=0,tn,limitr,r7);
end
if holding>0 and cross(r5,l) then
begin
sell(1,0,limitr,r5);
end
if holding<0 and cross(h,r5) then
begin
sellshort(1,0,limitr,r5);
end
end

//回撤止赢

r10:=enterbars;

r11:=llv(l,r10+1);

r12:=hhv(h,r10+1);
if time>091500 and time<150000 then
begin
if holding>0 and r12-c>m1 and r10>=1 then

begin

sell(1,0,thisclose);

end

if holding<0 and c-r11>m1 and r10>=1 then

begin

sellshort(1,0,thisclose);

end
end
//收盘前清仓
if time>=151000 then
begin
sellshort(holding<0,0,thisclose);
sell(holding>0,0,thisclose);
end

持仓:holding,colorwhite,linethick0;
交易总数:totaltrade,colorwhite,linethick0;
盈亏:asset-1000000,noaxis,colorred


 回到顶部
帅哥哟,离线,有人找我吗?
zg611029
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:262 积分:2802 威望:0 精华:0 注册:2011/11/17 19:20:51
  发帖心情 Post By:2012/2/14 18:58:43 [只看该作者]

讨论3

滑点及防滑技巧

(有事一会再写)

 

 

[此贴子已经被作者于2012-2-14 18:59:37编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
太极王
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:48 积分:118 威望:0 精华:0 注册:2012/2/15 11:18:40
  发帖心情 Post By:2012/2/15 11:24:23 [只看该作者]

真不错,我一定要好好学习一下。

 

不过,这个固定 1 手 仓,换成根据资金不同,每次交易下单量有所改变就更好了。

 

前辈再指导一下吧!贴出来让小妹我学习一下,多谢了。


 回到顶部
帅哥哟,离线,有人找我吗?
zg611029
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:262 积分:2802 威望:0 精华:0 注册:2011/11/17 19:20:51
  发帖心情 Post By:2012/2/15 11:51:35 [只看该作者]

讨论3  滑点及其控制

这个策略的最大不确定性就是滑点的问题,比如我们持有多仓,价格触及中轨,假设中轨现在是2520点,为了和测试结果一致,计算机将发出以2520点的限价平仓单,但能不能成交是不好说的。所以一旦在规定的时间里不能成交,就要追单,假设最后在2519.4成交,那么你的滑点就是0.6个点。如果每次交易都出现滑点的话,那么交易的结果肯定是亏损的。下面就针对我的模型,以持有多仓触及中轨平仓为例谈一下怎么控制滑点。

 

r30:=if(holding>0 and l-r5<=0.8 and l-r5>=0.2,1,0);

r31:sum(r30,0);

 

我们将中轨到中轨+0.8点的区间称为A区,上面的两条代码就是确定价格曾经达到A区,而没有触及中轨的次数,从结果来看两年有50次,我粗看了一下其中48次在随后的几分钟内触及中轨平仓,只有2次没有平仓而触及了上轨(有兴趣的塔友帮助仔细看看),那么我们就可以这样来修改平仓条件,如果持有多仓,只要价格一触及A区就发出市价平仓指令。这样每次交易比原来方法多出0.2个点是完全可能的,假如有400次多头平仓交易那么就能多出80个点。而我们做错了的两次损失只有26个点。你可以用同样的方法处理其他的开平仓。这里有一个重要的假设:持有多仓价格一触及A区必然会触及中轨而平仓。从对历史数据的统计分析中这个假设是正确的。但如果我们加一些趋势性判断的话,那么A区就可以扩大,正确性可能更高,收益也会大大好于测试结果。

以上的方法对一般的行情是有效的。对于极端行情(价格快速穿越中轨)没有什么好办法,好在这个策略是一个随机时点交易策略,出现这种情况不是太多,有兴趣的塔友自己写几条语句做一下统计,根据我的经验,如果网络和计算机的速度比较好,出现极端行情时滑点可以控制在3个点以内。

 预告:讨论4 信号过滤

[此贴子已经被作者于2012-2-15 11:59:24编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
zg611029
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:262 积分:2802 威望:0 精华:0 注册:2011/11/17 19:20:51
  发帖心情 Post By:2012/2/15 12:03:16 [只看该作者]

以下是引用太极王在2012-2-15 11:24:23的发言:

真不错,我一定要好好学习一下。

 

不过,这个固定 1 手 仓,换成根据资金不同,每次交易下单量有所改变就更好了。

 

前辈再指导一下吧!贴出来让小妹我学习一下,多谢了。

将tn:=1 改为 tn:=0就可以了,这在实盘时没有这么做的太危险。自己去看一下buy buyshort的说明,可以以一定百分比的资金开仓。


 回到顶部
总数 82 上一页 1 2 3 4 5 6 7 8 9 下一页