设为首页收藏本站

 找回密码
 注册
楼主: 道勤
打印 上一主题 下一主题

连续开仓问题。 [复制链接]

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20901
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
11#
发表于 2010-5-12 12:14:34 |只看该作者
用A_SendOrder发单,不用延迟发单,即时发单,用全局变量标记控制重复发单。
但是A_Sendorder不会有信号标记出现。

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
7099
积分
614
帖子
120
主题
22
阅读权限
60
注册时间
2010-3-3
最后登录
2019-3-24
12#
发表于 2010-5-12 15:23:37 |只看该作者
老师,A_Sendorder能找到帮助,全局变量可以在哪里查到用法帮助呢?  谢谢!

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20901
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
13#
发表于 2010-5-12 15:28:17 |只看该作者

回复 12# 道勤 的帖子

在论坛里搜索一下,很多的。相信以前很多人的问题都能够帮助您。

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
7099
积分
614
帖子
120
主题
22
阅读权限
60
注册时间
2010-3-3
最后登录
2019-3-24
14#
发表于 2010-5-12 16:15:49 |只看该作者
老师帮忙看看,原有的buy sell语句,这样翻译是否正确。   感谢troyhou老师提供的代码。还有zejunl老师对A_sendorder的注释。

---------------------------------------------------------------------------------
需要被翻译的代码如下:

          If (Condition1 And MarketPosition==-1)
        {
                BuyToCover(0,0);
                Buy(0,0);
        }else if (Condition1)
        {
                Buy(0,0);
        }
        If (Condition2 And MarketPosition==1)
        {
                Sell(0,0);
                SellShort(0,0);
        }else If (Condition2)
        {
                SellShort(0,0);
        }

翻译后的语句:

           If ( barstatus==0 )
        {
                SetGlobalVar(0,SetPos);        //setpos,调整初始持仓(我自己是这样理解的,不知道对不对)
        }
        
        If ( GetGlobalVar(0)==0  )
        {
                If ( Condition1 /* 开多仓条件满足 */ )
                {
                        A_SendOrder(Enum_Buy,Enum_Entry,1,Q_AskPrice());
                        SetGlobalVar(0,1);
                }
                If ( Condition2 )
                {
                        A_SendOrder(Enum_Sell,Enum_Entry,1,Q_BidPrice());
                        SetGlobalVar(0,-1);
                }
        }
  
        If ( GetGlobalVar(0)==1 && Condition2 /* 平多仓条件满足 */ )
        {
                A_SendOrder(Enum_Sell,Enum_Exit,1,Q_BidPrice());
                A_SendOrder(Enum_Sell,Enum_Entry,1,Q_BidPrice());
                SetGlobalVar(0,-1);
                /* SetGlobalVar(0,0); */
        }
   
        If ( GetGlobalVar(0)==-1 && Condition1 /* 平空仓条件满足 */ )
        {
                A_SendOrder(Enum_Buy,Enum_Exit,1,Q_AskPrice());
                A_SendOrder(Enum_Buy,Enum_Entry,1,Q_AskPrice());
                SetGlobalVar(0,1);
                /* SetGlobalVar(0,0); */
        }

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
7099
积分
614
帖子
120
主题
22
阅读权限
60
注册时间
2010-3-3
最后登录
2019-3-24
15#
发表于 2010-5-12 16:28:21 |只看该作者
或者是否需要在做反手的时候,先判断之前的平仓是否已经执行。

---------------------------------------------------------------

If ( barstatus==0 )
        {
                SetGlobalVar(0,SetPos);        
        }
        
        If ( GetGlobalVar(0)==0  )
        {
                If ( Condition1 /* 开多仓条件满足 */ )
                {
                        A_SendOrder(Enum_Buy,Enum_Entry,1,Q_AskPrice());
                        SetGlobalVar(0,1);
                }
                If ( Condition2 )
                {
                        A_SendOrder(Enum_Sell,Enum_Entry,1,Q_BidPrice());
                        SetGlobalVar(0,-1);
                }
        }
  
        If ( GetGlobalVar(0)==1 && Condition2 /* 平多仓条件满足 */ )
        {
                A_SendOrder(Enum_Sell,Enum_Exit,1,Q_BidPrice());
                SetGlobalVar(0,0);
               
                If ( GetGlobalVar(0)==0  )  //判断平常是否已经被执行
                {
                        A_SendOrder(Enum_Sell,Enum_Entry,1,Q_BidPrice());
                        SetGlobalVar(0,-1);
                        /* SetGlobalVar(0,0); */
                }
        }
   
        If ( GetGlobalVar(0)==-1 && Condition1 /* 平空仓条件满足 */ )
        {
                A_SendOrder(Enum_Buy,Enum_Exit,1,Q_AskPrice());
                SetGlobalVar(0,0);

                If ( GetGlobalVar(0)==0  )  //判断平仓是否已经被执行。
                {
                        A_SendOrder(Enum_Buy,Enum_Entry,1,Q_AskPrice());
                        SetGlobalVar(0,1);
                        /* SetGlobalVar(0,0); */
                }
        }

[ 本帖最后由 道勤 于 2010-5-12 16:46 编辑 ]

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
7099
积分
614
帖子
120
主题
22
阅读权限
60
注册时间
2010-3-3
最后登录
2019-3-24
16#
发表于 2010-5-12 16:45:35 |只看该作者
今天的成绩还是不错的,排除一次连续开仓错误外,总体盈利在2%左右。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20901
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
17#
发表于 2010-5-12 17:03:03 |只看该作者
基本上没有问题,SetPos是在哪里赋值定义的?

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
7099
积分
614
帖子
120
主题
22
阅读权限
60
注册时间
2010-3-3
最后登录
2019-3-24
18#
发表于 2010-5-12 17:15:09 |只看该作者
在参数里,可以自己修改的位置。
Params
    Numeric SetPos(0);

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
8500
积分
1039
帖子
128
主题
29
阅读权限
60
注册时间
2010-4-12
最后登录
2019-3-30
19#
发表于 2010-5-13 08:36:26 |只看该作者
  1.         If ( GetGlobalVar(0)==1 && Condition2 /* 平多仓条件满足 */ )
  2.         {
  3.                 A_SendOrder(Enum_Sell,Enum_Exit,1,Q_BidPrice());
  4.                 SetGlobalVar(0,0);
  5.                
  6.                 If ( GetGlobalVar(0)==0  )  //判断平常是否已经被执行
  7.                 {
  8.                         A_SendOrder(Enum_Sell,Enum_Entry,1,Q_BidPrice());
  9.                         SetGlobalVar(0,-1);
  10.                         /* SetGlobalVar(0,0); */
  11.                 }
  12.         }
  13.   
复制代码
  1.         If ( GetGlobalVar(0)==1 && Condition2 /* 平多仓条件满足 */ )
  2.         {
  3.                 A_SendOrder(Enum_Sell,Enum_Exit,1,Q_BidPrice());
  4.                 A_SendOrder(Enum_Sell,Enum_Entry,1,Q_BidPrice());
  5.                 SetGlobalVar(0,-1);
  6.                 /* SetGlobalVar(0,0); */
  7.         }
复制代码
这两段代码作用完全一摸一样,也就是说前面那段代码有点多此一举。

另外,有两点建议:
一、开仓价和平仓价如果不加偏移点,在目前的模拟盘不会有问题,但是在真实账户中很有可能不成交。
二、关于平仓马上反手的问题,我个人认为没有必要。因为,平仓有两种情况:一种是止损平仓,一般来说,在这种情况下,立即反手肯定是不妥的;第二种平仓就是反手信号出现,以你的代码来举例吧,我认为在你的代码中“平多仓条件”很可能与“开空仓条件”是一样的。这样的话,在“平多仓条件”满足并成功平掉仓位以后,我们不需要立即反手。因为,在接下来的一个Tick来临的时候,你的“开空仓条件”(其实就是“平多仓条件”)依然满足,自然可以成功建仓。

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
7099
积分
614
帖子
120
主题
22
阅读权限
60
注册时间
2010-3-3
最后登录
2019-3-24
20#
发表于 2010-5-13 08:37:15 |只看该作者
老师我有2个疑问。
1、如果使用A_SendOrder() 发单,之前做的收盘平仓命令是否也需要修改成,A_SendOrder()函数,而不能使用buy sell?
2、使用A_sendOrder()之后,是否还可以使用程序自带的交易公式组合策略(例如百分比回撤交易指令)?

使用道具 举报

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

bottom

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

GMT+8, 2024-4-28 15:58

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部