设为首页收藏本站

 找回密码
 注册
楼主: yuezongqi
打印 上一主题 下一主题

学习TB编程,看看自己能够走多远 [复制链接]

Rank: 5Rank: 5

精华
0
UID
7286
积分
783
帖子
164
主题
39
阅读权限
60
注册时间
2010-3-11
最后登录
2019-3-30
11#
发表于 2011-7-12 07:52:00 |只看该作者
我的经验,一个交易系统中,绝大部分函数是用不着的,因此没必要先学函数,等用到了再上论坛问或查帮助完全来的及。
建议楼主不要从静态的函数学起,而要从交易系统学起:先建立自己交易系统,哪怕是最简单的均线系统,用模拟盘实盘,在实战中不断修改,同时借鉴论坛现有的代码,这样才能事半功倍,毕竟,我们的目的是实盘。

使用道具 举报

Rank: 4

精华
0
UID
35833
积分
389
帖子
80
主题
14
阅读权限
50
注册时间
2011-4-26
最后登录
2017-7-3
12#
发表于 2011-7-12 16:24:07 |只看该作者
误把LastEntryPrice 函数写成了EntryPrice,可见对某些函数还是不理解。没有想到止损也写错了。
昨天的程序经过完善改为:
Params
    Numeric Para1(10);
    Numeric StopLossSet(10);
Vars
    NumericSeries Ma1;
        Bool Condition1;
        Bool Condition2;
        Numeric MinPoint;
        Numeric MyEntryPrice;
       
Begin
        MinPoint=MinMove*PriceScale;
        MyEntryPrice=LastEntryPrice;
    Ma1=Average(Close,Para1);
        Condition1 = CrossOver(Close[1],Ma1[1]);
        Condition2 =CrossUnder(Close[1],Ma1[1]);
       
        If(Condition1 And MarketPosition!=1)
        {
           BuyToCover(1,open);
           Buy(1,Open);
        }
        If(Condition2 And MarketPosition!=-1)
        {
           Sell(1,Open);
           SellShort(1,open);
        }
        If(MarketPosition==1 And Close<=MyEntryPrice-StopLossSet*MinPoint)
        {
           Sell(1,Close);
           SellShort(1,Close);
        }
        If(MarketPosition==-1 And Close>=MyEntryPrice+StopLossSet*MinPoint)
        {
            BuyToCover(1,Close);
            Buy(1,Close);
        }
        //FileAppend("c:\\11.Log",Text(MyEntryPrice+StopLossSet*MinPoint));
End
但是此程序却有重复发单的现象,问了一下老师,老师说不能用Close判断,用Low,High就行了,不知道可不可以具体还需要等待明天来验证。
又问了一下朋友,朋友也说不能用Close来判断,我就纳闷了,为什么不能用Close 判断,用Low 和High 就行,Low和High再这根K 线没有走完也是不确定 的呀?

使用道具 举报

Rank: 4

精华
0
UID
35833
积分
389
帖子
80
主题
14
阅读权限
50
注册时间
2011-4-26
最后登录
2017-7-3
13#
发表于 2011-7-13 17:19:45 |只看该作者
公式如下:

Params
    Numeric Para1(10);
    Numeric StopLossSet(10);
Vars
    NumericSeries Ma1;
Bool Condition1;
Bool Condition2;
Numeric MinPoint;
Numeric MyEntryPrice;
Numeric MyExitPrice;

Begin
MinPoint=MinMove*PriceScale;
MyEntryPrice=LastEntryPrice;  //上次 的开仓价格
    Ma1=Average(Close,Para1);
Condition1 = CrossOver(Close[1],Ma1[1]);
Condition2 =CrossUnder(Close[1],Ma1[1]);
    if(MarketPosition==0)  //无持仓的情况
{
     if(Condition1)
  {
   Buy(1,Open);
  }else if(Condition2)
  {
      SellShort(1,Open);
  }
}else if(MarketPosition==-1)  //持空仓的情况
{
    if(Condition1)
    {
      BuyToCover(1,Open);
      Buy(1,Open);
      
    }else if(High >= MyEntryPrice + StopLossSet*MinPoint)// 止损条件表达式
    {
           MyExitPrice = MyEntryPrice + StopLossSet*MinPoint;
           If(Open > MyExitPrice)  MyExitPrice = Open;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
           BuyToCover(1,MyExitPrice);
     Buy(1,MyExitPrice);
    //FileAppend("c:\\11.Log",Text(Time)+"   "+Text(MyExitPrice));
        }

} Else if (MarketPosition==1)  //持多仓的情况下
{
     If(Condition2)
     {
   Sell(1,Open);
      SellShort(1,Open);
     }else if(Low <= MyEntryPrice - StopLossSet*MinPoint)// 止损条件表达式
        {
            MyExitPrice = MyEntryPrice - StopLossSet*MinPoint;
            If(Open < MyExitPrice) MyExitPrice = Open;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
            Sell(1,MyExitPrice);
   SellShort(1,MyExitPrice);
   //FileAppend("c:\\11.Log",Text(Time)+"   "+Text(MyExitPrice));
        }

}
End



但是有一个问题,就是在用一个Bar中开仓后,如果碰到止损点 应该如何实现止损?

使用道具 举报

Rank: 4

精华
0
UID
88963
积分
269
帖子
208
主题
16
阅读权限
50
注册时间
2011-12-25
最后登录
2022-12-9
14#
发表于 2012-8-20 21:02:03 |只看该作者

使用道具 举报

Rank: 4

精华
0
UID
35833
积分
389
帖子
80
主题
14
阅读权限
50
注册时间
2011-4-26
最后登录
2017-7-3
15#
发表于 2012-12-17 14:23:52 |只看该作者
以前学习还挺认真。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-10 06:51

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部