以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  麻烦老师看一下  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=73496)

--  作者:金字塔刀客
--  发布时间:2014/12/24 10:50:32
--  麻烦老师看一下

思路如下:
当收盘价大约MA10,大于MA60,平空开多仓4手,如果收盘价跌破M10,减仓2手,余下多单跌破MA60全部离场,并且收盘价小于MA10,MA60,开空,
谢谢老师。我写了一串老是反复开仓不知道哪里出问题了




Variablea=0;

Variableb=0

MA10:MA(C,10);

MA60:MA(C,60);

Input:tq(3,1,60,1);

Con1:c>ma60 and c>ma10;

Con2:c<ma60 and c<ma10;

abb:=(time0-timetot0(dynainfo(207))<=tq) or not(islastbar);

if abb then begin

if con1 then begin

sellshort(holding<0, 0, market);

 buy(1,4 ,market);

 end

if con2 then begin

sell(holding>0, 0, MARKET);

 buyshort(1 ,4,market);

 end

if c<ma10 then begin  sell (holding>0, 2, market);

a:=1;

end

if c<ma60 then begin sell(holding>0, 0, market);

end

if c>ma10 then begin sellshort  (holding<0, 2, market);

b:=1;

end

 

if c>ma60 hen begin  sellshort  (holding<0, 0, market);

end

end


--  作者:jinzhe
--  发布时间:2014/12/24 11:05:34
--  
一次开好多个还是反手开平仓
--  作者:金字塔刀客
--  发布时间:2014/12/24 11:13:39
--  
只想发出一次信号,现在符合条件,每根K线都发信号
--  作者:jinzhe
--  发布时间:2014/12/24 11:15:01
--  

开仓条件都加上holding=0

比如

buyshort(1 ,4,market);

改成

buyshort(holding=0 ,4,market);


--  作者:金字塔刀客
--  发布时间:2014/12/24 11:30:29
--  
老师您好,开仓已经解决,就是平仓有点问题,多单当收盘价小于MA10减仓指令,只执行一次的全局变量没起作用
--  作者:jinzhe
--  发布时间:2014/12/24 13:32:53
--  

Variable:a=0;

Variable:b=0;

MA10:MA(C,10);

MA60:MA(C,60);

Input:tq(3,1,60,1);

Con1:c>ma60 and c>ma10;

Con2:c<ma60 and c<ma10;

abb:=(time0-timetot0(dynainfo(207))<=tq) or not(islastbar);

if abb then begin

 if con1  then begin

  sellshort(holding<0, 0, market);
  if holding=0 then begin
    buy(holding=0,4 ,market);
    a:=0;
   end

  end

 if con2 then begin

  sell(holding>0, 0, MARKET);
  if holding=0 then begin

    buyshort(holding=0 ,4,market);
    b:=0;
   end

  end

 if c<ma10  and holding>0 and a=0 then begin 
  sell (holding>0, 2, market);

  a:=1;

 end

 if c<ma60 and holding>0  then begin
  sell(holding>0, 0, market);

 end

 if c>ma10 and holding<0  and b=0 then begin
  sellshort  (holding<0, 2, market);

  b:=1;

 end

 

 if c>ma60  and holding<0 then begin 
  sellshort  (holding<0, 0, market);

 end

end