以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  交易策略发布专区  (http://weistock.com/bbs/list.asp?boardid=10)
----  移动止盈止损的代码,欢饮大家测试:  (http://weistock.com/bbs/dispbbs.asp?boardid=10&id=163796)

--  作者:msedu
--  发布时间:2018/6/2 12:35:07
--  移动止盈止损的代码,欢饮大家测试:
//参数说明:stpDiff,止损距离;stpLinePeriod,止损移动均线周期;pbDiff,平保距离

input:stpDiff(10,5,50),stpLinePeriod(89,23,255),pbDiff(1,1,10);

stpLinePeriodValue:=ma(c,stpLinePeriod);
cond_exttime:=(currenttime>145900 and currenttime<150000) or (currenttime>232900 and currenttime<233000);

if Not(cond_exttime) Then Begin 
//空仓时初始化变量
If holding=0 Then Begin
stpLongEx:=0; //中间变量,在持有多单时,取移动止损值的时候,只有比上一个止损值更高的价位才会被采用
stpShortEx:=0; //中间变量,在持有空单时,。。。。
stpLong:=0; //多单止损值
stpShort:=0; //空单止损值
End
//多单移动止损
If holding>0  Then Begin
If close>AVGENTERPRICE+stpDiff Then Begin //这里注意处理信号消失的问题
pbValue:=AVGENTERPRICE+pbDiff;
stpValue:=max(pbValue,stpLinePeriodValue[1]);
End
Else Begin
stpValue:=AVGENTERPRICE-stpDiff;
End
If stpValue>stpLongEx or stpLongEx=0 Then Begin
stpLong:=stpValue;
stpLongEx=stpValue;
End
Else Begin
stpLong:=stpLongEx;
End
Sell(1,0,stopr,stpLong);
End
//空单移动止损
If holding<0 Then Begin
if close<AVGENTERPRICE-stpDiff Then Begin //这里注意处理信号消失的问题
pbValue:=AVGENTERPRICE-pbDiff;
stpValue:=min(pbValue,stpLinePeriodValue[1]);
End
Else Begin
stpValue:=AVGENTERPRICE+stpDiff;
End
If stpValue<stpShortEx or stpShortEx=0 Then Begin
stpShort:=stpValue;
stpShortEx:=stpValue;
End
Else Begin
stpShort:=stpShortEx;
End
Sellshort(1,0,stopr,stpShort);
End
End
Else Begin
Sell(holding>0,0,market);
Sellshort(holding<0,0,market);
End

--  作者:cdqwy781
--  发布时间:2018/6/2 23:09:41
--  
好好好谢谢分享能讲解下就更好了