以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [分享]文华的止损策略写成的金字塔源码  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=2737)

--  作者:ch3coohqb
--  发布时间:2010/9/6 17:14:55
--  [分享]文华的止损策略写成的金字塔源码

//限价止损
{IF  h>=ENTERPRICE+D*mindiff and HOLDING<0 THEN BEGIN//D---D个价位止损
SELLshort(HOLDING<0,HOLDING,stopr,ENTERPRICE+D*mindiff);//止空
END;
IF  l<=ENTERPRICE-D*mindiff and HOLDING>0 THEN BEGIN//D---D个价位止损
SELL(HOLDING>0,HOLDING,stopr,ENTERPRICE-D*mindiff);//止多
END;}

//追踪止损
{
stps:ref(if(holding<0,if(enterprice-llv(l,openbar)>=mindiff*step,enterprice+d*mindiff-CEILING((enterprice-llv(l,openbar))/mindiff/step)*step*mindiff,enterprice+d*mindiff),drawnull),1);
stpl:ref(if(holding>0,if(hhv(h,openbar)-enterprice>=mindiff*step,floor(((hhv(h,openbar)-enterprice)/mindiff/step))*step*mindiff+enterprice-d*mindiff,enterprice-d*mindiff),drawnull),1);

IF h>=stps and HOLDING<0 THEN BEGIN//D---D个价位止损;step---步长;stps----空单止损位;
SELLshort(HOLDING<0,HOLDING,stopr,stps);//止空
END;
IF l<=stpl THEN BEGIN//D---D个价位止损;step---步长;stpl----多单止损位;
SELL(HOLDING>0,HOLDING,stopr,stpl);//止多
END;
}


//限价止损+追踪止盈
{
stps:ref(if(holding<0,if(llv(l,openbar)>=enterprice-dd*mindiff-step*mindiff,enterprice+d*mindiff,llv(l,openbar)+step*mindiff),drawnull),1);
stpl:ref(if(holding>0,if(hhv(h,openbar)<=enterprice+dd*mindiff+step*mindiff,enterprice-d*mindiff,hhv(h,openbar)-step*mindiff),drawnull),1);

IF h>=stps and HOLDING<0 THEN BEGIN//D---D个价位止损;step---步长;stps----空单止损位;dd---dd个价位止盈;
SELLshort(HOLDING<0,HOLDING,stopr,stps);//止空
END;
IF l<=stpl THEN BEGIN//D---D个价位止损;step---步长;stpl----多单止损位;dd---dd个价位止盈;
SELL(HOLDING>0,HOLDING,stopr,stpl);//止多
END;
}


--  作者:fly
--  发布时间:2010/9/6 17:18:31
--  
很不错,顶~~~
--  作者:ch3coohqb
--  发布时间:2010/9/26 17:20:45
--  

input:d(20,5,60,1);
input:dd(5,5,60,1);
input:step(20,5,40,1);

ma1:ma(c,10);
ma2:ma(c,20);
buy(holding=0 and cross(ma1,ma2),thisclose);


stps:ref(if(holding<0 and openbar>=0,if(enterprice-llv(l,openbar+1)>=mindiff*step,enterprice+d*mindiff-CEILING((enterprice-llv(l,openbar+1))/mindiff/step)*step*mindiff,enterprice+d*mindiff),drawnull),1);
stpl:ref(if(holding>0 and openbar>=0,if(hhv(h,openbar+1)-enterprice>=mindiff*step,floor(((hhv(h,openbar+1)-enterprice)/mindiff/step))*step*mindiff+enterprice-d*mindiff,enterprice-d*mindiff),drawnull),1);

IF h>=stps and HOLDING<0 THEN BEGIN//D---D个价位止损;step---步长;stps----空单止损位;
SELLshort(HOLDING<0,HOLDING,stopr,stps);//止空
END;
IF l<=stpl THEN BEGIN//D---D个价位止损;step---步长;stpl----多单止损位;
SELL(HOLDING>0,HOLDING,stopr,stpl);//止多
END;


开仓历时:openbar,linethick0;
test:hhv(h,openbar+1),linethick0;


 

==================

主贴的源码有点问题~

主要出在开仓后第一个周期openbar返回0结果HHV求出的是所有周期的最大值...

我以前写好的是用enterbars的后来改的不见了~

上面这个源码仅用于测试...

 

大家用之前先看看文华的策略介绍

然后再仔细看下这个源码是如何运算的..