设为首页收藏本站

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

程序源码,大家看看问题再哪里?止损执行的有问题啊! [复制链接]

Rank: 3Rank: 3

精华
0
UID
95458
积分
129
帖子
43
主题
9
阅读权限
40
注册时间
2012-2-4
最后登录
2014-4-21
跳转到指定楼层
1#
发表于 2012-7-15 13:51:00 |只看该作者 |倒序浏览
Params
    Numeric EntryStop(0.5);
    Numeric stop(0.5);
    Numeric malen(60);
Vars
    Numeric ma;
        Numeric EntryPrice1;
        Numeric MyExitPrice;
        NumericSeries HighestAfterEntry;        
    NumericSeries LowestAfterEntry;
       
Begin
ma = Average(Close,malen);
PlotNumeric("ma",ma);
If(BarsSinceentry == 0)
    {
        HighestAfterEntry = Close;
        LowestAfterEntry = Close;
        If(MarketPosition <> 0)
        {
            HighestAfterEntry = Max(HighestAfterEntry,AvgEntryPrice);   
            LowestAfterEntry = Min(LowestAfterEntry,AvgEntryPrice);   
        }
    }
        else
    {
        HighestAfterEntry = Max(HighestAfterEntry,High);
        LowestAfterEntry = Min(LowestAfterEntry,Low);   
    }

    Commentary("HighestAfterEntry="+Text(HighestAfterEntry));
    Commentary("LowestAfterEntry="+Text(LowestAfterEntry));

if(CurrentBar > malen)
{
        if(MarketPosition == 0)
        {
               if(Open >= ma)
                {
                      if(high/open >= 1+EntryStop/100)
                       {
                               EntryPrice1=open*(1+EntryStop/100);
                                                           Buy(1,EntryPrice1);
                               Return;
                       }
               }
                Else
                {
                        if(low/open <= 1-EntryStop/100)
                       {
                               EntryPrice1=open*(1-EntryStop/100);
                                                           SellShort(1,EntryPrice1);
                               Return;
                        }
                }
        }

        if(MarketPosition == 1)
        {
              if(low/open <= 1-stop/100 )
             {
                       sell(1,open*(1-stop/100));
                      Return;
              }
                           if(LowestAfterEntry<=EntryPrice1/(1+EntryStop/100))
                           {
                                MyExitPrice=EntryPrice1/(1+EntryStop/100);
                                MyExitPrice=IntPart(MyExitPrice/MinMove*PriceScale)*MinMove*PriceScale;
                                if(Open<MyExitPrice) MyExitPrice=Open;
                                Sell(0,MyExitPrice);
                                Return;
                           }
        }
               

        if(MarketPosition == -1)
        {
               if(High/open >= 1+stop/100 )
              {
                      BuyToCover(1,open*(1+stop/100));
                      Return;
               }
                                if(High>=EntryPrice1/(1-EntryStop/100))
                                {
                                MyExitPrice=EntryPrice1/(1-EntryStop/100);
                                MyExitPrice=IntPart(MyExitPrice/MinMove*PriceScale)*MinMove*PriceScale;
                                if(Open>MyExitPrice) MyExitPrice=Open;
                                BuyToCover(0,MyExitPrice);
                                Return;
                                }
                }
}

End

Rank: 1

精华
0
UID
111510
积分
33
帖子
8
主题
2
阅读权限
10
注册时间
2012-7-15
最后登录
2012-7-15
2#
发表于 2012-7-15 15:29:36 |只看该作者
看得头晕。

使用道具 举报

Rank: 1

精华
0
UID
109340
积分
15
帖子
3
主题
2
阅读权限
10
注册时间
2012-4-11
最后登录
2012-7-15
3#
发表于 2012-7-15 16:50:56 |只看该作者
下单部分条件包含未来函数,tb机制没搞清楚。

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
42516
积分
1239
帖子
264
主题
31
阅读权限
60
注册时间
2011-5-25
最后登录
2014-9-23
4#
发表于 2012-7-15 18:40:21 |只看该作者
止损应该没有问题,问题在于止盈!

这里的 if(LowestAfterEntry<=EntryPrice1/(1+EntryStop/100))

与这里的  if(High>=EntryPrice1/(1-EntryStop/100))  应该对应,但没有对应起来   High处应该是HighestAfterEntry      同时希望你把遇到的问题描述得更清楚一些

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
95458
积分
129
帖子
43
主题
9
阅读权限
40
注册时间
2012-2-4
最后登录
2014-4-21
5#
发表于 2012-7-16 09:25:27 |只看该作者
rookies 发表于 2012-7-15 18:40
止损应该没有问题,问题在于止盈!

这里的 if(LowestAfterEntry=EntryPrice1/(1-EntryStop/100))  应该对 ...

这个程序里面止损分两种,第一种就是:
if(low/open <= 1-stop/100 )
             {
                       sell(1,open*(1-stop/100));
                      Return;
              },即如果持有多单,后面的BAR如果满足这个条件,多单平仓。
第二种:
if(LowestAfterEntry<=EntryPrice1/(1+EntryStop/100))
                           {
                                MyExitPrice=EntryPrice1/(1+EntryStop/100);
                                MyExitPrice=IntPart(MyExitPrice/MinMove*PriceScale)*MinMove*PriceScale;
                                if(Open<MyExitPrice) MyExitPrice=Open;
                                Sell(0,MyExitPrice);
                                Return;
                           }
即开仓后的最低价,如果跌破开仓BAR的开盘价,则多单平仓离场。
问题是第二种平仓没有出现平仓信号啊。恳请老大指点。

使用道具 举报

初级大户

酱油

Rank: 5Rank: 5

精华
0
UID
37561
积分
1108
帖子
395
主题
9
阅读权限
60
注册时间
2011-5-4
最后登录
2014-11-3
6#
发表于 2012-7-16 10:44:01 |只看该作者
zbh0912 发表于 2012-7-16 09:25
这个程序里面止损分两种,第一种就是:
if(low/open

rookies 大神都说了,空仓第二种止损的High应该是HighAfterEntry,LZ不知道你具体发现了没。。

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
95458
积分
129
帖子
43
主题
9
阅读权限
40
注册时间
2012-2-4
最后登录
2014-4-21
7#
发表于 2012-7-16 12:21:59 |只看该作者
alex647l 发表于 2012-7-16 10:44
rookies 大神都说了,空仓第二种止损的High应该是HighAfterEntry,LZ不知道你具体发现了没。。 ...

这个我已经改过来了 谢谢

使用道具 举报

初级大户

酱油

Rank: 5Rank: 5

精华
0
UID
37561
积分
1108
帖子
395
主题
9
阅读权限
60
注册时间
2011-5-4
最后登录
2014-11-3
8#
发表于 2012-7-16 13:27:27 |只看该作者
zbh0912 发表于 2012-7-16 12:21
这个我已经改过来了 谢谢

EntryPrice1这个不是序列变量,每次运算都默认为0,不好意思之前的回复自己没有仔细看

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
42516
积分
1239
帖子
264
主题
31
阅读权限
60
注册时间
2011-5-25
最后登录
2014-9-23
9#
发表于 2012-7-17 09:53:18 |只看该作者
alex647l 发表于 2012-7-16 13:27
EntryPrice1这个不是序列变量,每次运算都默认为0,不好意思之前的回复自己没有仔细看 ...

呵呵,一语见地

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
95458
积分
129
帖子
43
主题
9
阅读权限
40
注册时间
2012-2-4
最后登录
2014-4-21
10#
发表于 2012-7-17 12:49:24 |只看该作者
alex647l 发表于 2012-7-16 13:27
EntryPrice1这个不是序列变量,每次运算都默认为0,不好意思之前的回复自己没有仔细看 ...

果然是高手,感谢!

使用道具 举报

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

bottom

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

GMT+8, 2024-5-13 09:18

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部