以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  ”单日亏损70点不再开新仓 “ 怎么编写  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=78682)

--  作者:fanshuai
--  发布时间:2015/5/17 23:37:59
--  ”单日亏损70点不再开新仓 “ 怎么编写
求老师或者大牛帮编写: 股指单日亏损70点不再开仓   以及放在哪个位置需要用变量么?
--  作者:jinzhe
--  发布时间:2015/5/18 9:02:50
--  
所有亏损一共70点吗?还是盈利和亏损一起算之后亏70点
--  作者:fanshuai
--  发布时间:2015/5/18 16:25:02
--  
盈利和亏损一起算之后亏70点  麻烦老师了
--  作者:jinzhe
--  发布时间:2015/5/18 16:40:35
--  

variable:bj=0;

variable:ss=0;

定义全局变量,ss用来记录是否体总体的盈利亏损值,bj用来对亏损超过70之后做标记

 

if 开多条件 and bj=0 and holding=0 then buy......;

if 开空条件  and bj=0 and holding=0 then buyshort......;

所有的开多开空条件都需要这样写,多加一个bj=0的条件

 

 

if 平多条件 and holding>0 then begin

   sell(1,平仓手数,thisclose);

   ss:=ss+exitprice-enterprice;

end

 

if 平空条件 and holding<0 then begin

    sellshort(1,平仓手数,thisclose);

    ss:=ss+enterprce-exitprice;

end

 

所有的平多和平空语句都要这样写:1 条件里面多加一个holding判断 2要多加一句ss赋值

 

 

if ss<=-70 then bj:=1;

当总体亏损过70之后,bj赋值为1,那么开仓条件里面的bj=0 的条件就不满足,从而达到无法开仓的效果

if time=closetime(0) then bj:=0;

收盘之后重新把bj重新赋值为0,不影响第二天的亏损计算


--  作者:fanshuai
--  发布时间:2015/6/2 2:00:27
--  
老师我研究了半天实在解决不了,因为我的是反手日内策略。我代码如下:能否直接帮修改下。就是加上单日亏损超70点不再开新仓这个条件。


MA1:=ema(o,5);
MA2:=ema(o,10);
平空开多条件:=MA1>MA2  and  (HOLDING<=0);
平多开空条件:=MA1<MA2  and (HOLDING>=0);
T1:=((TIME>91500) and  (TIME<151500));
T2:=(TIME>=151500);
开盘开多条件:=MA1>MA2 ;
开盘开空条件:=MA1<MA2 ;
收盘平多:SELL((T2 and  (HOLDING>0)),HOLDING,THISCLOSE);
收盘平空:SELLSHORT((T2 and  (HOLDING<0)),HOLDING,THISCLOSE);
if (开盘开多条件) then BUY(((HOLDING=0) and  T1),开仓手数,THISCLOSE);
if (开盘开空条件) then BUYSHORT(((HOLDING=0) and  T1),开仓手数,THISCLOSE);
if (平空开多条件) then 
begin
SELLSHORT((HOLDING<0),HOLDING,THISCLOSE);
BUY(((HOLDING=0) and  T1),开仓手数,THISCLOSE);
end
if (平多开空条件) then 
begin
SELL((HOLDING>0),HOLDING,THISCLOSE);
BUYSHORT(((HOLDING=0) and  T1),开仓手数,THISCLOSE);
end


--  作者:jinzhe
--  发布时间:2015/6/2 9:13:48
--  

variable:n=0;
variable:bj=0;
MA1:=ema(o,5);
MA2:=ema(o,10);
开仓手数:=1;
平空开多条件:=MA1>MA2  and  (HOLDING<=0);
平多开空条件:=MA1<MA2  and (HOLDING>=0);
T1:=((TIME>91500) and  (TIME<151500));
T2:=(TIME>=151500);
开盘开多条件:=MA1>MA2 ;
开盘开空条件:=MA1<MA2 ;
收盘平多:SELL((T2 and  (HOLDING>0)),HOLDING,THISCLOSE);
收盘平空:SELLSHORT((T2 and  (HOLDING<0)),HOLDING,THISCLOSE);
if (开盘开多条件) and holding=0 and bj=0 then BUY(((HOLDING=0) and  T1),开仓手数,THISCLOSE);
if (开盘开空条件) and holding=0 and bj=0 then BUYSHORT(((HOLDING=0) and  T1),开仓手数,THISCLOSE);
if (平空开多条件) and holding<0  then
begin
SELLSHORT((HOLDING<0),HOLDING,THISCLOSE);
n:=enterprice-exitprice+n;
if n<=-70 then bj:=1;
end
if (平多开空条件) then
begin
SELL((HOLDING>0),HOLDING,THISCLOSE);
n:=n+exitprice-enterprice;
if n<=-70 then bj:=1;
end

if time=closetime(0) then begin
 bj:=0;
 n:=0;
end


--  作者:fanshuai
--  发布时间:2015/6/2 13:56:41
--  
谢谢老师。刚根据老师的修改了,但是好像平空后不会反手了。在下一根K再开空。
图片点击可在新窗口打开查看此主题相关图片如下:信号.png
图片点击可在新窗口打开查看

--  作者:fanshuai
--  发布时间:2015/6/2 13:58:29
--  
说错,是平多后不会反手了,平空也一样不会反手。都是等下一根K线才开仓。
--  作者:jinzhe
--  发布时间:2015/6/2 14:11:42
--  

variable:n=0;
variable:bj=0;
MA1:=ema(o,5);
MA2:=ema(o,10);
开仓手数:=1;
平空开多条件:=MA1>MA2  and  (HOLDING<=0);
平多开空条件:=MA1<MA2  and (HOLDING>=0);
T1:=((TIME>91500) and  (TIME<151500));
T2:=(TIME>=151500);
开盘开多条件:=MA1>MA2 ;
开盘开空条件:=MA1<MA2 ;
收盘平多:SELL((T2 and  (HOLDING>0)),HOLDING,THISCLOSE);
收盘平空:SELLSHORT((T2 and  (HOLDING<0)),HOLDING,THISCLOSE);

if (平空开多条件) and holding<0  then
begin
SELLSHORT((HOLDING<0),HOLDING,THISCLOSE);
n:=enterprice-exitprice+n;
if n<=-70 then bj:=1;
end
if (平多开空条件) then
begin
SELL((HOLDING>0),HOLDING,THISCLOSE);
n:=n+exitprice-enterprice;
if n<=-70 then bj:=1;
end
if (开盘开多条件) and holding=0 and bj=0 then BUY(((HOLDING=0) and  T1),开仓手数,THISCLOSE);
if (开盘开空条件) and holding=0 and bj=0 then BUYSHORT(((HOLDING=0) and  T1),开仓手数,THISCLOSE);
if time=closetime(0) then begin
 bj:=0;
 n:=0;
end