以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  当条件成立时,回溯另一指标到条件成立的周期  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=60393)

--  作者:gsqh_zyp
--  发布时间:2013/12/27 11:18:34
--  当条件成立时,回溯另一指标到条件成立的周期

请教老师:

开仓条件h>h20,

当h>h20时,如果前20周期内有pm<-20 or mp <-20时,则以h>h20作为开仓信号。这个怎么写,谢谢!


--  作者:jinzhe
--  发布时间:2013/12/27 11:24:08
--  
if barslast(pm<-20)<=20 or barslast(mp<-20)<=20 and h>h20  then 开仓语句;
--  作者:gsqh_zyp
--  发布时间:2013/12/27 16:13:05
--  

RUNMODE:0;

INPUT : n(20,1,100,1);
INPUT : p(14,1,100,1);

tr1 := sum(max(max(high - low,abs(high-ref(close,1))),abs(low - ref(close, 1))),p); 
hd := high - ref(high, 1);
ld := ref(low, 1) - low; 
dmp := sum(if(hd>0 and hd>ld,hd,0),p);
dmm := sum(if(ld>0 and ld>hd,ld,0),p);
pdi := ma(dmp*100/tr1,18);
mdi := ma(dmm*100/tr1,18); 
pm := pdi-mdi;
mp := mdi-pdi;

h20 := ref(hhv(high,n),1);
l20 := ref(llv(low,n),1);


//当最高价突破20周期内的最高点时,前20个周期内出现PM或MP小于-20,则以h>h20作为买入信号;
if h>h20 and barslast(pm<-20)<=20 or barslast(mp<-20)<=20 then
begin
sellshort(holding<0,0,thisclose);
buy(holding=0,1,thisclose);
end

//当最低价突破20周期内的最低点时,前20个周期内出现PM或MP小于-20,则以l<l20作为卖出信号;
if l<l20 and barslast(pm<-20)<=20 or barslast(mp<-20)<=20 then
begin
sell(holding>0,0,thisclose);
buyshort(holding=0,1,thisclose);
end

//账户信息:
资产:ASSET,NOAXIS,COLORRED,LINETHICK2;
可用现金:CASH(0),PRECISION0,NOAXIS,LINETHICK0;
持仓:HOLDING,LINETHICK0;
胜率:PERCENTWIN,LINETHICK0;
交易次数:TOTALTRADE,LINETHICK0;


--  作者:gsqh_zyp
--  发布时间:2013/12/27 16:16:07
--  


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20131227161452.jpg
图片点击可在新窗口打开查看
老师,请问为是很多地方一根K线同时出现买卖信号。麻烦帮调试下,是什么原因。谢谢!


--  作者:jinzhe
--  发布时间:2013/12/27 16:38:14
--  

RUNMODE:0;

INPUT : n(20,1,100,1);
INPUT : p(14,1,100,1);

tr1 := sum(max(max(high - low,abs(high-ref(close,1))),abs(low - ref(close, 1))),p); 
hd := high - ref(high, 1);
ld := ref(low, 1) - low; 
dmp := sum(if(hd>0 and hd>ld,hd,0),p);
dmm := sum(if(ld>0 and ld>hd,ld,0),p);
pdi := ma(dmp*100/tr1,18);
mdi := ma(dmm*100/tr1,18); 
pm := pdi-mdi;
mp := mdi-pdi;

h20 := ref(hhv(high,n),1);
l20 := ref(llv(low,n),1);


//当最高价突破20周期内的最高点时,前20个周期内出现PM或MP小于-20,则以h>h20作为买入信号;
if h>h20 and (barslast(pm<-20)<=20 or barslast(mp<-20)<=20) then
begin
sellshort(holding<0,0,thisclose);
buy(holding=0,1,thisclose);
end

//当最低价突破20周期内的最低点时,前20个周期内出现PM或MP小于-20,则以l<l20作为卖出信号;
if l<l20 and (barslast(pm<-20)<=20 or barslast(mp<-20)<=20) then
begin
sell(holding>0,0,thisclose);
buyshort(holding=0,1,thisclose);
end

//账户信息:
资产:ASSET,NOAXIS,COLORRED,LINETHICK2;
可用现金:CASH(0),PRECISION0,NOAXIS,LINETHICK0;
持仓:HOLDING,LINETHICK0;
胜率:PERCENTWIN,LINETHICK0;
交易次数:TOTALTRADE,LINETHICK0;


--  作者:jinzhe
--  发布时间:2013/12/27 16:38:44
--  
改了一个括号,金字塔计算的原则导致了AND和OR的计算顺序没有按照我的预期来计算,所以我就加了一个括号来限定