多种止盈止损的统一处理函数 [开拓者 TB]
- 咨询内容:
//------------------------------------------------------------------------
// 简称: DoPosition
// 名称: 处理持仓部位
// 类别: 用户函数
// 类型: 用户函数
// 输出: 字符串
//------------------------------------------------------------------------
Params
Numeric tradState(0); // 当前头寸,1=多,-1=空
Numeric tradCyc(0); // 持仓周期数
Numeric curProfit(0); //持仓当前浮动盈亏
Numeric maxProfit(0); //持仓最大浮盈
Numeric stopLoss(0); //盈利低于此值时止损,为0不判断
Numeric stopProfis(0); //盈利高于此值时止赢,为0不判断
Numeric tracProfis(0); //盈利高于此值后执行追踪止赢,为0不判断
Numeric tracLoss(0); //追踪止盈的回撤值,为0不判断,盈利超过tracProfis后,从最大浮赢回撤tracLoss后止盈
Numeric returnProfis(0); //盈利高于此值后执行回撤止赢,为0不判断
Numeric minProfis(0); //持仓bar数超过maxHoles后,盈利依然小于此值平仓,为0不判断
Numeric maxHolds(0);//最多持仓bar数,为0不判断
Numeric closeTime(1457); //持仓bar的时间超过此时间后清仓
Vars
String str(" ");
Begin
//-------------------------------处理持仓-------------------------------------------
if(tradState != 0 )
{
//价格止损:亏损超过stopLoss-------------------------------------------------
If(stopLoss>0)
{
If(curProfit<=(0-stopLoss) ) str = "止损平仓";
}
//时间止损:持仓超过maxHolds后最大浮动盈亏在正负minProfis之间------------------------------
If(minProfis>0 And maxHolds>0)
{
If(curProfit<=minProfis And tradCyc>=maxHolds ) str = "超时未达盈利平仓";
}
//超时平仓--------------------------------------------------------------
If(closeTime>100)
{
If(Time>=0.0001*closeTime) str = "超过清仓时间平仓";
}
//停板平仓-----------------------------------------------
If(BarStatus==2)
{
if(High==Q_UpperLimit() Or Low==Q_LowerLimit()) str = "停板平仓";
}
Else
{
if(High==Low And High==Close And High[1]==Low[1] And High[2]==Low[2]) str = "停板平仓";
}
//价格止盈:盈利超过stopProfis-----------------------------------------------
If(stopProfis>0)
{
If(curProfit>=stopProfis ) str = "止盈平仓";
}
//跟踪止盈:盈利超过tracProfis后回撤超过tracLoss平仓---------------------------
If(tracLoss>0 And tracProfis>0)
{
If((maxProfit-curProfit)>=tracLoss And maxProfit>tracProfis) str = "跟踪止盈平仓";
}
//回撤止盈:盈利超过returnProfis后回撤平仓-------------------------------------
If(returnProfis>0 And maxProfit>0.9*returnProfis)
{
If(maxProfit>0.9*returnProfis And maxProfit<=1.1*returnProfis And curProfit<=0.1*maxProfit) str = "盈利回撤止盈平仓1倍90%";
If(maxProfit>1.1*returnProfis And maxProfit<=2*returnProfis And curProfit<=0.5*maxProfit) str = "盈利回撤止盈平仓1-2倍50%";
If(maxProfit>2*returnProfis And maxProfit<=3*returnProfis And curProfit<=0.6*maxProfit) str = "盈利回撤止盈平仓2-3倍40%";
If(maxProfit>3*returnProfis And maxProfit<=4*returnProfis And curProfit<=0.7*maxProfit) str = "盈利回撤止盈平仓3-4倍30%";
If(maxProfit>4*returnProfis And maxProfit<=5*returnProfis And curProfit<=0.8*maxProfit) str = "盈利回撤止盈平仓4-5倍20%";
If(maxProfit>6*returnProfis And curProfit<=0.9*maxProfit) str = "盈利回撤止盈平仓大于6倍10%";
}
}
Return str;
End
//------------------------------------------------------------------------
// 编译版本 GS2004.06.12
// 用户版本 2009/04/15 21:11
// 版权所有 fish0451
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
// 每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------ - TB技术人员:
是用户函数,配合“较完善的日内交易系统框架”使用,注意返回值是“字符串”
- TB客服:
离楼主很近
沙个发 - 网友回复:
顶楼主,
好久没有见到这么勇于共享的人了。 - 网友回复:
顶一个,好贴!!! 顶一个,好贴!!!
如果以上指标公式不适用于您常用的行情软件
或者您想改编成选股公式,以便快速选出某种形态个股的话,
相关文章
-
没有相关内容