当前位置:编程学习 > C#/ASP.NET >>

一个 C# 编程求助

大家好,

我有一个编程一直解决不了,这是一个简单的使用蜡烛图的自动交易策略,语言是C#,介绍如下:

1, 这个策略只考虑入场部分,暂时忽略出场部分

2,做多信号是红色蜡烛(收盘价 Close > 开盘价 Open),而且在5日均线 SMA(Close,5) 以下收盘,也就是Close <SMA(Close,5)

3,做空信号是绿色蜡烛(收盘价 Close < 开盘价 Open),而且在5日均线 SMA(Close,5) 以上收盘,也就是Close >SMA(Close,5)

4,开始是先定义多单计数(LongOrderCount)为0,空单计数(ShortOrderCount)为0

5,出现第一个有做多信号的蜡烛之后,就执行做多命令,也就是 EnterLongOrder;并且定义多单计数(LongOrderCount)为1,这个蜡烛暂命名为蜡烛#1,下一个蜡烛就是#2, 以此类推

6,假如蜡烛#1之后的蜡烛出现新的做多信号,和蜡烛#1之间没有绿色蜡烛间隔,忽略这些新的做多信号,不执行任何新的做多命令.

7,假如蜡烛#1之后的蜡烛出现绿色蜡烛,把多单计数(LongOrderCount)重新定义为0

8, 假如蜡烛#1之后的蜡烛出现新的做多信号,和蜡烛#1之间有绿色蜡烛间隔,执行新的做多命令,并且重新多单计数(LongOrderCount)为1

9,出现第一个有做空信号的蜡烛之后,就执行做空命令,也就是 EnterShortOrder;并且定义空单计数(ShortOrderCount)为1,

10,假如蜡烛#1之后的蜡烛出现新的做空信号,和蜡烛#1之间没有红色蜡烛间隔,忽略这些新的做多信号,不执行任何新的买入命令.

11,假如蜡烛#1之后的蜡烛出现红色蜡烛,把空单计数(ShortOrderCount)重新定义为0

12, 假如蜡烛#1之后的蜡烛出现新的做空信号,和蜡烛#1之间有红色蜡烛间隔,执行新的做空命令,并且重新空单计数(ShortOrderCount)为1

示例:

蜡烛#1:信号:做多。  颜色:红。   反应:执行做多命令,也就是 EnterLongOrder;并且定义多单计数(LongOrderCount)为1

蜡烛#2:信号:无。    颜色:红。   反应:无

蜡烛#3:信号:做多。  颜色:红。   反应:无。  原因:蜡烛#1和#3之间没有间隔任何绿色蜡烛。

蜡烛#4:信号:做多。  颜色:红。   反应:无。  原因:同上。

蜡烛#5:信号:无。    颜色:绿。   反应:把多单计数(LongOrderCount)重新定义为0。 

蜡烛#6:信号:无。    颜色:绿。   反应:无。

蜡烛#7:信号:做多。  颜色:红。   反应:执行做多命令,也就是 EnterLongOrder;并且定义多单计数(LongOrderCount)为1。 原因:蜡烛#1和#7之间有间隔绿色蜡烛

蜡烛#8:信号:无。    颜色:红。   反应:无

蜡烛#9:信号:做空。  颜色:绿。   反应:执行做空命令,也就是 EnterShortOrder;并且定义空单计数(ShortOrderCount)为1,

蜡烛#10:信号:做空。 颜色:绿     反应:无。  原因:蜡烛#9和#10之间没有间隔任何红色蜡烛。
 
蜡烛#11:信号:无。   颜色:红。   反应:把空单计数(LongOrderCount)重新定义为0。

蜡烛#12:信号:做空。 颜色:绿。   反应:执行做空命令,也就是 EnterLongOrder;并且定义空单计数(LongOrderCount)为1。 原因:蜡烛#9和#12之间有间隔红色蜡烛


这是我写的代码,但是无法实现我前面所说的设计,希望哪位高手能帮我看一下问题出在哪里,谢谢!


protected override void OnBarUpdate()  //每个新的蜡烛完成时执行
{
            int LongTradeCount =0;
            int ShortTradeCount =0;

            if(Close > Open)
            {ShortTradeCount =0;}
               
            else if(Close < Open)
            {LongTradeCount =0;}
           
            else if(
                   Close > Open
                && Close < SMA(Close,5)
                && LongTradeCount==0
                )
            {
             EnterLongOrder;
            ++LongTradeCount;
            }
           
            else if(
                   Close < Open
                && Close > SMA(Close,5)
                && ShortTradeCount==0
                )
            {
             EnterLongOrder;
            ++ShortTradeCount;
            }

}
--------------------编程问答-------------------- 好长啊,顶起,吃饭回来看 --------------------编程问答-------------------- 就是 好长哦 有时间来看下哈 --------------------编程问答-------------------- 呵呵,谢谢楼上两位的关注,看起来很长,只是为了解释的清楚一点,其实原理和规则非常简单,同样颜色的连续蜡烛算一个周期,每个周期之内只允许执行一次做多或者做空指令,同一周期之内的其他信号被忽略,蜡烛颜色变化以后周期重新开始。

比如:

1 -2 -3 -4 -5 -6 -7 -8 -9 -10-11-12-13
红-红-红-绿-绿-红-红-红-绿-红-绿-绿-绿

1-3 是周期1
4-5 是周期2
6-8 是周期3
9   是周期4
10  是周期5
11-13是周期6 --------------------编程问答-------------------- 关注是想关注,不过楼主能不能把结账率再稍微提高一点?嘿嘿 --------------------编程问答-------------------- 开发股票策略/操作软件? --------------------编程问答-------------------- 6楼的朋友,好象有人回复的主题我就没有办法编辑了,所以不知道哪里可以提高结帐率。

7楼的朋友,我只是想测试一个策略,入门阶段。

所有关注的朋友,因为无法编辑原贴,所以我只能把示例里想补充的放在这里了,谢谢:

编号:   #1    #2     #3     #4     #5     #6     #7    #8    #9   #10   #11   #12  
颜色:   红    红     红     红     绿     绿     红    红    绿    绿    红    绿   
信号:   多    无     多     多     无     无     多    无    空    空    无    空
反应:  做多   无     无     无    归零    无    做多   无   做空   无   归零  做空
--------------------编程问答-------------------- 瞟了眼结贴率,还是Keep Silent --------------------编程问答-------------------- 长,有时间了看,顶个 --------------------编程问答-------------------- 我也来顶顶``嘿嘿`` --------------------编程问答-------------------- 终于搞清楚结贴率是什么东西了。

我想各位朋友误会我了,我是今天第一次在这里注册和发贴求助,一开始没看到有C#版,所以发到C版去了,这个是我发的第二个帖子,所以结贴率应该不好,希望能理解一下,谢谢! --------------------编程问答-------------------- 你这个case很多,你可以列一个表,把每种情况都包含在内,然后再去找算法。这样速度要快一些。 --------------------编程问答-------------------- 太菜了,刚刚才想起应该把C版的第一贴结贴,现在已经把那个发错版面的结掉了,希望现在结帖率能正常些。 --------------------编程问答-------------------- 谢谢 AugustFog 的回复,我的编程基础太差,对于稍微复杂一点的算法就蒙了,所以才厚着脸皮来这里求助的,谢谢! --------------------编程问答-------------------- 奇怪,为什么我把那个发错版面的帖子结了以后,在那边就显示结贴率是50%,(总发贴 2,正常结贴 1,未结贴 1)在这里还是0%,郁闷。。

http://topic.csdn.net/u/20100112/11/2b09a097-7791-4eea-9336-c01c01cd3f7c.html?330825462

--------------------编程问答-------------------- 挺有意思的一个问题,顶一下! --------------------编程问答-------------------- 先占位置! --------------------编程问答-------------------- 说明一下你想要干什么 --------------------编程问答-------------------- 楼上的朋友,这是用在一个股票交易测试系统里面的策略,我是想让这个策略达到我设计的要求,并测试其效果,这个测试系统支持用 C# 语言编写策略。其他的要求在我原贴和上面回帖补充里应该都有了,我估计主要就是一个逻辑判断的问题,对于会编程的人应该很简单。
谢谢。  --------------------编程问答-------------------- 你这个应该比较简单,但你表述的太乱,俺理不清 --------------------编程问答-------------------- 顶一下,看的头晕 --------------------编程问答--------------------

楼上的朋友们,我弄了个示例图,其中蓝色的三角标志代表着做多信号,黄色的代表做空信号,按照我的规则,红色箭头指着的那个做空信号不符合条件,因为它和前面的那个做空信号之间没有间隔绿色蜡烛,所以要被过滤,绿色箭头指着的那个做多信号不符合条件,因为它和前面的那个做多信号之间没有间隔红色蜡烛,所以要被过滤。

希望能有所帮助。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,