2007-7-21 19:34
nopain
一个简单顺势交易系统的例子
该交易系统的建仓条件为:
1、前两个Bar收阳,并呈上涨趋势;
2、当前价格为最近前2个Bar最高价的回落,而且回落幅度大于0.382。回落幅度是相对于最高价到最低价的范围。
该交易系统的平仓条件为:
1、当前价格的获利价格点数大于建仓时最低价到最低价的范围。
该交易系统的止损条件为:
1、当前价格从建仓时的最高价格的回落大于最低价到最高价的范围的0.5。
[code]Params
Numeric TrailingSet(0.382); // 回撤开仓比例设置,从最高点下跌的比例
Numeric StopLossSet(0.5); // 止损比例设置
Vars
Bool startCondition(False); // 启动条件
Bool EntryCondition(False); // 开仓条件
Bool ExitCondition(False); // 平仓条件
NumericSeries highestValue(0); // 前2个周期的最高价
NumericSeries lowestValue(0); // 前2个周期的最低价
Numeric myEntryPrice(0); // 开仓价格
Numeric myExitPrice(0); // 平仓价格
Begin
highestValue = highestValue[1];
lowestValue = lowestValue[1];
If(MarketPosition ==0 ) // 当前空仓
{
If(Close[2]>Open[2] && Close[1] > Open[1] && Close[1] > Close[2])
{
startCondition = True;
highestValue = max(high[2],high[1]);
lowestValue = min(low[2],low[1]);
}
If(startCondition)
{
EntryCondition = ((highestValue - Open) / (highestValue - lowestValue) > TrailingSet )&& // 开盘价即满足回撤条件,用开盘价进行交易
(Open > highestValue -((highestValue - lowestValue)*StopLossSet)) ; // 开盘价不能低于预设的止损价
If( EntryCondition)
{
Buy(1,Open);
}Else // 再看其它价格是否满足
{
EntryCondition = (highestValue - Low) / (highestValue - lowestValue) > TrailingSet ; // 最低价满足回撤条件,用低于TrailingSet设置的最近价位建仓
If(EntryCondition)
{
myEntryPrice = highestValue - (HighestValue - LowestValue ) * TrailingSet;
myEntryPrice = IntPart(myEntryPrice / (PriceScale()*MinMove)) *(PriceScale()*MinMove); // 对价格进行处理
If(myEntryPrice >= low && myEntryPrice <= High)
{
Buy(1,MyEntryPrice);
}
}
}
}
}else If(MarketPosition == 1) // 当前多仓
{
ExitCondition = ( HighestValue - Low )/(highestValue - lowestValue) > StopLossSet; // 止损条件满足
If(ExitCondition)
{
myExitPrice = highestValue - (HighestValue - LowestValue ) * StopLossSet;
myExitPrice = IntPart(myExitPrice / (PriceScale()*MinMove)) *(PriceScale()*MinMove); // 对价格进行处理
Sell(CurrentContracts(),myExitPrice);
}Else // 获利平仓
{
ExitCondition = (high - AvgEntryPrice()) > (highestValue - lowestValue); // 获利平仓条件满足
If(ExitCondition)
{
myExitPrice = AvgEntryPrice() + (HighestValue - LowestValue );
myExitPrice = IntPart(myExitPrice / (PriceScale()*MinMove)) *(PriceScale()*MinMove); // 对价格进行处理
If (myExitPrice >= low && myEntryPrice <= high)
{
Sell(CurrentContracts(),myExitPrice);
}Else
{
Sell(CurrentContracts(),Close);
}
}
}
}
End[/code]
[[i] 本帖最后由 nopain 于 2007-10-18 17:18 编辑 [/i]]
2007-7-21 19:45
ATL
学习! 代码中有注释很好。
2007-7-22 08:59
bcsunwww
该例代码引入TB后为何注释变为"????"?
[[i] 本帖最后由 nopain 于 2007-7-22 09:12 编辑 [/i]]
2007-7-22 09:12
nopain
[quote]原帖由 [i]bcsunwww[/i] 于 2007-7-22 08:59 发表 [url=http://www.tradeblazer.net/forum/redirect.php?goto=findpost&pid=79&ptid=28][img]http://www.tradeblazer.net/forum/images/common/back.gif[/img][/url]
该例代码引入TB后为何注释变为"????"? [/quote]
这是由于公式编辑器支持的是Unicode编码。
你先保存到一个TXT文本中,然后从公式编辑器窗体->文件->导入公式脚本,这样就可以显示中文了
2007-7-22 09:23
bcsunwww
请教版主一个问题:能在TB的交易系统里设定交易的商品种类及周期吗?
2007-7-22 09:31
nopain
[quote]原帖由 [i]bcsunwww[/i] 于 2007-7-22 09:23 发表 [url=http://www.tradeblazer.net/forum/redirect.php?goto=findpost&pid=87&ptid=28][img]http://www.tradeblazer.net/forum/images/common/back.gif[/img][/url]
请教版主一个问题:能在TB的交易系统里设定交易的商品种类及周期吗? [/quote]
交易系统是依附于超级图表执行的,所以,图表的商品种类及周期决定交易系统的周期。
现在交易系统内暂时还没有提供跨周期数据引用,
我们会在以后的版本提供跨周期数据引用的用户函数。
如果您熟悉语法,其实现在自己就可以通过用户函数来实现这些功能。
2007-7-22 09:46
bcsunwww
谢谢版主回复,我先学习学习语法再说.
2007-7-29 08:27
vivaxie
这个软件思想很好,但对于我们学过C语言的还好说,对不是计算机专业的,可能就不那么容易了
建议可以采取中英文结合的方式,跟飞弧一样,然后尽量的通俗易懂,其实可以从分析家、飞弧等软件上得到启发~~~~~~
2007-7-29 08:46
nopain
[quote]原帖由 [i]vivaxie[/i] 于 2007-7-29 08:27 发表 [url=http://www.tradeblazer.net/forum/redirect.php?goto=findpost&pid=370&ptid=28][img]http://www.tradeblazer.net/forum/images/common/back.gif[/img][/url]
这个软件思想很好,但对于我们学过C语言的还好说,对不是计算机专业的,可能就不那么容易了
建议可以采取中英文结合的方式,跟飞弧一样,然后尽量的通俗易懂,其实可以从分析家、飞弧等软件上得到启发~~~~~~ ... [/quote]
我们也在考虑通过GUI的形式生成简单的语法框架,然后进行代码细节修改。
具体方式见ATL同学的建议贴,当然具体实现还要做很多工作。
详细情况见下贴:
[url=http://www.tradeblazer.net/forum/viewthread.php?tid=75&extra=page%3D1]TB团队看过来,重要建议[/url]
[[i] 本帖最后由 nopain 于 2007-7-29 08:47 编辑 [/i]]
2008-1-17 09:58
lsz682000
回复 #9 nopain 的帖子
“交易系统是依附于超级图表执行的”
请问能使用多个交易系统同时交易多个商品、多种周期图表吗?
2008-1-17 11:59
nopain
1、一个商品,一个周期,多个系统(如果希望系统之间相互影响),放到一个图表。
2、一个商品,一个周期,一个系统,放到一个图表。
3、多开几个图表分别对应不同的设置。
2008-8-23 15:56
lilei19733
能不能加入开空仓的代码
这个交易指令测试下来,好象都是亏的。是不是没有加入做空的代码的原因?
2008-9-4 14:23
feng1234567
走过,路过,学习过。
谢谢
2008-10-1 16:31
samwjwj
文字表述的策略与实际代码似乎不一致
2、当前价格为最近前2个Bar最高价的回落,而且回落幅度大于0.382。回落幅度是相对于最高价到最低价的范围。
这段代码所表达的进场条件似乎比以上条件要更多!!
EntryCondition = ((highestValue - Open) / (highestValue - lowestValue) > TrailingSet )&& // 开盘价即满足回撤条件,用开盘价进行交易
(Open > highestValue -((highestValue - lowestValue)*StopLossSet)) ; // 开盘价不能低于预设的止损价
If( EntryCondition)
{
Buy(1,Open);
}Else // 再看其它价格是否满足
{
EntryCondition = (highestValue - Low) / (highestValue - lowestValue) > TrailingSet ; // 最低价满足回撤条件,用低于TrailingSet设置的最近价位建仓
If(EntryCondition)
{
myEntryPrice = highestValue - (HighestValue - LowestValue ) * TrailingSet;
myEntryPrice = IntPart(myEntryPrice / (PriceScale()*MinMove)) *(PriceScale()*MinMove); // 对价格进行处理
If(myEntryPrice >= low && myEntryPrice <= High)
{
Buy(1,MyEntryPrice);
请nopain做个详细的解释!!多谢!!!!
2008-10-1 16:40
samwjwj
管理员是否可以画个逻辑树把这个交易系统表述清楚
管理员是否可以画个逻辑树把这个交易系统表述清楚,感谢!!
页:
[1]
Powered by Discuz! Archiver 5.5.0
© 2001-2006 Comsenz Inc.