开拓者期货期权程序化系统交易论坛

标题: 版主帮我看看 [打印本页]

作者: xjy    时间: 2009-1-21 08:29:07     标题: 版主帮我看看

1.我想用5日上穿10日均线后的下一个K线开仓做多,然后止赢,如果止赢指令没成功,则在开仓后的下一个K线开仓价平仓。可是它在止赢不成功的情况下,不是在开仓后的下一个K线给我平仓,有时在开仓后的很多个K线后才平仓,怎么回事?请帮我看看哪里错了,帮我改改。
if(CROSSOVER(MA5,MA10))BUY(1,NEXTOPEN+2,TRUE);//MA5 5日均线,MA10 10日均线
setprofittarget(1,40,false);//获利就平仓
IF(CROSSOVER(MA5[2]>MA10[2]])&&MARKETPOSITION==1)SELL(1,OPEN-2,FALSE);
2.我导入新的数据存盘后,重新打开TB后,有时打开这个数据后TB就自动关闭,有时这个数据消失了,请问如何永久保存导入的数据?如何不让TB自动关闭?谢谢!
作者: nopain    时间: 2009-1-21 09:37:22

1、用BarsSinceEntry==1来判断平仓。
2、可能是导入商品属性设置不对,请仔细核对每个参数。
作者: xjy    时间: 2009-1-21 11:26:39

谢谢!
问题2:导入上证指数
下面的商品属性对吗?:小数位数2,报价精度0.01,最小变动0.01,每点价值1,交易单位10,保证金比率1
作者: nopain    时间: 2009-1-21 13:08:19

最小变动:1,交易单位:1
作者: xjy    时间: 2009-1-21 14:43:26

老师,商品属性按您的改过了,还是不行,刚刚打开软件想调入它,显示“无效的商品代码”,又消失了,怎么办?
作者: nopain    时间: 2009-1-21 15:01:49

我试过了,肯定可以的
[attach]1235[/attach]

数据格式如下:

2002/08/09,1658.44,1658.77,1642.77,1647.05,5503190,4940853248.000
2002/08/12,1642.48,1642.59,1633.09,1634.57,5140346,4434398208.000
2002/08/13,1633.68,1642.41,1633.55,1636.63,3718248,3234215424.000
2002/08/14,1636.89,1647.09,1635.29,1646.72,4120959,3194771968.000
2002/08/15,1646.62,1647.07,1632.13,1634.37,4488826,3395824128.000
2002/08/16,1632.96,1652.98,1624.05,1646.79,7805869,5575269888.000
2002/08/19,1645.93,1650.09,1641.40,1644.30,4212214,3579266048.000
作者: xjy    时间: 2009-1-21 22:42:35

谢谢老师!
还有一个问题:
crossover函数中的数据源1 可不可以写成high+minpoint(Minpoint=MinMove*PriceScale),象下面这样:
if(CrossOver((high+minpoint),MA5)//MA5,5日均线
...

if(CrossOver((high+minpoint),MA5)和if(high+minpoint-MA5>0)一样吗?
作者: xjy    时间: 2009-1-21 23:03:03

不好意思还有一个问题:
我想对同一个合约同时用不同的两个交易指令进行交易:这两个交易指令若同时调入一个超级图表中,执行效果不好,若一个超级图表只有一个交易指令执行效果还好。
我可不可以在TB中打开2个超级图表,两个图表都是同一个合约(周期也相同,月份也相同),但每一个图表调用不同的交易指令同时交易?谢谢!
作者: xjy    时间: 2009-1-22 08:15:21

另一个问题:
如果5日均线上穿10日均线,在下一个K线买入开仓,为什么这么写不行?
if(CrossOver(MA5[1],MA10[1]))buy;
作者: nopain    时间: 2009-1-22 08:45:39

原帖由 xjy 于 2009-1-21 22:42 发表
谢谢老师!
还有一个问题:
crossover函数中的数据源1 可不可以写成high+minpoint(Minpoint=MinMove*PriceScale),象下面这样:
if(CrossOver((high+minpoint),MA5)//MA5,5日均线
...

if(CrossOver((high+minpoint),MA5)和i ...


1、可以的

2、CrossOver 和 > 还是有一定的区别的,CrossOver还会判断之前一根Bar是否<
作者: nopain    时间: 2009-1-22 08:46:58

原帖由 xjy 于 2009-1-21 23:03 发表
不好意思还有一个问题:
我想对同一个合约同时用不同的两个交易指令进行交易:这两个交易指令若同时调入一个超级图表中,执行效果不好,若一个超级图表只有一个交易指令执行效果还好。
我可不可以在TB中打开2个超级图表,两个 ...


1、效果不好,是因为这两个交易指令本身不是一个整体。
2、可以分开两个图表使用。
作者: nopain    时间: 2009-1-22 08:49:09

原帖由 xjy 于 2009-1-22 08:15 发表
另一个问题:
如果5日均线上穿10日均线,在下一个K线买入开仓,为什么这么写不行?
if(CrossOver(MA5[1],MA10[1]))buy;


只有系统函数,比如Close才可以这么传入使用。

您可以换一种写法:先定义一个序列变量
BoolSeries MyCrossOverCon;

MyCrossOverCon = CrossOver(MA5,MA10);
If(MyCrossOverCon [1])
{
    Buy...
}
作者: xjy    时间: 2009-1-22 08:59:32

问题:if(CrossOver((high+minpoint),MA5)是否可以?
这个时候您可以用:
CrossUnderHor(MA5,high+minpoint);
不太懂,这里没有常量水平线啊?是两个随时都会变的量。
作者: nopain    时间: 2009-1-22 09:10:39

原帖由 xjy 于 2009-1-22 08:59 发表
问题:if(CrossOver((high+minpoint),MA5)是否可以?
这个时候您可以用:
CrossUnderHor(MA5,high+minpoint);
不太懂,这里没有常量水平线啊?是两个随时都会变的量。


上面看错了,以为是上穿一个常量。if(CrossOver((high+minpoint),MA5)是可以的。
作者: xjy    时间: 2009-1-23 15:33:20

老师:比如5日均线是一根曲线,如何求这根曲线的上升/下降的斜率或者说上升/下降的角度?
作者: xjy    时间: 2009-1-23 20:22:08

老师,我也是用CLOSE作为判断条件,因它时时变化,就出现反复开仓。
1.用A_Buyposition能解决一根K线反复开仓吗?
比如最大持仓1手:if(marketposition!=1&&A_Buyposition<1)buy;
这样行吗?
2.我把交易助手里面的最大持仓限制设为1,可是有时它在我有1手仓的时候还给我开仓。我又不想在信号出现后的下一个K线开仓,因为差一根K线有时就有很大差别呀?
3.用全局变量怎么解决反复开仓呀?老师给写一个公式吧!非常感谢!
作者: nopain    时间: 2009-1-27 10:19:17     标题: 回复 #16 xjy 的帖子

1、不能,建议不要用A函数。您可以选择延迟发送,或者改用High,Low.
2、你应该说的是交易设置里面的最大持仓吧,这也不行,这里的最大持仓是限制加仓,而不是来处理讯号消失的。
作者: xjy    时间: 2009-1-28 08:07:53

1.为什么不建议不要用A函数?A函数不能轻易用吗?问什么?
2.比如5日均线是一根曲线,如何求这根曲线的上升/下降的斜率或者说上升/下降的角度?
3.这样用全局变量能解决当前K线反复开仓吗?
SetGlobalVar(0,0);
If(CrossOver(MA5,MA10)&&MarketPosition==-1)
{ BuyToCover(1,NextOpen+minpoint,True);SetGlobalVar(0,GetGlobalVar(0)-1);}
   if(MA5<MA10&&MarketPosition!=-1&&GetGlobalVar(0)<1)
{SellShort(1,Open-Minpoint,False);SetGlobalVar(0,GetGlobalVar(0)+1);Return;}
作者: nopain    时间: 2009-1-28 10:19:21

1、有两个理由不建议用A函数,第一是不需要用,第二是太复杂不好用。
2、您说斜率和数学意义的斜率是两种概念,没法用同样的标准来定义。比较简单的方法就是求每根Bar的增/减值。

3、您还在纠结于这个问题,当一个信号不稳定的情况下,您首要的问题就是解决信号问题。对于这个问题不在回复,还有疑问请在论坛搜索。
作者: xjy    时间: 2009-1-28 14:02:30

1.既然如此,那为什么还要发明A函数呢?我永远都不能用A函数了?
3.我就是想在当一个信号不稳定的情况下,一根K线只开一次仓。我不想用延迟。您不回答就算了。




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2