设为首页收藏本站

 找回密码
 注册
查看: 11557|回复: 13
打印 上一主题 下一主题

分享一个止盈止损的模版... [复制链接]

Rank: 5Rank: 5

精华
0
UID
4740
积分
1247
帖子
251
主题
9
阅读权限
60
注册时间
2009-6-29
最后登录
2019-3-30
跳转到指定楼层
1#
发表于 2010-8-9 14:14:19 |只看该作者 |倒序浏览
我目前在用的方法。为促进交流,现在跟大家分享~欢迎交流!
有什么疑问欢迎指出。

//------------------------------------------------------------------------
// 简称: AO
// 名称: 日内止盈止损系统模版
// 类别: 交易指令
// 类型: 其他
// 输出:
//------------------------------------------------------------------------

Params
    Numeric MyZhiSun(0);//止盈止损开关,1为开,其它为关
    Numeric MyJumpScale(1);//每个BAR止线浮动幅度,1为1跳。即,每走完一个BAR,止损线会相应的抬高(多单时)或者降低(空单时)一跳
    Numeric ExitOnCloseMins(14.55);//14:55分请仓。
    Numeric MyStopLoss(5);//默认5跳止损
    Numeric Lots(1); //开仓手数
Vars
    NumericSeries MyPositionH(0); //做空时的止损线
    NumericSeries MyPositionL(0); //做多时的止损线
Begin

    If(Date!=Date[1])
    {
        MyPositionH = 0; //每天第一个BAR清零
        MyPositionL = 0;
    }Else
    {
        MyPositionH = MyPositionH[1]; //止损线得以延续
        MyPositionL = MyPositionL[1];
    }

if(MyZhiSun == 1 && MarketPosition != 0) //止盈止损
{
  if(MarketPosition==1 && Open < MyPositionL && MyPositionL != 0)
  {
        MyPrice = MyPositionL - MinMove; //保证测试准确,放弃一跳.
        if(BarStatus==2)//做多止损
        {
            Sell(A_BuyPosition,Q_Last);
        }Else
        {
            Sell(Lots,MyPrice);
        }
        Commentary("Open < MyPositionL " + Text(MyPositionL));
        MyPositionL = 0;
        Return;
    if(MyPositionL < HighD(0))MyPositionL = MyPositionL + MyJumpScale*MinMove;//浮动抬高
  }
  if(MarketPosition==-1 && Open > MyPositionH && MyPositionH != 0)
  {
        MyPrice = MyPositionH + MinMove;//保证测试准确,放弃一跳.
        if(BarStatus==2)//做空止损
        {
            BuyToCover(A_SellPosition,Q_Last);
        }Else
        {
            BuyToCover(Lots,MyPrice);
        }
        Commentary("Open > MyPositionH " + Text(MyPositionH));
        MyPositionH = 0;
        Return;
    if(MyPositionH > LowD(0))MyPositionH = MyPositionH - MyJumpScale*MinMove;//浮动降低
  }
    if(MyZhiSun == 1)Commentary("止盈启动!");
}

Commentary("MyPositionH == "+Text(MyPositionH));
Commentary("MyPositionL == "+Text(MyPositionL));

// 下面是开仓代码
    If(开多条件)
    {
        MyPrice = 开多价格;
        If(Open > MyPrice) MyPrice = Open;
        if(MyPrice > High)MyPrice = High;
        if(BarStatus==2)
        {
            Buy(Lots,Q_Last);
        }Else
        {
            Buy(Lots,MyPrice);
        }
        MyPositionH = 0;
        MyPositionL = MyPrice - MyStopLoss*MinMove;//开仓时设定止损线,以跳为单位
        Return;
    }

    If(开空条件)
    {
        MyPrice = 开空价格;
        If(Open < MyPrice) MyPrice = Open;
        if(MyPrice < Low)MyPrice = Low;
        if(BarStatus==2)
        {
            SellShort(Lots,Q_Last);
        }Else
        {
            SellShort(Lots,MyPrice);
        }
        MyPositionL = 0;
        MyPositionH = MyPrice + MyStopLoss*MinMove;//开仓时设定止损线,以跳为单位
        Return;
    }
    // 收盘平仓,实际执行代码
    If(BarStatus==2 And CurrentTime>=ExitOnCloseMins/100 And MarketPosition!=0)
    {
        If(A_BuyPosition>0)
        {
            Sell(A_BuyPosition,Q_Last);
        }
        If(A_SellPosition>0)
        {
            BuyToCover(A_SellPosition,Q_Last);
        }
    }
    //保证收盘平仓信号的准确
    If(Time >=ExitOnCloseMins/100 And BarStatus!=2 And MarketPosition!=0)
    {
        Sell(Lots,Open-MinMove);
        BuyToCover(Lots,Open+MinMove);
    }

End

//------------------------------------------------------------------------
// 编译版本    GS2004.06.12
// 用户版本    2009/10/31 01:03
// 版权所有    na
// 更改声明    TradeBlazer Software保留对TradeBlazer平台
//            每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------

Rank: 4

精华
0
UID
6061
积分
383
帖子
100
主题
17
阅读权限
50
注册时间
2009-12-4
最后登录
2019-3-30
2#
发表于 2010-8-10 10:18:19 |只看该作者
GOOD!         
跳出市场看市场!

使用道具 举报

Rank: 4

精华
0
UID
14533
积分
403
帖子
73
主题
7
阅读权限
50
注册时间
2010-7-18
最后登录
2017-11-2
3#
发表于 2010-8-10 21:05:47 |只看该作者
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 4

精华
0
UID
14533
积分
403
帖子
73
主题
7
阅读权限
50
注册时间
2010-7-18
最后登录
2017-11-2
4#
发表于 2010-8-10 21:09:28 |只看该作者
通不过呀!怎办?

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
1041
积分
1642
帖子
448
主题
133
阅读权限
70
注册时间
2008-1-9
最后登录
2016-12-26
5#
发表于 2010-8-11 20:56:11 |只看该作者
非常感谢分享

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
4740
积分
1247
帖子
251
主题
9
阅读权限
60
注册时间
2009-6-29
最后登录
2019-3-30
6#
发表于 2010-8-12 08:59:34 |只看该作者
本帖最后由 aocool 于 2010-8-12 09:01 编辑
3767
ww123 发表于 2010-8-10 21:05


这只是个模板,分享一下实现方法。直接复制编译是不行的。
    If(开多条件)
    {
        MyPrice = 开多价格; 像这里的条件和价格要改成自己系统的。。

使用道具 举报

Rank: 4

精华
0
UID
14998
积分
400
帖子
65
主题
10
阅读权限
50
注册时间
2010-7-31
最后登录
2011-5-26
7#
发表于 2010-8-20 13:37:30 |只看该作者
学习了,感谢分享,不过还得消化一下
丰富

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
24835
积分
910
帖子
94
主题
6
阅读权限
60
注册时间
2011-1-25
最后登录
2022-2-24
8#
发表于 2011-2-2 15:54:09 |只看该作者
你这程序应该有问题,看不明太明白
     MyPositionL = 0;
        Return;
两个return有问题,然后是前一句,和后面的开仓部份不一样.不知是否有更新?

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
30159
积分
1116
帖子
280
主题
23
阅读权限
60
注册时间
2011-3-23
最后登录
2019-3-21
9#
发表于 2011-8-2 10:15:50 |只看该作者
if(MarketPosition==-1 && Open > MyPositionH && MyPositionH != 0)
  {
        MyPrice = MyPositionH + MinMove;//保证测试准确,放弃一跳.
        if(BarStatus==2)//做空止损
        {
            BuyToCover(A_SellPosition,Q_Last);
        }Else
        {
            BuyToCover(Lots,MyPrice);
        }
        Commentary("Open > MyPositionH " + Text(MyPositionH));
        MyPositionH = 0;
        Return;
    if(MyPositionH > LowD(0))MyPositionH = MyPositionH - MyJumpScale*MinMove;//浮动降低
  }


  
持仓时的止损价值的浮动不应该放在止损平仓的条件下吧,止损后MyPositionL = 0;   Return;
持仓时 if(MyPositionL < HighD(0))MyPositionL = MyPositionL + MyJumpScale*MinMove;//浮动抬高,

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
15265
积分
174
帖子
39
主题
4
阅读权限
40
注册时间
2010-8-18
最后登录
2016-1-30
10#
发表于 2011-11-20 07:45:55 |只看该作者
很全面的止损,谢谢分享。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-20 20:35

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部