nopain 发表于 2007-7-21 19:34:51

一个简单顺势交易系统的例子

该交易系统的建仓条件为:
1、前两个Bar收阳,并呈上涨趋势;
2、当前价格为最近前2个Bar最高价的回落,而且回落幅度大于0.382。回落幅度是相对于最高价到最低价的范围。
该交易系统的平仓条件为:
1、当前价格的获利价格点数大于建仓时最低价到最低价的范围。
该交易系统的止损条件为:
1、当前价格从建仓时的最高价格的回落大于最低价到最高价的范围的0.5。


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;
    lowestValue = lowestValue;
    If(MarketPosition ==0 ) // 当前空仓
    {
        If(Close>Open && Close > Open && Close > Close)
        {
            startCondition = True;
            highestValue = max(high,high);
            lowestValue = min(low,low);
        }
        
        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

[ 本帖最后由 nopain 于 2007-10-18 17:18 编辑 ]

ATL 发表于 2007-7-21 19:45:17

学习! 代码中有注释很好。

bcsunwww 发表于 2007-7-22 08:59:12

该例代码引入TB后为何注释变为"????"?

[ 本帖最后由 nopain 于 2007-7-22 09:12 编辑 ]

nopain 发表于 2007-7-22 09:12:36

原帖由 bcsunwww 于 2007-7-22 08:59 发表 http://www.tradeblazer.net/forum/images/common/back.gif
该例代码引入TB后为何注释变为"????"?

这是由于公式编辑器支持的是Unicode编码。
你先保存到一个TXT文本中,然后从公式编辑器窗体->文件->导入公式脚本,这样就可以显示中文了

bcsunwww 发表于 2007-7-22 09:23:04

请教版主一个问题:能在TB的交易系统里设定交易的商品种类及周期吗?

nopain 发表于 2007-7-22 09:31:41

原帖由 bcsunwww 于 2007-7-22 09:23 发表 http://www.tradeblazer.net/forum/images/common/back.gif
请教版主一个问题:能在TB的交易系统里设定交易的商品种类及周期吗?

交易系统是依附于超级图表执行的,所以,图表的商品种类及周期决定交易系统的周期。
现在交易系统内暂时还没有提供跨周期数据引用,
我们会在以后的版本提供跨周期数据引用的用户函数。
如果您熟悉语法,其实现在自己就可以通过用户函数来实现这些功能。

bcsunwww 发表于 2007-7-22 09:46:03

谢谢版主回复,我先学习学习语法再说.

vivaxie 发表于 2007-7-29 08:27:32

这个软件思想很好,但对于我们学过C语言的还好说,对不是计算机专业的,可能就不那么容易了
建议可以采取中英文结合的方式,跟飞弧一样,然后尽量的通俗易懂,其实可以从分析家、飞弧等软件上得到启发~~~~~~

nopain 发表于 2007-7-29 08:46:00

原帖由 vivaxie 于 2007-7-29 08:27 发表 http://www.tradeblazer.net/forum/images/common/back.gif
这个软件思想很好,但对于我们学过C语言的还好说,对不是计算机专业的,可能就不那么容易了
建议可以采取中英文结合的方式,跟飞弧一样,然后尽量的通俗易懂,其实可以从分析家、飞弧等软件上得到启发~~~~~~ ...

我们也在考虑通过GUI的形式生成简单的语法框架,然后进行代码细节修改。
具体方式见ATL同学的建议贴,当然具体实现还要做很多工作。
详细情况见下贴:
TB团队看过来,重要建议

[ 本帖最后由 nopain 于 2007-7-29 08:47 编辑 ]

lsz682000 发表于 2008-1-17 09:58:57

回复 #9 nopain 的帖子

“交易系统是依附于超级图表执行的”
请问能使用多个交易系统同时交易多个商品、多种周期图表吗?
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 一个简单顺势交易系统的例子