设为首页收藏本站

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

平仓指令,不能实现自动止损平仓.SetStopLoss(1,100,true), [复制链接]

Rank: 5Rank: 5

精华
0
UID
7593
积分
609
帖子
109
主题
14
阅读权限
60
注册时间
2010-3-19
最后登录
2014-5-18
11#
发表于 2010-4-27 00:05:42 |只看该作者
请问一下管理员同志及其它大侠,Bool A_SendOrder(Integer BuyOrSell,Integer EntryOrExit,Numeric fLot,Numeric fPrice)函数,能否把Numeric fPrice 替换为NextOpen来获取交易价格数据,因为这样不会发生重复开仓的问题,谢谢!
if ( tr_hbop[1] > tr_x[1] And (Abs(tr_s1[1]-tr_x[1])<=0 or Abs(tr_s1[1]-tr_x[1])<=0.50))
{
        if (A_SellPosition()>0)
        {
                A_SendOrder(Enum_Sell,Enum_Exit,A_SellPosition(),Q_AskPrice());
        }
        A_SendOrder(Enum_Buy,Enum_Entry,1,Q_BidPrice());
}

if ( tr_hbop[1]<tr_x[1]  And (Abs(tr_b1[1]-tr_x[1])<=0  or Abs(tr_b1[1]-tr_x[1])<=0.50))
{
        if (A_BuyPosition()>0)
        {
                A_SendOrder(Enum_Buy,Enum_Exit,A_BuyPosition(),Q_BidPrice());
        }
        A_SendOrder(Enum_Sell,Enum_Entry,1,Q_AskPrice());
}
//----------------止损操作--------------
if ((A_BuyPosition()>0 or A_SellPosition()>0 ) And BarStatus ==2)
{
//-------------止损平仓100-----------------
        if (A_BuyProfitLoss()<=-100)
        {
                A_SendOrder(Enum_sell,Enum_exit,A_BuyPosition(),Q_BidPrice());
        }
        if (A_SellProfitLoss()<=-100)
        {
                A_SendOrder(Enum_Buy,Enum_exit,A_SellPosition(),Q_AskPrice());
        }

By,Zejunl

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
7593
积分
609
帖子
109
主题
14
阅读权限
60
注册时间
2010-3-19
最后登录
2014-5-18
12#
发表于 2010-4-27 00:09:41 |只看该作者

回复 6# ranran0623 的帖子

谢谢[size],呵呵。

使用道具 举报

Rank: 10Rank: 10Rank: 10

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

回复 11# zejunl 的帖子

A_SendOrder避免重复开仓配合全局变量使用。
例如:
if(getglobalvar(0)==0 && 开仓条件)
{
A_SendOrder(略);
setglobalvar(0,1);
}

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
7593
积分
609
帖子
109
主题
14
阅读权限
60
注册时间
2010-3-19
最后登录
2014-5-18
14#
发表于 2010-4-27 09:09:27 |只看该作者
Hi, 请看下列代码,为什么不能根据自动止损平仓呢?谢谢!
交易指令应用周期:1分钟,
开仓方向:多仓
开仓价格:SR1101 4995
现在价格:SR1101 4958
损失:SR1101 5995-4958= -370

//----------------止损操作--------------
if ((A_BuyPosition()>0 or A_SellPosition()>0 ) And BarStatus ==2)
{
//-------------止损平仓100-----------------
        if (A_BuyProfitLoss()<=-100)
        {
                A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition(),Q_BidPrice());
        }
        if (A_SellProfitLoss()<=-100)
        {
                A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition(),Q_AskPrice());
        }
       
       
}

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20901
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
15#
发表于 2010-4-27 09:22:58 |只看该作者
启动了自动交易吗?
BarStatus ==2这句可以删去
以下平仓部分没有问题
if (A_BuyPosition()>0 or A_SellPosition()>0 )
{
//-------------止损平仓100-----------------
        if (A_BuyProfitLoss()<=-100)
        {
                A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition(),Q_BidPrice());
        }
        if (A_SellProfitLoss()<=-100)
        {
                A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition(),Q_AskPrice());
        }      
}

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
7593
积分
609
帖子
109
主题
14
阅读权限
60
注册时间
2010-3-19
最后登录
2014-5-18
16#
发表于 2010-4-27 10:23:25 |只看该作者
好的,请问,是否我把BarStatus ==2 删除了就能实现自动止损平仓了呢。? 我现在就去难一下。

使用道具 举报

Rank: 10Rank: 10Rank: 10

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

回复 16# zejunl 的帖子

BarStatus ==2是多余的,删不删除都可以实现平仓的功能。这部分代码没有问题。

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
7593
积分
609
帖子
109
主题
14
阅读权限
60
注册时间
2010-3-19
最后登录
2014-5-18
18#
发表于 2010-4-27 10:49:44 |只看该作者
刚刚才我把程序代码做了些修改,主要是为了避免同一方向重复下单的问题,按照您的提示,我把代码修改如下,请看下列代码,其中我有一个疑问,为什么还是在重复发送同一方向的单,我应该把SetGlobalVar(0,0) and SetGlobalVar(1,0)的初始值放在程序的那一部分。如果把SetGlobalVar(0,0) and SetGlobalVar(1,0)放在Begin and End 之间的话,可能随时都会去把默认值识为当前值。期待您及高手的回答!
关于开平仓记录请看附件中的文件,先行谢过了。
Parms
......
Vars
......
Begin
{
//前面程序计算部分.........

SetGlobalVar(0,0);//多开平仓标志,没有多单持仓用0表示,有多单持仓用1表示。获取数据用GetGlobalVar(0);
SetGlobalVar(1,0);//空开平仓标志,没有空单持仓用0表示,有空单持仓用1表求。获取数据用GetGlobalVar(1);


if ( tr_hbop[1] > tr_x[1] And (Abs(tr_s1[1]-tr_x[1])<=0 or Abs(tr_s1[1]-tr_x[1])<=0.50))
{
        if (GetGlobalVar(1)==1)
        {
                A_SendOrder(Enum_Sell,Enum_Exit,A_SellPosition(),Q_AskPrice());
                SetGlobalVar(1,0);
        }
        if (GetGlobalVar(0)==0)
        {
                A_SendOrder(Enum_Buy,Enum_Entry,1,Q_BidPrice());
                SetGlobalVar(0,1);               
        }
}

if ( tr_hbop[1]<tr_x[1]  And (Abs(tr_b1[1]-tr_x[1])<=0  or Abs(tr_b1[1]-tr_x[1])<=0.50))
{
        if (GetGlobalVar(0)==1)
        {
                A_SendOrder(Enum_Buy,Enum_Exit,A_BuyPosition(),Q_BidPrice());
                SetGlobalVar(0,0);
        }
        if (GetGlobalVar(1)==0)
        {
                A_SendOrder(Enum_Sell,Enum_Entry,1,Q_AskPrice());
                SetGlobalVar(1,1);
        }
}

End


By : Zejunl

[ 本帖最后由 zejunl 于 2010-4-27 12:47 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
20070
积分
232
帖子
17
主题
4
阅读权限
40
注册时间
2010-11-20
最后登录
2011-3-25
19#
发表于 2010-12-3 10:29:14 |只看该作者
这样的好贴得顶!

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
20070
积分
232
帖子
17
主题
4
阅读权限
40
注册时间
2010-11-20
最后登录
2011-3-25
20#
发表于 2010-12-3 10:33:25 |只看该作者
zejunl ,你好!如何加你qq好友?希望能对你发的这段代码的某些问题向你请教,谢谢啦~!

使用道具 举报

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

bottom

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

GMT+8, 2024-5-17 10:56

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部