请版主老师帮忙看看问题何在 [开拓者 TB]
- 咨询内容:
本帖最后由 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均线,为什么没开多?
本人新人再次希望得到老师的帮助与提点
- TB技术人员:
本帖最后由 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);?
问题挺多的,没法改,修改的量和重新编码差不多,再仔细琢磨琢磨吧。 - TB客服:
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);?-------------这是从“交易策略进阶”中直接抄袭下来的
不过好像抄袭的出问题了,依旧不是很明白,问题出在了哪
- 网友回复:
文华的麦语言我也试过了,不过总觉得没有TB的适合个人,不过文华有人会出来帮大家解决问题,管理员们,我想你们上班一定也很辛苦,但好歹出来帮助一下像我这样不是非常精通TB的人,毕竟TB要做的更大更好,需要更多的人,金字塔没有了基层涨不高。我希望用TB做交易,为此做好了所有的准备,只差策略代码化,再次希望得到大家和管理员的帮助,谢谢
- 网友回复:
望老师指点
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 1145508240 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容