设为首页收藏本站

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

求高人帮忙改成反向开仓.谢谢! [复制链接]

Rank: 1

精华
0
UID
110644
积分
41
帖子
13
主题
4
阅读权限
10
注册时间
2012-5-24
最后登录
2012-11-14
跳转到指定楼层
1#
发表于 2012-5-27 20:05:32 |只看该作者 |倒序浏览
这是交易开拓者里双均线系统的代码,有劳哪位大侠帮我改成反向开仓.就是它达到条件开多单的时候,我们改成开空单.达到条件开空单,我们就改成开多单
Params
        Numeric FastLength(5);
        Numeric SlowLength(20);
Vars
        NumericSeries AvgValue1;
        NumericSeries AvgValue2;
Begin
        AvgValue1 = AverageFC(Close,FastLength);
        AvgValue2 = AverageFC(Close,SlowLength);
               
        If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1])
        {
                Buy(1,Open);
        }
       
        If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1])
        {
                SellShort(1,Open);
        }
       
        PlotNumeric("MA1",AvgValue1);
        PlotNumeric("MA2",AvgValue2);               
        PlotNumeric("PL",Portfolio_TotalProfit);
End

Rank: 1

精华
0
UID
110644
积分
41
帖子
13
主题
4
阅读权限
10
注册时间
2012-5-24
最后登录
2012-11-14
2#
发表于 2012-5-27 20:52:58 |只看该作者
这是我改的,哪里不对呢?
Params
        Numeric FastLength(5);
    Numeric SlowLength(20);
Vars
    NumericSeries AvgValue1;
    NumericSeries AvgValue2;
Begin
    AvgValue1 = AverageFC(Close,FastLength);
    AvgValue2 = AverageFC(Close,SlowLength);

    If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1])
    {
        Buy(1,Open);
    }

  
    If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1])
    {
        Sellshort(1,Open);
    }

  
        PlotNumeric("MA1",AvgValue1);
    PlotNumeric("MA2",AvgValue2);  
    PlotNumeric("PL",Portfolio_TotalProfit);
End

使用道具 举报

Rank: 1

精华
0
UID
110371
积分
42
帖子
15
主题
4
阅读权限
10
注册时间
2012-5-7
最后登录
2013-4-14
3#
发表于 2012-5-27 21:48:56 |只看该作者
我不是高手,试着改一下。
程序前半部分不变,后面改成:
If(MarketPosition <>1 && AvgValue1[1] < AvgValue2[1])
    {
        Buy(1,Open);
    }

  
    If(MarketPosition <>-1 && AvgValue1[1] > AvgValue2[1])
    {
        Sellshort(1,Open);
    }

  
        PlotNumeric("MA1",AvgValue1);
    PlotNumeric("MA2",AvgValue2);  
    PlotNumeric("PL",Portfolio_TotalProfit);
End
即第一个条件语句中为MarketPosition <>1,第二个条件语句为MarketPosition <>-1
问题是你这么改也未必能行(在你加上手续费和滑点之后)

使用道具 举报

Rank: 1

精华
0
UID
110644
积分
41
帖子
13
主题
4
阅读权限
10
注册时间
2012-5-24
最后登录
2012-11-14
4#
发表于 2012-5-27 22:18:53 |只看该作者
谢谢,我试试看

使用道具 举报

Rank: 1

精华
0
UID
110644
积分
41
帖子
13
主题
4
阅读权限
10
注册时间
2012-5-24
最后登录
2012-11-14
5#
发表于 2012-5-27 22:28:09 |只看该作者
我试过了,不行,但还要谢谢你.我觉得不能改它的条件,要想办法改成反向开仓的源码

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
82346
积分
170
帖子
79
主题
8
阅读权限
40
注册时间
2012-2-22
最后登录
2021-2-21
6#
发表于 2012-5-31 00:27:50 |只看该作者
Params
        Numeric FastLength(5);
        Numeric SlowLength(20);
Vars
        NumericSeries AvgValue1;
        NumericSeries AvgValue2;
Begin
        AvgValue1 = AverageFC(Close,FastLength);
        AvgValue2 = AverageFC(Close,SlowLength);
               
        If(MarketPosition <>1 && AvgValue1[1] < AvgValue2[1])
        {
                Buy(1,Open);
        }
       
        If(MarketPosition <>-1 && AvgValue1[1] > AvgValue2[1])
        {
                SellShort(1,Open);
        }

这种改法,资金会在前面就亏完的,所以没有信号

使用道具 举报

Rank: 1

精华
0
UID
98411
积分
28
帖子
15
主题
1
阅读权限
10
注册时间
2012-2-18
最后登录
2013-8-1
7#
发表于 2012-6-27 01:29:48 |只看该作者
原来的代码不要动, 把buy 和 sell的位置换一下就可以了

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
42516
积分
1239
帖子
264
主题
31
阅读权限
60
注册时间
2011-5-25
最后登录
2014-9-23
8#
发表于 2012-6-27 14:41:38 |只看该作者
这里关键的问题是If语句中MarketPosition的取值问题

源代码中MarketPosition<>1  然后Buy

MarketPosition<>-1然后Sell   是为了保证当满足AvgValue1[1] < AvgValue2[1]或&& AvgValue1[1] > AvgValue2[1]时不重复发单

所以改的话应该这样
Params
        Numeric FastLength(5);
        Numeric SlowLength(20);
Vars
        NumericSeries AvgValue1;
        NumericSeries AvgValue2;
Begin
        AvgValue1 = AverageFC(Close,FastLength);
        AvgValue2 = AverageFC(Close,SlowLength);
        If(MarketPosition <>1 && AvgValue1[1] < AvgValue2[1])
        {
                Buy(1,Open);
        }


        If(MarketPosition <>-1 && AvgValue1[1] > AvgValue2[1])
        {
                SellShort(1,Open);
        }
        
            
        PlotNumeric("MA1",AvgValue1);
        PlotNumeric("MA2",AvgValue2);               
        PlotNumeric("PL",Portfolio_TotalProfit);
End

使用道具 举报

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

bottom

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

GMT+8, 2024-5-3 04:28

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部