设为首页收藏本站

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

请助分阶段盈利回落平仓写法? [复制链接]

Rank: 5Rank: 5

精华
0
UID
7593
积分
609
帖子
109
主题
14
阅读权限
60
注册时间
2010-3-19
最后登录
2014-5-18
跳转到指定楼层
1#
发表于 2010-12-21 23:03:48 |只看该作者 |倒序浏览
Hello all ,
我想使用下列一些参数实现浮动盈利分阶段百分比价格回落平仓。,但是我发现下列程序好像存在一些缺陷,望各位大侠及管理员同志给予帮助解答。谢谢!
百分比回落平仓是指在取得最大盈利之后,当盈利回落大于等于设定值,自动进行平仓操作,平仓的价格是满足回落值等于设定值的价格。
当我使用一个IF进行百分比回落平仓是没有问题的,但当多个IF语句集中在一起,总觉得有些不对。
我在使用JAVA 或是BASIC FOX or C语言时有这样一个语句。select case 控制语句,但是我发现TB里面好像没有做进去。如果有这个语句,我想这个问题将迎刃而解。

盈利最大值        回落百分比        回落百分比后的值        满足回落条件的最大值
1000        0.9        900        1000
900        0.9        810        900
800        0.8        640        810
700        0.8        560        640
600        0.7        420        560
500        0.65        325        420
400        0.55        220        325
300        0.5        150        220
200        0.5        100        150
100        0.5        50        100



//------------------------------------------------------------------------
// 简称: StopProfitLoss
// 名称: StopProfitLoss
// 类别: 交易指令
// 类型: 其他
// 输出:
//------------------------------------------------------------------------
Params
Numeric TimeSeconds(10);
Vars

Begin
//A_BuyProfitLoss()获得多单盈亏 A_SellProfitLoss()获得多单盈亏
//GetGlobalVar(6) 获得多单最大盈利值,已在主程序中成功获得此值.



        if (BarStatus==2 and (CurrentTime>0.090000 And CurrentTime<0.150000))
        {
        //下列程序为多单盈利百分比回落平仓
        //>900-1000
                if (A_BuyProfitLoss()*0.9>=900 and GetGlobalVar(6)>=1000)
                {
                        A_SendOrder(Enum_Sell,Enum_Exit,GetGlobalVar(0),Q_BidPrice());//平多单止赢
            SetGlobalVar(0,0);//多单计算器清零
                        SetGlobalVar(6,0);//最大盈利值清零
                        SetGlobalVar(10,TimeSeconds);  //记录下单时间
                        Return;
                }
        //>810-900
                if (A_BuyProfitLoss()*0.9>=810 and GetGlobalVar(6)>=900)
                {
                        A_SendOrder(Enum_Sell,Enum_Exit,GetGlobalVar(0),Q_BidPrice());//平多单止赢
            SetGlobalVar(0,0);//多单计算器清零
                        SetGlobalVar(6,0);//最大盈利值清零
                        SetGlobalVar(10,TimeSeconds);  //记录下单时间
                        Return;
                }
        //>640-810
                if (A_BuyProfitLoss()*0.8>=640 and GetGlobalVar(6)>=800)
                {
                        A_SendOrder(Enum_Sell,Enum_Exit,GetGlobalVar(0),Q_BidPrice());//平多单止赢
            SetGlobalVar(0,0);//多单计算器清零
                        SetGlobalVar(6,0);//最大盈利值清零
                        SetGlobalVar(10,TimeSeconds);  //记录下单时间
                        Return;
                }
        //>560-640
                if (A_BuyProfitLoss()*0.8>=560 and GetGlobalVar(6)>=700)
                {
                        A_SendOrder(Enum_Sell,Enum_Exit,GetGlobalVar(0),Q_BidPrice());//平多单止赢
            SetGlobalVar(0,0);//多单计算器清零
                        SetGlobalVar(6,0);//最大盈利值清零
                        SetGlobalVar(10,TimeSeconds);  //记录下单时间
                        Return;
                }
               
        //>420-560
                if (A_BuyProfitLoss()*0.7>=420 and GetGlobalVar(6)>=600)
                {
                        A_SendOrder(Enum_Sell,Enum_Exit,GetGlobalVar(0),Q_BidPrice());//平多单止赢
            SetGlobalVar(0,0);//多单计算器清零
                        SetGlobalVar(6,0);//最大盈利值清零
                        SetGlobalVar(10,TimeSeconds);  //记录下单时间
                        Return;
                }       
        //>325-420
                if (A_BuyProfitLoss()*0.65>=325 and GetGlobalVar(6)>=500)
                {
                        A_SendOrder(Enum_Sell,Enum_Exit,GetGlobalVar(0),Q_BidPrice());//平多单止赢
            SetGlobalVar(0,0);//多单计算器清零
                        SetGlobalVar(6,0);//最大盈利值清零
                        SetGlobalVar(10,TimeSeconds);  //记录下单时间
                        Return;
                }                               
        //>220-325
                if (A_BuyProfitLoss()*0.55>=325 and GetGlobalVar(6)>=400)
                {
                        A_SendOrder(Enum_Sell,Enum_Exit,GetGlobalVar(0),Q_BidPrice());//平多单止赢
            SetGlobalVar(0,0);//多单计算器清零
                        SetGlobalVar(6,0);//最大盈利值清零
                        SetGlobalVar(10,TimeSeconds);  //记录下单时间
                        Return;
                }       
        //>150-220
                if (A_BuyProfitLoss()*0.6>=150 and GetGlobalVar(6)>=300)
                {
                        A_SendOrder(Enum_Sell,Enum_Exit,GetGlobalVar(0),Q_BidPrice());//平多单止赢
            SetGlobalVar(0,0);//多单计算器清零
                        SetGlobalVar(6,0);//最大盈利值清零
                        SetGlobalVar(10,TimeSeconds);  //记录下单时间
                        Return;
                }               
        //>100-150
                if (A_BuyProfitLoss()*0.5>=100 and GetGlobalVar(6)>=200)
                {
                        A_SendOrder(Enum_Sell,Enum_Exit,GetGlobalVar(0),Q_BidPrice());//平多单止赢
            SetGlobalVar(0,0);//多单计算器清零
                        SetGlobalVar(6,0);//最大盈利值清零
                        SetGlobalVar(10,TimeSeconds);  //记录下单时间
                        Return;
                }               
        //>50-100
                if (A_BuyProfitLoss()*0.5>=50 and GetGlobalVar(6)>=100)
                {
                        A_SendOrder(Enum_Sell,Enum_Exit,GetGlobalVar(0),Q_BidPrice());//平多单止赢
            SetGlobalVar(0,0);//多单计算器清零
                        SetGlobalVar(6,0);//最大盈利值清零
                        SetGlobalVar(10,TimeSeconds);  //记录下单时间
                        Return;
                }                               
               
               
       
        }

End
//------------------------------------------------------------------------
// 编译版本        GS2004.06.12
// 用户版本        2010/12/21 20:46
// 版权所有        zejunl
// 更改声明        TradeBlazer Software保留对TradeBlazer平台
//                        每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------


以下LOG在程序执行过程中的监控信息,其中的GetGlobalVar(6)为获得的最大值.

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

SR1109->A_SendOrder(Enum_Buy,Enum_Entry,1,6945):20101221 09:39:00Buy Order Numer<<↑:1
SR1109->A_SendOrder(Enum_Buy,Enum_Entry,1,6945):20101221 09:39:00Buy Order Numer<<↑:1
N/A
SR1109->A_SendOrder(Enum_Buy,Enum_Entry,0,6941):20101221 09:56:00Buy Order Numer<<↑:0
SR1109->20101221  0.0957GetGlobalVar(6)*10
SR1109->20101221  0.0957GetGlobalVar(6)*20
SR1109->20101221  0.0957GetGlobalVar(6)*30
SR1109->20101221  0.0957GetGlobalVar(6)*40
SR1109->20101221  0.0957GetGlobalVar(6)*50
SR1109->20101221  0.0957GetGlobalVar(6)*60
SR1109->20101221  0.0958GetGlobalVar(6)*70
SR1109->20101221  0.0958GetGlobalVar(6)*80
SR1109->20101221  0.0958GetGlobalVar(6)*90
SR1109->20101221  0.0958GetGlobalVar(6)*100
SR1109->20101221  0.0958GetGlobalVar(6)*110
SR1109->20101221  0.0958GetGlobalVar(6)*120
SR1109->20101221  0.0958GetGlobalVar(6)*130
SR1109->20101221  0.0958GetGlobalVar(6)*140
SR1109->20101221  0.1000GetGlobalVar(6)*150
SR1109->A_SendOrder(Enum_Sell,Enum_Exit,1,6935):20101221 10:08:00GetGlobalVar(6)#150 ↖× Numer:1
SR1109->A_SendOrder(Enum_Buy,Enum_Entry,0,6940):20101221 10:08:00Buy Order Numer<<↑:0
SR1109->A_SendOrder(Enum_Sell,Enum_Exit,1,6935):20101221 10:08:00GetGlobalVar(6)#0 ↖× Numer:1
SR1109->A_SendOrder(Enum_Buy,Enum_Entry,0,6940):20101221 10:09:00Buy Order Numer<<↑:0
SR1109->20101221  0.1011GetGlobalVar(6)*10
SR1109->20101221  0.1012GetGlobalVar(6)*20
SR1109->20101221  0.1012GetGlobalVar(6)*30
SR1109->20101221  0.1012GetGlobalVar(6)*40
SR1109->20101221  0.1012GetGlobalVar(6)*50
SR1109->20101221  0.1013GetGlobalVar(6)*60
SR1109->20101221  0.1013GetGlobalVar(6)*70
SR1109->20101221  0.1030GetGlobalVar(6)*80
SR1109->20101221  0.1031GetGlobalVar(6)*90
SR1109->A_SendOrder(Enum_Sell,Enum_Exit,1,6935):20101221 10:35:00GetGlobalVar(6)#90 ↖× Numer:1
SR1109->A_SendOrder(Enum_Sell,Enum_Exit,1,6935):20101221 10:35:00GetGlobalVar(6)#0 ↖× Numer:1
SR1109->A_SendOrder(Enum_Buy,Enum_Entry,0,6938):20101221 10:36:00Buy Order Numer<<↑:0
SR1109->20101221  0.1037GetGlobalVar(6)*10
SR1109->A_SendOrder(Enum_Sell,Enum_Exit,1,6933):20101221 10:39:00GetGlobalVar(6)#10 ↖× Numer:1
SR1109->A_SendOrder(Enum_Buy,Enum_Entry,0,6939):20101221 13:30:00Buy Order Numer<<↑:0
SR1109->A_SendOrder(Enum_Sell,Enum_Exit,1,6934):20101221 13:30:00GetGlobalVar(6)#0 ↖× Numer:1
SR1109->A_SendOrder(Enum_Buy,Enum_Entry,0,6943):20101221 14:43:00Buy Order Numer<<↑:0
SR1109->A_SendOrder(Enum_Sell,Enum_Exit,1,6937):20101221 14:44:00GetGlobalVar(6)#0 ↖× Numer:1
SR1109->A_SendOrder(Enum_Buy,Enum_Entry,0,6942):20101221 14:44:00Buy Order Numer<<↑:0
SR1109->20101221  0.1444GetGlobalVar(6)*10
SR1109->20101221  0.1444GetGlobalVar(6)*20
SR1109->20101221  0.1444GetGlobalVar(6)*30
SR1109->20101221  0.1444GetGlobalVar(6)*40
SR1109->20101221  0.1444GetGlobalVar(6)*50
SR1109->20101221  0.1445GetGlobalVar(6)*60
SR1109->A_SendOrder(Enum_Sell,Enum_Exit,1,6937):20101221 14:46:00GetGlobalVar(6)#60 ↖× Numer:1
SR1109->A_SendOrder(Enum_Buy,Enum_Entry,0,6942):20101221 14:47:00Buy Order Numer<<↑:0
SR1109->A_SendOrder(Enum_Sell,Enum_Exit,1,6937):20101221 14:48:00GetGlobalVar(6)#0 ↖× Numer:1
SR1109->A_SendOrder(Enum_Buy,Enum_Entry,0,6942):20101221 14:49:00Buy Order Numer<<↑:0
SR1109->20101221  0.1449GetGlobalVar(6)*10
SR1109->20101221  0.1449GetGlobalVar(6)*20
SR1109->20101221  0.1449GetGlobalVar(6)*30
SR1109->20101221  0.1449GetGlobalVar(6)*40
SR1109->20101221  0.1449GetGlobalVar(6)*50
SR1109->20101221  0.1449GetGlobalVar(6)*70
SR1109->20101221  0.1449GetGlobalVar(6)*80
SR110915:58->A_SendOrder(Enum_Sell,Enum_Exit,1,6948):20101221 14:58:00GetGlobalVar(6)#80 ↖× Numer:1
追求卓越,周而复始

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20906
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
2#
发表于 2010-12-22 10:30:38 |只看该作者
//盈利达到1000时,计算盈利的90%的值,保存在0号全局变量中
        if(GetGlobalVar(6)>=1000)
        {
                SetGlobalVar(0,A_BuyProfitLoss()*0.9);
        }
//当当前盈利达到回落百分比的值(900),并且当时最大盈利为1000时,进行平仓发单
        if (A_BuyProfitLoss<=GetGlobalVar(0) and GetGlobalVar(6)>=1000)
        {
                A_SendOrder(Enum_Sell,Enum_Exit,GetGlobalVar(0),Q_BidPrice());//平多单止赢
                SetGlobalVar(0,0);//多单计算器清零
                SetGlobalVar(6,0);//最大盈利值清零
                SetGlobalVar(10,TimeSeconds);  //记录下单时间
                Return;
        }

使用道具 举报

Rank: 4

精华
0
UID
5417
积分
502
帖子
94
主题
40
阅读权限
50
注册时间
2009-9-9
最后登录
2019-3-30
3#
发表于 2010-12-22 13:07:06 |只看该作者
请问楼主,这个LOG文件是如何写的?

使用道具 举报

Rank: 5Rank: 5

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


非常感谢您的回答,我将在接下来的几天测试一下,再一次的感谢。
追求卓越,周而复始

使用道具 举报

Rank: 5Rank: 5

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


只需要使用下列的FileAppend 函数就OK了。

FileAppend
说明 在指定文件中追加一行字符串。
语法 Bool FileAppend(String strPath,String strText)
参数 strPath 指定文件的路径,请使用全路径表示,并使用\\做路径分割符,否则会执行失败
strText 输出的字符串内容  
备注 在指定文件中追加一行字符串,返回值为布尔型。
执行成功返回True,执行失败返回False。  
示例 FileAppend("C:\\Formula.log","Close = "+Text(Close));
追求卓越,周而复始

使用道具 举报

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

bottom

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

GMT+8, 2024-5-21 22:51

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部