一个稳定盈利的日内交易系统代码.大家一起来完善.
前两天我发过一篇帖子介绍了hans123系统,今天我给大家来点硬货,一个实实在在稳定盈利的日内系统,其中还有很大完善空间,由于我学TB刚刚一周多,技术方面还不是很熟练,希望各位程序高手协助我完善系统,我很喜欢国外论坛的那种氛围,交易高手分享他们的思路和ea雏形,程序高手无偿的帮助他们实现他们的想法,在这个过程中相互提高.再此我希望更多高手分享他们系统的源码,以此来相互提高,让我们早日超过欧美同行的水平.恩,我以为真正掌握交易之道的人是不怕分享他们的思路和系统的,因为一个失效的系统略加修改就可以成为一个稳定获利的系统.为了证明这一点我将在接下来的文章中公布一个和这个系统完全相反的系统,你会发现只要调整交易周期和参数,系统就可以稳定获利.道家说道可道,非常道.名可名,非常名.无,曰天地始.有,曰万物主.常无,欲观其妙.常有,欲关其缴.玄之又玄,众妙之门.用在交易系统上来说就是可以写出来的系统肯定不是永远有效的系统,只有掌握了交易之道的人,才能随着市场变化调整他的交易策略.永远与道同在.所谓常无,就是要经常抛弃以前的所有的理论和观念,以客观观察市场的奥妙.常有,就是要带着你以前设计交易系统的经验和技巧.去审视你现在所用的系统.谨以此篇献给各位交易市场的新手老手.希望我们大家一起合作,制作出一个完善可靠的交易系统来.就算没有任何系统经验的人也来分享一下你们的想法,很多时候新手的一句话也是我灵感的源泉.实在不知道说啥的就帮顶一下吧,此帖能一直置顶我就每周发一个交易系统,呵呵.不废话了,开始说代码和思路.***1基本思路:RangeBreak加入交易时间过滤,多周期趋势过滤,突破range过滤.Range优化.
参加过高级应用培训的人应该很熟悉这个系统,这是我在外汇市场用了很久的系统,想移植到国内来,通过搜索找到了培训的文档.然后写了出来,发现效果不是很好,于是我就对其进行了优化,优化的结果还是相当不错的资金曲线稳定增长,利润也不小,大家可以自己测试一下.用于股指期货铜,锌等品种的15分钟都是相当不错的。恩下面叙述一下基本的交易思路。
以昨日震幅为基础,今日开盘价+N*昨日震幅等于上轨 今日开盘价-昨日震幅*N等于下轨,突破上轨做多突破下轨做空。反之平仓,14点55分平掉所有仓位。N=0.8
已完成优化的思路
1。限制交易时间,最后开仓时间在下午两点以前(根据观察接近收盘的突破一般是无效的)
2。限制前一日的最小震幅(根据观察昨日震幅太小的话会出现很多无效信号)
未完成的交易思路 各位高手前辈不吝赐教协助我完成下哈。
1。根据观察与大周期趋势相反的突破一般来说是假突破。限制大周期趋势方法,日线n周期ma方向.
处理方法:
1.过滤掉所有与大周期趋势相反的信号
2.所有大周期相反的信号反向操作既原来做空现在做多,原来做多现在做空。
根据我外汇自动交易的经验处理方法2更加有效,但编程比较复杂希望高手能帮助我完成这两个思路的编程。
PS:大家有什么进一步优化这个系统的思想也可以提出来我会尽我所能去实现它。
代码缺陷:
14点55分平仓在15分钟不能运行,在1分钟运行正常。不明白为什么,请高手赐教。
有其它缺陷大家也请提出来
以下是代码.
//------------------------------------------------------------------------
// 简称: RB
// 名称:15Min RangeBreak
// 类别: 交易指令
// 类型: 其他
// 输出:
//------------------------------------------------------------------------
Params
Numeric PercentOfRange(0.8);//突破参数N
Numeric ExitOnCloseMins(14.55);//平仓时间
Numeric MinRange(0.2);//最小Range
Numeric LastTradeMins(14.00);//最后交易时间
Numeric BeginTradeMins(9.00);
Numeric Lots(1);
Numeric Stoplossset(1);
Vars
NumericSeries DayOpen;
NumericSeries preDayRange;
NumericSeries HigherAfterEntry;
NumericSeries LowerAfterEntry;
Numeric preDayHigh;
Numeric preDayLow;
Numeric UpperBand;
Numeric LowerBand;
Numeric MyPrice;
Numeric StopLine;
Begin
DayOpen=OpenD(0);
preDayHigh=HighD(1);
preDayLow=LowD(1);
preDayRange=HighD(1)-LowD(1);
UpperBand=DayOpen+preDayRange*PercentOfRange;
LowerBand=Dayopen-preDayRange*PercentOfRange;
If(BarsSinceEntry==1)
{
HigherAfterEntry=AvgEntryPrice;
LowerAfterEntry=HigherAfterEntry;
}Else If(BarsSinceEntry>1)
{
HigherAfterEntry=max (HigherAfterEntry[1],High[1]);
LowerAfterEntry=min(LowerAfterEntry[1],Low[1]);
}
If(Date!=Date[1])
{DayOpen=Open;
preDayRange=preDayHigh-preDayLow;
If(preDayRange<Open*MinRange*0.01)
PreDayRange=Open*MinRange*0.01;
}Else
{
DayOpen=DayOpen[1];
preDayRange=preDayRange[1];
}
If(MarketPosition!=1&&High>=UpperBand&&Time<LastTradeMins/100)
{
Myprice=UpperBand;
If(Open>Myprice)Myprice=Open;
Buy(1,Myprice);
Return;
}
If(MarketPosition!=1&&Low<=LowerBand&&Time<LastTradeMins/100)
{
Myprice=LowerBand;
If(Open<Myprice)Myprice=Open;
Sellshort(1,Myprice);
Return;
}
If(MarketPosition==1)
{
StopLine=UpperBand-DayOpen*StopLossSet*0.01;
If(Low<=StopLine)
{
MyPrice=StopLine;
If(Open<MyPrice)MyPrice=Open;
BuyToCover(Lots,MyPrice);
}
}
//收盘平仓
If(Time>=ExitOnCloseMins/100)
{
Sell(1,Open);
BuyToCover(1,Open);
}
SetExitOncLOSE;
End
//------------------------------------------------------------------------
// 编译版本 GS2004.06.12
// 用户版本 2010/07/11 16:44
// 版权所有 oliverzrl 赵闰龙 qq771841107
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
// 每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
[[i] 本帖最后由 oliverzrl 于 2010-7-15 20:27 编辑 [/i]]
下面是股指连续的测试报告
下面是股指连续的测试报告 很不错,谢谢分享。跟DT差不多,改为日内了。
这样的简单系统我觉得没必要用过滤,做好资金管理分散即可。
在15分图中,没有bar有14点55分这个时间,测试的话,收盘价平仓差不多了。 If(MarketPosition!=1&&Low<=LowerBand&&Time<LastTradeMins/100)
似乎应该改为 If(MarketPosition!=-1&&Low<=LowerBand&&Time<LastTradeMins/100) 感谢楼主分享!作为新手受益匪浅,希望楼主继续发表好的交易模型。 15分钟周期要在45分钟K线上平仓 If(Date!=Date[1])
{DayOpen=Open;
preDayRange=preDayHigh-preDayLow;
If(preDayRange<Open*MinRange*0.01)
PreDayRange=Open*MinRange*0.01;
}Else
{
DayOpen=DayOpen[1];
preDayRange=preDayRange[1];
}
请问以上代码是什么意思呢? 还有麻烦请教
If(preDayRange<Open*MinRange*0.01)
PreDayRange=Open*MinRange*0.01;
这句是什么意思呢? 就是,如果昨天的波幅太小,给定一个波幅 嗯 谢谢哦 理解了~~~~ If(Date!=Date[1])
在里面的意思是
本次BAR和上一个BAR是不是在同一天的意思吗? 是的 系统里面的函数 都可以用[]来调用序列以前的数据吗? 在此例中
为何只有多仓止损呢?
If(MarketPosition==1)
{
StopLine=UpperBand-DayOpen*StopLossSet*0.01;
If(Low<=StopLine)
{
MyPrice=StopLine;
If(Open<MyPrice)MyPrice=Open;
BuyToCover(Lots,MyPrice);
}
}
止损的话 如果直接写BUYTOCOVER(LOTS,0);
算是市价止损吗?
说真的 倒现在TB的止损与买入我还没搞懂
此例的话 意思是不是?
如果多头持仓的话-》
止损点=设置的下限-今日开盘止损点
如果 最低价(这个最低价是指本次BAR吗)小于止损点
平仓价=止损点
如果 开盘价(这个开盘价是指本次BAR吗) 小于 平仓点 -》平仓点=开盘价
平仓
有个疑问 既然BAR最低价低于止损点了 那么BAR开盘价怎么可能小于止损点 最多开盘价等于最低价呀
回复 13# speed_fj 的帖子
回复13楼序列变量,不是序列函数,函数值要保存在序列变量里才能回朔历史的 烦请大师解答下14楼的困惑 这个公式为了没有空头止损的命令呢?
我尝试加了空头止损的命令 出来的结果很不好
对于日内程序的测试 这个结果是否可信 是否会有测试出来结果的偏差? 恩,你把多头止损也去掉看看,一般来讲日内系统收盘平仓的效果好过止损,因为市场多数情况下震荡反复收盘前价格会追随大趋势方向 想问一下 这个突破昨日波幅的策略为何有那么高的胜率 内在道理是如何呢? 也就是说这个日内策略是否应该应用在交易频繁 流动性超好 趋势不明显的品种呢?
老实说 沪深300股指期货做日内如果做趋势非常难 交易太活跃了 多空都很多 通常一突破前期高点立马会大回撤 假信号超多
但是这个策略就非常适合 是吗?
