开拓者期货期权程序化系统交易论坛

标题: 一个简单顺势交易系统的例子 [打印本页]

作者: nopain    时间: 2007-7-21 19:34:51     标题: 一个简单顺势交易系统的例子

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


  1. Params
  2.     Numeric TrailingSet(0.382);       // 回撤开仓比例设置,从最高点下跌的比例
  3.     Numeric StopLossSet(0.5);        // 止损比例设置
  4. Vars
  5.     Bool startCondition(False);         // 启动条件
  6.     Bool EntryCondition(False);        // 开仓条件
  7.     Bool ExitCondition(False);          // 平仓条件
  8.     NumericSeries highestValue(0);  // 前2个周期的最高价
  9.     NumericSeries lowestValue(0);   // 前2个周期的最低价
  10.     Numeric myEntryPrice(0);          // 开仓价格
  11.     Numeric myExitPrice(0);            // 平仓价格        
  12. Begin
  13.     highestValue = highestValue[1];
  14.     lowestValue = lowestValue[1];
  15.     If(MarketPosition ==0 ) // 当前空仓
  16.     {
  17.         If(Close[2]>Open[2] && Close[1] > Open[1] && Close[1] > Close[2])
  18.         {
  19.             startCondition = True;
  20.             highestValue = max(high[2],high[1]);
  21.             lowestValue = min(low[2],low[1]);
  22.         }
  23.         
  24.         If(startCondition)
  25.         {
  26.             EntryCondition = ((highestValue - Open) / (highestValue - lowestValue) > TrailingSet )&& // 开盘价即满足回撤条件,用开盘价进行交易
  27.             (Open > highestValue -((highestValue - lowestValue)*StopLossSet)) ; //  开盘价不能低于预设的止损价                                                
  28.             If( EntryCondition)
  29.             {
  30.                 Buy(1,Open);
  31.             }Else // 再看其它价格是否满足
  32.             {
  33.                 EntryCondition = (highestValue - Low) / (highestValue - lowestValue) > TrailingSet ; // 最低价满足回撤条件,用低于TrailingSet设置的最近价位建仓
  34.                 If(EntryCondition)
  35.                 {
  36.                     myEntryPrice = highestValue - (HighestValue - LowestValue ) * TrailingSet;
  37.                     myEntryPrice = IntPart(myEntryPrice / (PriceScale()*MinMove)) *(PriceScale()*MinMove); // 对价格进行处理                                       
  38.                     If(myEntryPrice >= low &&  myEntryPrice <= High)
  39.                     {
  40.                         Buy(1,MyEntryPrice);
  41.                     }
  42.                 }                        
  43.             }
  44.         }
  45.     }else If(MarketPosition == 1) // 当前多仓
  46.     {
  47.         ExitCondition = ( HighestValue - Low )/(highestValue - lowestValue) > StopLossSet;        // 止损条件满足
  48.         If(ExitCondition)
  49.         {
  50.             myExitPrice =  highestValue - (HighestValue - LowestValue ) * StopLossSet;                        
  51.             myExitPrice = IntPart(myExitPrice / (PriceScale()*MinMove)) *(PriceScale()*MinMove); // 对价格进行处理
  52.             Sell(CurrentContracts(),myExitPrice);
  53.         }Else // 获利平仓
  54.         {
  55.             ExitCondition = (high - AvgEntryPrice()) > (highestValue - lowestValue); // 获利平仓条件满足
  56.             If(ExitCondition)
  57.             {
  58.                 myExitPrice =  AvgEntryPrice() + (HighestValue - LowestValue );                                
  59.                 myExitPrice = IntPart(myExitPrice / (PriceScale()*MinMove)) *(PriceScale()*MinMove); // 对价格进行处理
  60.                 If (myExitPrice >= low && myEntryPrice <= high)
  61.                 {
  62.                     Sell(CurrentContracts(),myExitPrice);
  63.                 }Else
  64.                 {
  65.                     Sell(CurrentContracts(),Close);
  66.                 }
  67.             }
  68.         }
  69.     }
  70. 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 发表
该例代码引入TB后为何注释变为"????"?


这是由于公式编辑器支持的是Unicode编码。
你先保存到一个TXT文本中,然后从公式编辑器窗体->文件->导入公式脚本,这样就可以显示中文了
作者: bcsunwww    时间: 2007-7-22 09:23:04

请教版主一个问题:能在TB的交易系统里设定交易的商品种类及周期吗?
作者: nopain    时间: 2007-7-22 09:31:41

原帖由 bcsunwww 于 2007-7-22 09:23 发表
请教版主一个问题:能在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 发表
这个软件思想很好,但对于我们学过C语言的还好说,对不是计算机专业的,可能就不那么容易了
建议可以采取中英文结合的方式,跟飞弧一样,然后尽量的通俗易懂,其实可以从分析家、飞弧等软件上得到启发~~~~~~ ...


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

[ 本帖最后由 nopain 于 2007-7-29 08:47 编辑 ]
作者: lsz682000    时间: 2008-1-17 09:58:57     标题: 回复 #9 nopain 的帖子

“交易系统是依附于超级图表执行的”
请问能使用多个交易系统同时交易多个商品、多种周期图表吗?
作者: nopain    时间: 2008-1-17 11:59:01

1、一个商品,一个周期,多个系统(如果希望系统之间相互影响),放到一个图表。
2、一个商品,一个周期,一个系统,放到一个图表。
3、多开几个图表分别对应不同的设置。
作者: lilei19733    时间: 2008-8-23 15:56:02     标题: 能不能加入开空仓的代码

这个交易指令测试下来,好象都是亏的。是不是没有加入做空的代码的原因?
作者: feng1234567    时间: 2008-9-4 14:23:34

走过,路过,学习过。
谢谢
作者: samwjwj    时间: 2008-10-1 16:31:52     标题: 文字表述的策略与实际代码似乎不一致

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做个详细的解释!!多谢!!!!
作者: samwjwj    时间: 2008-10-1 16:40:58     标题: 管理员是否可以画个逻辑树把这个交易系统表述清楚

管理员是否可以画个逻辑树把这个交易系统表述清楚,感谢!!
作者: pszzsp    时间: 2009-7-26 22:07:43     标题: 怎么学TB

我对TB和编程一点都不懂,想从头学TB把TB教程全下载打印了,可一点都看不懂,上面的字母公式不知道什么意思,比如变量每个都不一样,是不是变量的字母符号自已随便取的啊,还是固定的。有没好心大哥能帮我写一个学TB的教程要求每一步都要说明逐句逐行的解释清楚,就是从一无所知学起的资料,我也不是白要的啊,可付学费的,具体的可网上回复。
QQ:437382520
作者: xixi23242008    时间: 2009-8-26 19:23:14

这个例子中,如果这个BAR曾经达到0.382以下,但收盘又在0.382以上,会开仓吗?开仓的话,以什么价位开仓?
        }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);
                    }
这一段的意思,是不是只要价位一到0.382以下就开仓?
作者: lee_ustc    时间: 2009-9-2 18:31:00

很好的例子,我就从这个开始下手学习tradeblazer
作者: lee_ustc    时间: 2009-9-2 18:31:19

很好的例子,我就从这个开始下手学习tradeblazer
作者: lee_ustc    时间: 2009-9-2 18:31:55     标题: re

很好的例子,我就从这个开始下手学习tradeblazer
作者: lee_ustc    时间: 2009-9-2 18:34:50     标题: re

很好的例子,我就从这个开始下手学习tradeblazer
以前一直习惯用MT4,开始觉得这个tradeblazer有点不习惯
作者: tank    时间: 2009-9-9 00:23:21

sam 和xixi的问题怎么还没有答案啊?我也想知道
作者: scwb    时间: 2009-12-3 19:01:48

很好的例子,我就从这个开始下手学习tradeblazer
作者: linqian    时间: 2009-12-6 23:26:02

走过,路过,学习过。
谢谢
作者: sx810    时间: 2010-3-25 15:35:32

学习,TB真的很难。
作者: yyigg    时间: 2010-4-11 19:22:09

学习,TB真的很难,还不理人
作者: 侬智皋    时间: 2010-7-15 09:51:27

例子很好,但有些难看懂
作者: 侬智皋    时间: 2010-7-15 10:19:30

例子很好,但有些难看懂。
作者: xiaoyu0728    时间: 2010-7-30 12:37:49

不错,学习了,谢谢lz
作者: glsoul1026    时间: 2010-8-27 01:23:01

看不懂!
作者: logoslogos    时间: 2011-1-12 18:58:25

系统自动化,取钱ATM化。。。。。。。。。。梦的天堂
作者: 红永    时间: 2011-1-23 14:30:38

变量未定义
作者: zyloogle    时间: 2011-2-4 17:02:04

可以学学语法!
作者: shhrx    时间: 2011-3-9 17:33:44

谢谢nopain管理员提供的例子。
作者: outonyi    时间: 2011-4-19 06:24:52

拿分走人,
作者: zhoukaitang    时间: 2011-4-25 14:17:30

If(MarketPosition ==0 ) // 当前空仓  这个应该是持平吧
作者: temop3260    时间: 2011-5-22 22:36:27

一个商品,一个周期,多个系统
作者: yelvshu    时间: 2011-7-31 10:41:44

学习了!谢谢!
作者: lvshulinfeng    时间: 2011-8-1 14:05:01

管理员,把做空的那边顺势交易也一起编出来啊?现在只有做多的交易,没有做空的,不够完善。拿去测试还是比较不错的。
作者: lzl563    时间: 2011-8-10 12:51:38

做空是这样吗,但是我运行了,运行不了。。还是这个系统只适合做多啊

//------------------------------------------------------------------------
// 简称: huangji
// 名称: 顺势2
// 类别: 公式应用
// 类型: 用户应用
// 输出:
//------------------------------------------------------------------------

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 = ((open-LowestValue) / (highestValue - lowestValue) > TrailingSet )&& // 开盘价即满足回撤条件,用开盘价进行交易

            (Open < LowestValue +((highestValue - lowestValue)*StopLossSet)) ; //  开盘价不能低于预设的止损价                                                

            If( EntryCondition)

            {

                SellShort(1,Open);

            }Else // 再看其它价格是否满足

            {

                EntryCondition = (High - LowestValue) / (highestValue - lowestValue) > TrailingSet ; // 最低价满足回撤条件,用低于TrailingSet设置的最近价位建仓

                If(EntryCondition)

                {

                    myEntryPrice = lowestValue + (HighestValue - LowestValue ) * TrailingSet;

                    myEntryPrice = IntPart(myEntryPrice / (PriceScale()*MinMove)) *(PriceScale()*MinMove); // 对价格进行处理                                       

                    If(myEntryPrice >= low &&  myEntryPrice <= High)

                    {

                        SellShort(1,MyEntryPrice);

                    }

                }                        

            }

        }

    }
        else If(MarketPosition == -1) // 当前持空仓

    {

        ExitCondition = ( High - lowestValue )/(highestValue - lowestValue) > StopLossSet;        // 止损条件满足

        If(ExitCondition)

        {

            myExitPrice =  lowestValue +(HighestValue - LowestValue ) * StopLossSet;                        

            myExitPrice = IntPart(myExitPrice / (PriceScale()*MinMove)) *(PriceScale()*MinMove); // 对价格进行处理

          BuyToCover(CurrentContracts(),myExitPrice);

        }Else // 获利平仓

        {

            ExitCondition = (AvgEntryPrice() - low) > (highestValue - lowestValue); // 获利平仓条件满足

            If(ExitCondition)

            {

                myExitPrice =  AvgEntryPrice() - (HighestValue - LowestValue );                                

                myExitPrice = IntPart(myExitPrice / (PriceScale()*MinMove)) *(PriceScale()*MinMove); // 对价格进行处理

                If (myExitPrice >= low && myEntryPrice <= high)

                {

                    BuyToCover(CurrentContracts(),myExitPrice);

                }Else

                {

                    BuyToCover(CurrentContracts(),Close);

                }

            }

        }

    }
       
       
        end

//------------------------------------------------------------------------
// 编译版本        GS2010.12.08
// 用户版本        2011/08/10 11:23
// 版权所有        lzl563
// 更改声明        TradeBlazer Software保留对TradeBlazer平台
//                        每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
作者: lvshulinfeng    时间: 2011-8-17 11:27:47

回复 40# lzl563

我也是,编了好多系统都不出现信号的。要么就是出一次信号,不知道为何原因?
作者: badkingjy    时间: 2011-8-24 23:20:20

谢谢,学习了!
作者: livepu    时间: 2011-9-27 09:09:53

回复 40# lzl563


    哦也是做空条件不提示。
作者: 俯仰自得    时间: 2011-10-1 11:52:29

是学习的好范例,可是测试的效果并不好!是什么原因?思路的问题?
作者: livepu    时间: 2011-10-23 12:32:33

CurrentContracts
说明获得当前持仓的持仓合约数。
语法Numeric CurrentContracts()
参数
备注获得当前持仓的持仓合约数,返回值为整型。
只有当MarketPosition != 0时,即有持仓的状况下,该函数才有意义,否则返回0。
多头持仓返回正数,空头持仓返回负数。
示例当前空头持仓2手,CurrentContracts则返回-2。

原来这个函数的问题。简单修改成为空头顺势的时候,没注意这个返回的是负数,导致不能平仓。
直接buytocover(0,价格);更简洁。
作者: bahuang    时间: 2011-12-26 10:20:36

努力学习中,好多东西不明白
作者: livepu    时间: 2012-2-8 16:03:29

回复 1# nopain


    稍微改了一下条件,日线回测还挺好。不过市盘中价格的触发是有未来的。
  1. //------------------------------------------------------------------------
  2. // 简称: shunshi_B
  3. // 名称: 顺势_B
  4. // 类别: 公式应用
  5. // 类型: 用户应用
  6. // 输出:
  7. //------------------------------------------------------------------------

  8. Params
  9.     Numeric TrailingSet(0.30);       // 回撤开仓比例设置,从最高点下跌的比例
  10.     Numeric StopLossSet(0.42);        // 止损比例设置
  11.         Numeric lots(1);
  12. Vars
  13.     Bool startCondition(False);         // 启动条件
  14.     Bool EntryCondition(False);        // 开仓条件
  15.     Bool ExitCondition(False);          // 平仓条件
  16.     NumericSeries highestValue(0);  // 前2个周期的最高价
  17.     NumericSeries lowestValue(0);   // 前2个周期的最低价
  18.     Numeric myEntryPrice(0);          // 开仓价格
  19.     Numeric myExitPrice(0);            // 平仓价格        
  20. Begin
  21.         If(BarStatus==2 && high==low) return; //日线级别的回撤开仓,适合用这种过滤方法。
  22.         highestValue = max(high[2],high[1]);
  23.         lowestValue = min(low[2],low[1]);
  24.     If(MarketPosition ==0 ) // 当前空仓
  25.     {
  26.         If(Close[2]>Open[2] && Close[1] > Open[1] && Close[1] > Close[2])
  27.         {
  28.             startCondition = True;
  29.   //          highestValue = max(high[2],high[1]);
  30.   //          lowestValue = min(low[2],low[1]);
  31.         }
  32.         
  33.         If(startCondition)
  34.         {
  35.             EntryCondition = ((highestValue - Open) / (highestValue - lowestValue) > TrailingSet )&& // 开盘价即满足回撤条件,用开盘价进行交易
  36.             (Open > highestValue -((highestValue - lowestValue)*StopLossSet)) ; //  开盘价不能低于预设的止损价                                                
  37.             If( EntryCondition)
  38.             {
  39.                 Buy(lots,Open);
  40.             }Else // 再看其它价格是否满足
  41.             {
  42.                 EntryCondition = (highestValue - Low) / (highestValue - lowestValue) > TrailingSet ; // 最低价满足回撤条件,用低于TrailingSet设置的最近价位建仓
  43.                 If(EntryCondition)
  44.                 {
  45.                     myEntryPrice = highestValue - (HighestValue - LowestValue ) * TrailingSet;
  46.                     myEntryPrice = IntPart(myEntryPrice / (PriceScale()*MinMove)) *(PriceScale()*MinMove); // 对价格进行处理                                       
  47.                     If(myEntryPrice >= low &&  myEntryPrice <= High)
  48.                     {
  49.                         Buy(lots,MyEntryPrice);
  50.                     }
  51.                 }                        
  52.             }
  53.         }
  54.     }else If(MarketPosition == 1) // 当前多仓
  55.     {
  56.         ExitCondition = ( HighestValue - Low )/(highestValue - lowestValue) > StopLossSet;        // 止损条件满足
  57.         If(ExitCondition)
  58.         {
  59.             myExitPrice =  highestValue - (HighestValue - LowestValue ) * StopLossSet;                        
  60.             myExitPrice = IntPart(myExitPrice / (PriceScale()*MinMove)) *(PriceScale()*MinMove); // 对价格进行处理
  61.             Sell(CurrentContracts(),myExitPrice);
  62.         }Else // 获利平仓
  63.         {
  64.             ExitCondition = (high - AvgEntryPrice()) > (highestValue - lowestValue); // 获利平仓条件满足
  65.             If(ExitCondition)
  66.             {
  67.                 myExitPrice =  AvgEntryPrice() + (HighestValue - LowestValue );                                
  68.                 myExitPrice = IntPart(myExitPrice / (PriceScale()*MinMove)) *(PriceScale()*MinMove); // 对价格进行处理
  69.                 If (myExitPrice >= low && myEntryPrice <= high)
  70.                 {
  71.                                         Sell(lots,myExitPrice);
  72.                 }Else
  73.                 {
  74.                                         Sell(lots,Close);
  75.                 }
  76.             }
  77.         }
  78.     }
  79. End

  80. //------------------------------------------------------------------------
  81. // 编译版本        GS2010.12.08
  82. // 用户版本        2011/10/22 08:33
  83. // 版权所有        foodmax
  84. // 更改声明        TradeBlazer Software保留对TradeBlazer平台
  85. //                        每一版本的TrabeBlazer公式修改和重写的权利
  86. //------------------------------------------------------------------------
复制代码

作者: xiaoph001    时间: 2012-2-20 16:06:12

很好的例子,我就从这个开始下手学习tradeblazer  +1
作者: lnyuanming    时间: 2012-3-7 18:44:25

ding 顶························
作者: temop3260    时间: 2012-3-10 05:00:46

等有~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
作者: jk794309242    时间: 2012-3-27 10:13:43

学习啦!谢谢
作者: ggyyff    时间: 2012-4-12 16:05:22

ExitCondition = ( HighestValue - Low )/(highestValue - lowestValue) > StopLossSet;        // 止损条件满足

48.        If(ExitCondition)

49.        {

50.            myExitPrice =  highestValue - (HighestValue - LowestValue ) * StopLossSet;                  

这个止损有逻辑错误  low已经小于myexitprice 实际无法成交的
作者: 狙击手    时间: 2012-5-15 10:44:15

学习了
作者: lmjr    时间: 2012-5-17 09:14:22

刚从文华转过来学习TB,如此简单的思路竟然要写这么多语句,实在是有些畏惧。
作者: 还在路上    时间: 2012-6-14 15:43:17

学习中,每个人用同样的系统,得出的结果都不是完全一致的
作者: CenyLee    时间: 2012-7-12 09:54:42

,学习了。。

作者: 金牛创富程序化    时间: 2012-7-13 13:02:07

先学习一下再说
作者: 问石    时间: 2012-7-15 14:11:02

还看不懂。要学习啊。
作者: yhp2012    时间: 2012-11-27 18:50:01

学习了。。。。
作者: 九十九年    时间: 2012-12-8 23:04:24

好文,参考学习。
作者: 菲儿飞520    时间: 2012-12-9 21:03:55

顺势如果都不赚钱,那就是细节有错误。
作者: zcquan123    时间: 2012-12-22 02:05:44


作者: 天崖    时间: 2013-1-27 18:01:42


作者: 洋波浩渺    时间: 2013-2-3 22:40:20

W
作者: 洋波浩渺    时间: 2013-2-3 22:40:44

我喜欢C,学校里只学过C,我爱C
作者: 洋波浩渺    时间: 2013-2-3 22:46:29

for
while

作者: tw321    时间: 2013-3-14 10:04:42

学习
作者: yanghui001    时间: 2013-3-25 16:47:14

学习了,谢谢
作者: hepang    时间: 2013-4-13 15:32:16

52l楼观察很细 但计算机瞬间就发单了 正是TB软件的快速地方
作者: hepang    时间: 2013-4-13 15:32:33


作者: hepang    时间: 2013-4-13 15:32:39


作者: 1分钟k线图    时间: 2013-4-16 19:44:23

学习ing……
作者: 天诛地灭    时间: 2013-6-5 15:20:11


作者: lingl2    时间: 2013-7-3 17:59:18


作者: goodstudy    时间: 2013-7-4 16:09:19

学习学习。。
作者: lxin18    时间: 2013-7-22 15:46:24

学习了.
作者: zsh1206735353    时间: 2013-11-1 17:25:50

代码有逻辑问题。肯定会有一根棒上同时满足多个条件的情况。
作者: zsh1206735353    时间: 2013-11-1 17:27:44

而且还有开盘价直接低于止损点的问题也没处理。。。
作者: 神游金牛    时间: 2013-11-3 11:37:28

这种k线组合在k线图任意位置出现的概率都较大,入场没有任何优势,应加背景过滤
作者: 周基金    时间: 2013-11-12 15:24:14

以下程序不知何处有问题无法运行请指教?谢谢!
Params
   Numeric Closeprice;//收盘价
   Numeric Openprice;//开盘价
   Numeric Highprice;//最高价
   NumericSeries Lowprice;//最低价
   Numeric Lots(1);//交易手数
   Numeric Offset(0);//滑点数
   Numeric Stoplose(30);//止损点数
   Numeric Close(14.59);//进场时间限制
Vars
   
         NumericSeries Closeprice;//收盘价
         NumericSeries Openprice;//开盘价
         NumericSeries Highprice;//最高价
   NumericSeries Lowprice;//最低价
   NumericSeries Enterprice;//入场价格
   NumericSeries Stoploseprice;//止损价格
Begin
   //计算日内高低价
   If(CurrentBar==0 || Date!=Date[1]) //如果最新一根K线不是第一根
   {
     Highprice=High; //最近高价为最高价
         Lowprice=Low; //最近低价为最低价
   }
   Else//并且
   {
     Highprice=Max(High,Highprice[1]); //最新高价为近期最高价
         Lowprice=Min(Low,Lowprice[1]); //最新低价为近期最低价
   }

PlotNumeric("Highprice",Highprice); //输出阳K线到图表上
   PlotNumeric("Lowprice",Lowprice); //输出阴K线到图表上

If(MarketPosition==0) // 当前K线为最新K线并且没有任何持仓
   {
If(Time==Timelimit/100 && High>Close[1] && High>Close[2])//当收盘前1分钟市价大于前2日收盘价时
    Buy(Lots,Enterprice); // 固定数量无滑点平空开多单
   Stoploseprice=Open[1];//  以前开盘价止损并按30点移动止损
}
   And
{
If(Time==Timelimit/100 && Low<Close[1] && Low<Close[2]) //当收盘前1分钟市价小于前2日收盘价时
   SellShort(Lots,Enterprice);//  固定数量无滑点平多开空单
Stoploseprice=Open[1];  //   以前开盘价止损并按30点移动止损
}
Else if//并且如果
     If(MarketPosition==1 && BarsSinceEntry>0) //如果持有多仓并且是K线为最新
         {
If(High>Highprice[1] && Low>=Lowprice[1]) //当持有多仓时盘面市价突破前期高点
   Buy(Lots,Enterprice); //  固定数量加半仓无滑点平空开多单
      Stoploseprice=Open[1];// 持仓均价按30点移动止损
}
  And
    {
If(High>Stoploseprice) BuyToCover(0,Max(Open,Stoploseprice+Offset*MinMove*PriceScale));
         //  当持有多仓时盘面止损被触发
      SellShort(Lots,Enterprice);//固定数量反手无滑点平多开空单
     Stoploseprice=Open[1];  //  以前开盘价止损并按30点移动止损
}
Else//并且
    If(MarketPosition==-1 && BarsSinceEntry>0)//如果持有空仓并且是K线为最新
   {
   Enterprice=Min(Open,Low-Offset*MinMove*PriceScale);// 当持有空仓时盘面市价突破前期低点
     SellShort(Lots,Enterprice);// 固定数量加半仓无滑点平多开空单
       Stoploseprice=Open[1];  //持仓均价按30点移动止损
}
And
      {
If(High>Stoploseprice) BuyToCover(0,Max(Open,Stoploseprice+Offset*MinMove*PriceScale));
         //当持有空仓时盘面止损被触发
    Buy(Lots,Enterprice); // 固定数量反手无滑点平空开多单
     Stoploseprice=Open[1];// 以前开盘价止损并按30点移动止损
}
And
   { // 突破或止损后加仓与反手的持仓在第3日收盘价市价平仓
}
    Commentary("止损价:"+Text(Stoploseprice));  // 输出开平仓信号在图表上
End
//完成
作者: StanleyLiao    时间: 2014-9-11 21:38:15

ggyyff 发表于 2012-4-12 16:05
ExitCondition = ( HighestValue - Low )/(highestValue - lowestValue) > StopLossSet;        // 止损条 ...

这个止损有很严重的问题,exitprice永远>low,甚至有可能大于high,对于大于high的,TB也居然以high成交,这样未卜先知的方法当然能赚钱,只是假象的赚钱
作者: abiaoa    时间: 2014-10-13 21:45:13

学习了!!!
作者: gxu1981    时间: 2014-11-16 22:45:24

这个公式貌似有未来函数
仅仅也只能当做一个学习公式编写的例子来学习了
作者: pdkqh88    时间: 2015-1-6 16:57:36

回落幅度为什么选择0.382?能解释下么
作者: xiaohuohua    时间: 2015-5-10 15:46:39

学习
作者: haoliangkaifa    时间: 2015-8-14 16:44:23

一优化,就有个苍蝇落上去都打滑的曲线,肯定是假的了。
作者: fzzq71670238    时间: 2015-10-1 08:21:24

谢谢分享
作者: zhaohai9100    时间: 2016-3-13 09:04:18

花点时间学一下,总是有点用
作者: courage    时间: 2016-3-15 02:44:26

请问这个系统只能做多不能做空吗?
作者: liyiig    时间: 2016-5-20 23:20:08

看不到
作者: hhyyy99    时间: 2016-6-14 07:01:47

学习学习
作者: hhyyy99    时间: 2016-6-14 07:02:30

学习学习
作者: hhyyy99    时间: 2016-6-14 07:03:17

学习学习
作者: hhyyy99    时间: 2016-6-14 07:04:00

学习学习
作者: hhyyy99    时间: 2016-6-14 07:04:16

学习学习
作者: hhyyy99    时间: 2016-6-14 07:05:43

学习学习
作者: hhyyy99    时间: 2016-6-14 07:06:08

学习学习
作者: hhyyy99    时间: 2016-6-14 07:06:38

学习学习
作者: hhyyy99    时间: 2016-6-14 07:06:57

学习学习
作者: hhyyy99    时间: 2016-6-14 07:07:16

学习学习




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2