系统交易论坛 - 开拓者期货自动交易平台 » 系统交易 » 哥哥姐姐们,怎么实现连续亏损N次后加仓啊:


2008-8-4 09:32 TradeStar
哥哥姐姐们,怎么实现连续亏损N次后加仓啊:

哥哥姐姐们,怎么实现连续亏损N次后加仓啊:
有多少种实现方法?
最好的实现方法是什么?只能用“全局变量”吗?大家来谈谈把。。。
这个功能呢,想法上比较简单,但是用“全局变量”的话,会变得相当复杂,请问有没有好点的办法啊?

[[i] 本帖最后由 TradeStar 于 2008-8-4 09:47 编辑 [/i]]

2008-8-4 10:13 nopain
1、用序列变量来控制,不要用全局变量。
2、连续亏损后加仓不是一个好主意

2008-8-4 10:21 TradeStar
呵呵,对呀,用序列变量简单多了。。。
:—)
连续亏损后加仓不好的理由是啥嘛?这个大家是不是可以讨论一下呀?

2008-8-4 10:39 TradeStar
哥哥,是这样用吗?
-------------------------------------------

NumericSeries j(0);
j=亏损;
j=亏损;
j=亏损;
if(j==亏损 && j[1]==亏损 && j[2]==亏损)
{
Alert("你亏损三个咯");
}

2008-8-4 11:07 nopain
不是这样的,给您写一个模版吧

[code]
Vars
    NumericSeries conFailureCnt(0);
Begin
    If(BarStatus==0)
    {
        conFailureCnt = 0;
    }else
    {
        conFailureCnt = conFailureCnt[1];
    }

    YourBuyCon = ?
    YourSellShortCon = ?
    If(YourBuyCon&&MarketPosition==0)
   {
        If(conFailureCnt > 3)
        {
              Buy(2,NextOpen,True);
        }else
        {
              Buy(1,NextOpen,True);
        }
    }

    If(YourSellShortCon&&MarketPosition==0)
    {
        If(conFailureCnt > 3)
        {
              SellShort(2,NextOpen,True);
        }else
        {
              SellShort(1,NextOpen,True);
        }
    }

    YourSellCon = ?
    YourBuyToCoverCon = ?
    If(MarketPosition==1 && YourSellCon)
    {
           If(PositionProfit < 0)
           {
                 conFailureCnt = conFailureCnt  + 1;
            }else
           {
                 conFailureCnt = 0;
           }

          sell(....);
    }


     If(MarketPosition==-1 && YourBuyToCoverCon )
    {
           If(PositionProfit < 0)
           {
                 conFailureCnt = conFailureCnt  + 1;
            }else
           {
                 conFailureCnt = 0;
           }

          BuyToCover(....);
    }

End

[/code]

2008-8-19 09:13 mywcgo
请问上面模板中的conFailureCnt 什么意思,帮助文档里找不到

2008-8-19 09:21 TradeStar
是个自定义数值型序列值参数,用来贮存亏损交易的次数。。。

2008-8-19 11:17 mywcgo
谢谢了  这样我就能理解这个模板了:lol

2008-8-19 17:59 clmtw
从资金管理策略来说, 连续亏损后加仓一般不被认为是一种好的策略

2008-8-20 16:32 mywcgo
能不能请各位高手,把上面的模板修改一下,改成符合条件1,并且浮赢大于多少,加一次仓,符合条件1,浮赢大于多少,加第二次仓?  谢谢了   方便新手学习.

2008-8-21 08:48 nopain
基本上和上面的差不多,
把PositionProfit < 0 修改为PositionProfit > 5000,5000是您的指定的赢利值,这样就可以了

2008-8-21 17:09 mywcgo
请帮忙看看下面这个模板哪里出了问题:
Params
       
        Numeric BuyLots(1);
        Numeric SellLots(1);
Vars
    NumericSeries conFailureCnt(0);
    Numericseries X;
        Bool Condition1;
        Bool Condition2;
        Bool Condition3;
        Bool Condition4;
Begin
    If(BarStatus==0)
    {
        conFailureCnt = 0;
    }else
    {
        conFailureCnt = conFailureCnt[1];
    }

    Condition1 =
        Condition2 =
    Condition3 =
    Condition4 =
                        X  = 500

    if (Condition1 && Condition3 &&  MarketPosition == 0)
          {
                Buy(BuyLots,Close,true);
          }
        if (marketposition == 1)
          {
          If(conFailureCnt == 1)
                    {
                         Buy(BuyLots,Close,true);
                           }
                If(conFailureCnt == 2)
                    {
                         Buy(BuyLots,Close,true);
                           }
         If(conFailureCnt == 3)
                    {
                         Buy(BuyLots,Close,true);
                           }
           }
        if (Condition2)
          {
                Sell(0,close,true);
         conFailureCnt = 0;
          }



        if (Condition2 && Condition4 &&  MarketPosition == 0)
          {
                SellShort(SellLots,Close,true);
          }
        if (marketposition == -1)
      {
           If(conFailureCnt == 1)
                                {
                          SellShort(SellLots,Close,true);
                                 }
             If(conFailureCnt == 2)
                                {
                          SellShort(SellLots,Close,true);
                                 }
             If(conFailureCnt == 3)
                                {
                          SellShort(SellLots,Close,true);
                                 }         
        }   
        if (Condition1)
          {
                BuyToCover(0,close,true);
                conFailureCnt = 0;      
          }


    If(MarketPosition <>0 )
    {
           If(ContractProfit > X)
           {
                 conFailureCnt = conFailureCnt  + 1;
            }
    }




End
我的设想是持仓后,每手盈利一超过X就加一仓,因为加了仓后每手盈利会降低,所以再次每手盈利达到X的时候,又可以加一手,不论多空.可是按照我这程序,执行的时候多单胡乱加仓,不管盈亏,空单从不加仓

页: [1]


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.