设为首页收藏本站

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

请版主老师帮忙看看问题何在 [复制链接]

Rank: 1

精华
0
UID
175723
积分
48
帖子
26
主题
8
阅读权限
10
注册时间
2013-11-15
最后登录
2015-4-16
跳转到指定楼层
1#
发表于 2013-12-4 19:25:06 |只看该作者 |倒序浏览
本帖最后由 torowills 于 2013-12-5 18:53 编辑

Params
BOOL lastprofitabletradefilter(True);

Vars
NumericSeries ma1;
NumericSeries ma2;
boolSeries lastbuy(false);
boolSeries lastsell(false);
NumericSeries takeprofitset(10);
Numeric myentryprice;
Numeric myexitprice;
Numeric minpoint;


Begin
If(barstatus==0)
{
lastbuy=true;
lastsell=true;
}
Commentary("lastbuy="+iifstring(lastbuy,"true","False"));
Commentary("lastsell="+iifstring(lastsell,"true","False"));
minpoint=MinMove*PriceScale;

ma1=AverageFC(close,5);
PlotNumeric("MA1",ma1);
ma2=AverageFC(close,10);
PlotNumeric("MA2",ma2);


If(marketposition==0)
   {      If(CrossOver(ma1[1],ma2[1])  && ((!lastprofitabletradefilter)or(lastbuy)))
                        {Buy(1,open);
                        lastbuy=False;
                        lastsell=true;
                        MyEntryPrice=open;}
                if(crossunder(ma1[1],ma2[1])  && ((!lastprofitabletradefilter)or(lastsell)))
                    {SellShort(1,open);
                        lastsell=false;
                        lastbuy=True;
                        MyEntryPrice=open;}
        }

if(marketposition==1)
     { if(high>=myentryprice+TakeProfitSet*minpoint)
                {     myexitprice=myentryprice+TakeProfitSet*minpoint;
                        If(Open > MyExitPrice)
            {MyExitPrice = Open;                       
            Sell(0,MyExitPrice);
                        lastbuy=False;
                        lastsell=true;}
                        }else
                 {
                                                         if(CrossUnder(ma1[1],ma2[1]))
                                                         {Sell(0,open);       
                                                          lastbuy=False;
                                          lastsell=true;}
                              
                 }
}
else if(marketposition==-1 )
    {  If(Low <= MyEntryPrice - TakeProfitSet*MinPoint)   
        {   MyExitPrice = MyEntryPrice - TakeProfitSet*MinPoint;
            If(Open < MyExitPrice)
            {MyExitPrice = Open;                       
            BuyToCover(0,MyExitPrice);
                        lastsell=false;
                        lastbuy=True;}
                }else
                        {
                                         if(CrossOver(ma1[1],ma2[1]))         
                                         {BuyToCover(0,open);
                                          lastsell=false;
                                  lastbuy=True;}
             }        
    }
End
希望达到的效果是,5分钟K线情况下,
5均线上穿10均线,开多,10跳止盈,(开仓后若下穿止损)。不管是止盈还是止损,不再开多,坐等开空
5均线下穿10均线,开空,10跳止盈,(开仓后若上穿止损)。不管是止盈还是止损,不再开空,坐等开多


请老师帮忙看看这模型编写上有没有什么问题,个人发现的问题如下,请老师帮忙修改
存在几个问题:
1,编译的时候跳出来4个逻辑错误,
2,回溯:举了能看得见的例子IF1312,12月3号15.00开空,为什么在9.15分满足了10跳的利润,为什么它没止盈,反而到了9.35去止损了?
3,  回溯:举了能看得见的例子IF1312,  12月4号9.35 明显5均线上穿10均线,为什么没开多?


本人新人再次希望得到老师的帮助与提点

Rank: 1

精华
0
UID
139780
积分
6
帖子
3
主题
1
阅读权限
10
注册时间
2012-3-28
最后登录
2013-12-11
2#
发表于 2013-12-5 16:31:18 |只看该作者
本帖最后由 jerrywind 于 2013-12-5 16:39 编辑

1,编译的时候跳出来4个逻辑错误
>>>>>这个只是警告信息,不是错误信息,可以忽略;

if(high>=myentryprice+TakeProfitSet*minpoint)
>>>>>myentryprice<-该变量在没有被赋值的情况下就被使用了,即该值为0,所以似乎止盈的情况从未被触发;做空时也是一样的;

lastbuy和lastsell
>>>>>这两个变量声明成了数组,就是说在开仓后想保存是否可以再开多或者空的标志(想用在 不管是止盈还是止损,不再开多/空,坐等开空/多),但是并没有被用到过,例如lastbuy[1];所以这两个变量根本没有起到数组的作用;
是想表达如下的意思吗?

/*lastbuy=True;
lastsell=true;
*/

if (not (lastbuy || lastsell)) {//说明之前还从没有产生过开仓信号
        lastbuy=True;
        lastsell=true;
} else {
        lastbuy=lastbuy[1];
        lastsell=lastsell[1];
}



NumericSeries takeprofitset(10);
>>>>> 声明这个数组变量的意思是?是否是想声明一个代表10个跳的变量?-----> Numeric takeprofitset(10);

问题挺多的,没法改,修改的量和重新编码差不多,再仔细琢磨琢磨吧。

使用道具 举报

Rank: 1

精华
0
UID
175723
积分
48
帖子
26
主题
8
阅读权限
10
注册时间
2013-11-15
最后登录
2015-4-16
3#
发表于 2013-12-5 17:22:23 |只看该作者
if(high>=myentryprice+TakeProfitSet*minpoint)
>>>>>myentryprice<-该变量在没有被赋值的情况下就被使用了,即该值为0,所以似乎止盈的情况从未被触发;做空时也是一样的;-------------原文中的表达已经做了修正,确实漏了


lastbuy和lastsell  抄袭了海龟中的 :
boolseries prebreakoutlaiure(false)    以及长周期的开仓  if(marketposion==0  && ((lastprofitabletradefilter)or (prebreakoutfailure)))
希望在lastbuy在等于true的时候才去开多。

NumericSeries takeprofitset(10);
>>>>> 声明这个数组变量的意思是?是否是想声明一个代表10个跳的变量?-----> Numeric takeprofitset(10);?-------------这是从“交易策略进阶”中直接抄袭下来的

不过好像抄袭的出问题了,依旧不是很明白,问题出在了哪



使用道具 举报

Rank: 1

精华
0
UID
175723
积分
48
帖子
26
主题
8
阅读权限
10
注册时间
2013-11-15
最后登录
2015-4-16
4#
发表于 2013-12-5 17:33:39 |只看该作者
文华的麦语言我也试过了,不过总觉得没有TB的适合个人,不过文华有人会出来帮大家解决问题,管理员们,我想你们上班一定也很辛苦,但好歹出来帮助一下像我这样不是非常精通TB的人,毕竟TB要做的更大更好,需要更多的人,金字塔没有了基层涨不高。我希望用TB做交易,为此做好了所有的准备,只差策略代码化,再次希望得到大家和管理员的帮助,谢谢

使用道具 举报

Rank: 1

精华
0
UID
175723
积分
48
帖子
26
主题
8
阅读权限
10
注册时间
2013-11-15
最后登录
2015-4-16
5#
发表于 2013-12-6 17:13:35 |只看该作者
望老师指点

使用道具 举报

Rank: 1

精华
0
UID
175723
积分
48
帖子
26
主题
8
阅读权限
10
注册时间
2013-11-15
最后登录
2015-4-16
6#
发表于 2013-12-10 14:36:01 |只看该作者
老师求助

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
38411
积分
669
帖子
160
主题
17
阅读权限
60
注册时间
2011-5-8
最后登录
2023-10-4
7#
发表于 2013-12-11 07:12:20 |只看该作者
这里要自立更生.如果你是日内模型
开头的初始化
可以这样
If(DATE!=DAT1E[1])
{
lastbuy=true;
lastsell=true;
}ELSE
{
lastbuy=lastbuy[1];
lastsell=lastsell[1];
}
这样才能传递;
还有!lastprofitabletradefilter是什么情况没定义呀,你默认的一直是TRUE,这样也不会有信号
再弱弱的问一声,这样的系统能挣钱吗?

使用道具 举报

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

bottom

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

GMT+8, 2024-5-24 12:07

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部