设为首页收藏本站

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

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

Rank: 5Rank: 5

精华
0
UID
7593
积分
609
帖子
109
主题
14
阅读权限
60
注册时间
2010-3-19
最后登录
2014-5-18
跳转到指定楼层
1#
发表于 2010-4-26 10:52:05 |只看该作者 |正序浏览
Dear Adm and all,
      我写了一个模型测试一下,使用函数SetStopLoss(1,100,true)不能进行自动平仓,望管理员及各位高手给予帮助,谢谢。
代码如下:
//------------------------------------------------------------------------
// 简称: my_trtst
// 名称: my_trtst
// 类别: 交易指令
// 类型: 其他
// 输出:
//------------------------------------------------------------------------

Params
Numeric down_length(1.5);
Numeric up_length(0.5);
Vars

//-------------止损平仓1000-----------------
SetStopLoss(1,100,true);
//-------------价格盈利回落10%(0.1)实行平仓------------
SetPercentTrailing(600,0.1,true);

//----------------获得当前持仓位置的浮动盈亏--------------
if (MarketPosition!=0 And BarStatus ==2){
FileDelete("C:\\Program_Trading.log");  
FileAppend("C:\\Program_Trading.log","浮动盈亏 = "+Text(A_ProfitLoss()));为什么输出的是一个N/A的字符串。

}
End

//------------------------------------------------------------------------
// 编译版本        GS2004.06.12
// 用户版本        2010/04/17 23:44
// 版权所有        zejunl
// 更改声明        TradeBlazer Software保留对TradeBlazer平台
//                        每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
此贴在lh948同志的大力支持下已经得到解决。
Submitter: zejunl

[ 本帖最后由 zejunl 于 2010-4-27 13:42 编辑 ]

Rank: 3Rank: 3

精华
0
UID
93332
积分
172
帖子
74
主题
22
阅读权限
40
注册时间
2012-1-17
最后登录
2017-11-22
21#
发表于 2012-6-6 16:15:38 |只看该作者
mark,顶!

使用道具 举报

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好友?希望能对你发的这段代码的某些问题向你请教,谢谢啦~!

使用道具 举报

Rank: 3Rank: 3

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

使用道具 举报

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: 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
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
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
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
13#
发表于 2010-4-27 08:47:24 |只看该作者

回复 11# zejunl 的帖子

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

使用道具 举报

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

bottom

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

GMT+8, 2024-5-17 23:13

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部