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

标题: 请教!! [打印本页]

作者: jeckforlete    时间: 2007-9-22 13:41:43     标题: 请教!!

我想把四周规则改成按16天最高最低价入市,按4天最高最低离市,可是写了代码显示全乱了,请老大们能帮忙看看好吗?



Params
        Numeric Length1(12);
        Numeric Length2(4);
Vars
        Bool Condition11;
        Bool Condition12;
        Bool Condition21;
        Bool Condition22;
        NumericSeries HighestValue1;
        NumericSeries LowestValue1;
        NumericSeries HighestValue2;
        NumericSeries LowestValue2;
Begin
        HighestValue1 = Highest(Close[1],Length1);
        HighestValue2 = Highest(Close[1],Length2);
        LowestValue1 = Lowest(Close[1],Length1);
        LowestValue2 = Lowest(Close[1],Length2);
       
        Condition11 = Close>HighestValue1;
        Condition12 = LowestValue1>Close;
        Condition21 = Close>HighestValue2;
        Condition22 = LowestValue2>Close;
       
        if (Condition11)
        {
                Buy(1,0);
       
        }
       
        if (Condition22)
        {
                Sell(1,0);
       
        }
       
        if (Condition12)
        {
                SellShort(1,0);
        }
                if (Condition21)
        {
                BuyToCover(1,0);
        }
End
作者: jeckforlete    时间: 2007-9-22 13:51:43

我知道哪里错了,粗心啊
作者: nopain    时间: 2007-9-22 13:57:08


作者: jeckforlete    时间: 2007-9-22 14:33:03

老大,海龟系统那个程序我有个地方没看明白
长周期和短周期之间好像没有关系吧,只是有的人用长周期,有的人用短周期,是这个意思吗?
两个周期的退出的length都是取10吗?
两个周期一混我有点晕,麻烦给讲解下好吗?
作者: nopain    时间: 2007-9-22 16:03:04

原帖由 jeckforlete 于 2007-9-22 14:33 发表
老大,海龟系统那个程序我有个地方没看明白
长周期和短周期之间好像没有关系吧,只是有的人用长周期,有的人用短周期,是这个意思吗?
两个周期的退出的length都是取10吗?
两个周期一混我有点晕,麻烦给讲解下好吗? ...


然而,如果系统一的入市突破由于以前的交易已经取得赢利而被忽略,还可以在 55日突破时入市,以避免错过主要的波动。这种55日突破被视为自动保险突破点(Failsafe Breakout point)。

意思是55日是作为一个补充讯号,当20日的突破讯号因为过滤条件被忽略掉之后,可以采取55日突破讯号
作者: jeckforlete    时间: 2007-9-22 16:17:41

老大,我写的海龟系统,怎么不能加仓啊?您帮忙看看?



Params
        Numeric Length1(15);
        Numeric Length2(10);
        Numeric RiskRatio(1);
        Numeric ATRLength(20);


Vars
        Numeric ATR;
        Bool Condition11;
        Bool Condition12;
        Bool Condition21;
        Bool Condition22;
        NumericSeries HighestValue1;
        NumericSeries LowestValue1;
        NumericSeries HighestValue2;
        NumericSeries LowestValue2;
        Numeric TotalEquity;
        Numeric Position;  
            Numeric preEntryPrice;
        Numeric preBreakoutType(0);
            Numeric preBreakOutPrice;  
            Numeric prePosition;
        Numeric myEntryPrice;






Begin
        HighestValue1 = Highest(Close[1],Length1);
        HighestValue2 = Highest(Close[1],Length2);
        LowestValue1 = Lowest(Close[1],Length1);
        LowestValue2 = Lowest(Close[1],Length2);
       


        ATR = AverageFC(TrueRange,ATRLength);
        TotalEquity = CurrentCapital()+ Abs(CurrentContracts()*Close*ContractUnit()*BigPointValue()*MarginRatio());
            Position = (TotalEquity*RiskRatio/100) /(ATR * ContractUnit()*BigPointValue());
            Position = IntPart(position);
        Condition11 = Close>HighestValue1;
        Condition12 = LowestValue1>Close;
        Condition21 = Close>HighestValue2;
        Condition22 = LowestValue2>Close;

        If(BarStatus == 0)
        {
                SetGlobalVar(0,InvalidNumeric);
                SetGlobalVar(1,0);
                SetGlobalVar(2,InvalidNumeric);               
        }Else
        {
                preBreakoutType = GetGlobalVar(1);
                preBreakOutPrice = GetGlobalVar(2);
                myEntryPrice=GetGlobalVar(0);

        }



       
        if (MarketPosition == 0)
        {
                if (Condition11)
                   {Buy(Position,0);SetGlobalVar(0,close);}

                if (Condition12)
                   {SellShort(Position,0);SetGlobalVar(0,close); }

        }
       
        if (MarketPosition == 1)
        {
                if (Condition22||(Close <= MyEntryPrice - 2 * ATR))              {Sell(0,0);}
                  else
                        if (Close >= myEntryPrice + 0.5 * ATR && Position>= 1&& CurrentContracts<4*Position)
                                {buy(Position,0);myEntryPrice = close;}


                }
       

        if (MarketPosition ==-1)
        {       
                if (Condition21||(Close >= MyEntryPrice + 2 * ATR))              {BuyToCover(0,0);}
                  else
                        if (Close <= myEntryPrice - 0.5 * ATR && Position>= 1&& CurrentContracts<4*Position)
                                {SellShort(Position,0);myEntryPrice = close;}


                }




End
作者: nopain    时间: 2007-9-22 16:25:29

看看是不是交易设置里面不能连续加仓,或者说是最大持仓的限制。

另外,请使用FileAppend函数输出信息进行调试。
作者: jeckforlete    时间: 2007-9-22 16:31:59

我把交易属性里的持仓限制去掉,可是又自己出现了,不知道怎么回事?

老大,您能不能帮忙看看在您的机器上能不能加仓啊?
作者: jeckforlete    时间: 2007-9-22 16:41:21

我没法去掉交易属性里的持仓限制,怎么办啊?
作者: nopain    时间: 2007-9-22 16:45:37

原帖由 jeckforlete 于 2007-9-22 16:31 发表
我把交易属性里的持仓限制去掉,可是又自己出现了,不知道怎么回事?

老大,您能不能帮忙看看在您的机器上能不能加仓啊?


我这里可以加仓的。下图是我这里的界面,另外,您不需要在程序里面制定4次加仓。通过交易设置就可以控制了
[attach]271[/attach]
作者: nopain    时间: 2007-9-22 16:46:50

原帖由 jeckforlete 于 2007-9-22 16:41 发表
我没法去掉交易属性里的持仓限制,怎么办啊?


把持仓限制改大一点就可以啦。另外,需要保存到模版或工作区才能存起来。
作者: jeckforlete    时间: 2007-9-22 17:03:06

刚才没法去掉交易属性里的持仓限制
现在好了
谢谢老大!!

作者: jeckforlete    时间: 2007-9-22 17:25:19

我的TB老是自己关闭,不知道怎么回事
历史数据也有点太少必须用外部数据,太麻烦了,而且准确度没法保证
还有,好像TB对大量数据的处理能力比较弱
作者: nopain    时间: 2007-9-22 17:34:13

原帖由 jeckforlete 于 2007-9-22 17:25 发表
我的TB老是自己关闭,不知道怎么回事
历史数据也有点太少必须用外部数据,太麻烦了,而且准确度没法保证
还有,好像TB对大量数据的处理能力比较弱 ...


1、您可以记录一下是什么操作导致程序崩溃,是否每次退出都是可重复的,这样方便我们查找问题并修改。
2、历史数据方面,您可以在商品设置中修改数据范围。最多2万个
作者: ATL    时间: 2007-9-22 17:44:43

原帖由 wgcpsxj 于 2007-9-22 17:42 发表
看来程序自己关闭退出的问题,不只是我一个人出现过,今天我这里还出现了2、3次,以前的版本极少出现的。



我的也是如此。不是 2, 3次,是不知道多少次,因为没数过。
作者: nopain    时间: 2007-9-22 17:44:57

原帖由 wgcpsxj 于 2007-9-22 17:42 发表
看来程序自己关闭退出的问题,不只是我一个人出现过,今天我这里还出现了2、3次,以前的版本极少出现的。


帮忙测试一下是怎么操作导致程序退出,如果能够重复的。最好能详细记录下每一步操作。谢谢!

我们的开发人员自己测试都是按照正常的步骤及流程,所以,几乎是不会出错的。
但是,客户在使用时,可能会出现很随机的操作,导致程序出错。这个时候就需要麻烦您们记录一下操作步骤。方便我们修改完善程序。

[ 本帖最后由 nopain 于 2007-9-22 17:47 编辑 ]
作者: nopain    时间: 2007-9-22 18:01:59

原帖由 wgcpsxj 于 2007-9-22 17:54 发表
早些天我提出过
http://www.tradeblazer.net/forum/thread-393-1-3.html

可能是机器配置低,测试数据有太多。


您用什么商品,什么周期,多少数据测试?
作者: nopain    时间: 2007-9-22 18:10:14

原帖由 wgcpsxj 于 2007-9-22 18:06 发表
都是股指
今天是TICK , 以前都是1、5、最多15MIN吧,不过我用的数据都是尽可能的多的,最多的好像是3个月的吧[不可以再多否则电脑象死掉一样]


我试了一下,搞不死程序,

您再试一下,最好重登录之后记录下每个详细操作。包括鼠标右键,点工具栏,或菜单等细节。谢谢
作者: jeckforlete    时间: 2007-9-22 18:19:32

我就是登录,然后鼠标右键一点图表,它就自己关掉了……




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