设为首页收藏本站

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

如何修改止损语句(附源码)? [复制链接]

Rank: 4

精华
0
UID
71944
积分
376
帖子
76
主题
22
阅读权限
50
注册时间
2011-10-16
最后登录
2020-2-8
跳转到指定楼层
1#
发表于 2013-1-24 18:31:16 |只看该作者 |倒序浏览
为何止损语句不起作用呢?哪位大侠帮忙修改一下哦?

Params
   
        Numeric Length1(60);
        Numeric lots(1);
        Numeric offSetDots(0); // 委托偏移点数
               
Vars  
   
        NumericSeries ma60;
       
        Numeric stopLossPoint(200);//止损设置--亏200元就止损
        Numeric MyEntryPrice(0); // 开仓价
        Numeric MyExitPrice(0); // 平仓价
        Numeric AvgEntryPrice(0);
       
       
       
       

Begin
          
        ma60  = Average(Close,Length1);                //60日均线
               
        If(Close[1] > ma60[1])                         //如果Close价格在60线之上,将60线涂成红色,否则涂成绿色
       
           {PlotNumeric("Line",ma60,0,Red,0);}
   
        Else
       
            {PlotNumeric("Line",ma60,0,Green,0); }

       
       
       
        If(Open>ma60[1] && Low[1]>ma60[1] )
        {
            Buy(lots,open);
                AvgEntryPrice=open;
                }
   
        If(Open<ma60[1] &&  High[1]<ma60[1] )       
        {
            SellShort(lots,open);
                AvgEntryPrice=open;
                }
               
               
               
               
       
// 止损处理
        If(MarketPosition == 1)                         //若是多头持仓
        {
                myEntryPrice = AvgEntryPrice;                   //开仓价
               
                 If(low <= myEntryPrice - stopLossPoint)        //如果亏了200元
                {
                        myExitPrice = myEntryPrice - stopLossPoint;
                       
                        If(open < myExitPrice) myExitPrice = open;  // 如果该Bar开盘价有跳空,则以开盘价代替
                       
                            Sell(0,myExitPrice-offSetDots);         // 按委托偏移点数止损平多
                }
        }
       
        else If (MarketPosition == -1)                      //若是空头持仓
        {
                myEntryPrice = AvgEntryPrice;                   //开仓价
               
                 If(High >= myEntryPrice + stopLossPoint)       //如果亏了200元
                {
                        myExitPrice = myEntryPrice + stopLossPoint;
                       
                        If(open > myExitPrice) myExitPrice = open; // 如果该Bar开盘价有跳空,则以开盘价代替
                       
                        BuyToCover(0,myExitPrice+offSetDots);      // 按委托偏移点数止损平空
                }
        }
                               
               
                               
End
UFO程序化交易研究QQ群:22020802
自动化交易,摒弃人性弱点。

Rank: 3Rank: 3

精华
0
UID
116243
积分
152
帖子
129
主题
9
阅读权限
40
注册时间
2013-3-20
最后登录
2022-9-13
2#
发表于 2013-4-28 20:45:21 |只看该作者
我也想学习,楼主解决了吗?

使用道具 举报

Rank: 1

精华
0
UID
98411
积分
28
帖子
15
主题
1
阅读权限
10
注册时间
2012-2-18
最后登录
2013-8-1
3#
发表于 2013-4-29 01:32:23 |只看该作者
var 里面所有的变量用    NumericSerice 类型就好了

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
117953
积分
126
帖子
66
主题
10
阅读权限
40
注册时间
2013-4-10
最后登录
2016-4-22
4#
发表于 2013-5-7 15:15:29 |只看该作者
楼主解决了吗?我也在为止损的问题愁。

使用道具 举报

Rank: 1

精华
0
UID
118631
积分
45
帖子
20
主题
4
阅读权限
10
注册时间
2013-4-27
最后登录
2013-6-9
5#
发表于 2013-5-9 22:55:38 |只看该作者
不会,学习中

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
114376
积分
237
帖子
92
主题
28
阅读权限
40
注册时间
2012-12-25
最后登录
2017-10-12
6#
发表于 2013-9-5 09:15:25 |只看该作者
不知道LZ解决了没。。。不过你的语法是有问题的,
AvgEntryPrice=open;
是等记录下了开仓的点位。 Numeric stopLossPoint(200)是止损的点数意思是200个点才会止损而不是200块钱

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
126116
积分
180
帖子
133
主题
15
阅读权限
40
注册时间
2013-3-14
最后登录
2021-11-19
7#
发表于 2013-9-5 17:34:52 |只看该作者
搞了一周,止损函数还没搞出来。唉!

使用道具 举报

Rank: 1

精华
0
UID
151121
积分
5
帖子
5
主题
0
阅读权限
10
注册时间
2013-7-30
最后登录
2013-9-13
8#
发表于 2013-9-5 18:26:18 |只看该作者
If(Open>ma60[1] && Low[1]>ma60[1] )
         {
             Buy(lots,open);
                 AvgEntryPrice=open;
                 }
当上面的条件满足时AvgEntryPrice就刷新为新的open,可能不妥吧!

使用道具 举报

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

bottom

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

GMT+8, 2024-5-3 19:41

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部