- 精华
- 0
- 在线时间
- 144 小时
- UID
- 7593
- 积分
- 609
- 帖子
- 109
- 阅读权限
- 60
- 注册时间
- 2010-3-19
- 最后登录
- 2014-5-18
- 精华
- 0
- UID
- 7593
- 积分
- 609
- 帖子
- 109
- 主题
- 14
- 阅读权限
- 60
- 注册时间
- 2010-3-19
- 最后登录
- 2014-5-18
|
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 |
|