以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  如一天时间内交易5次如何写?  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=67180)

--  作者:qq代人发帖
--  发布时间:2014/7/9 11:33:12
--  如一天时间内交易5次如何写?
客服:论坛上公式每天交易次数限制,我发现是以主图K线信号来算的,
可是看盘时我要限制主图k线,因为我用的是多笔主图,这样才能运行快点。
限制了k线数量,前面信号就没了不见了,每天交易次数限制就没用了不准了。
有没有别的办法可以限制k线数量时还能限制每天交易次数。如一天时间内交易5次如何写?
[此贴子已经被作者于2014/7/9 11:33:50编辑过]

--  作者:FexTel
--  发布时间:2014/7/9 11:39:43
--  
1,图表是根据历史交易情况处理的。控制在日内把
--  作者:qq代人发帖
--  发布时间:2014/7/9 11:40:27
--  

图标从图上加载的第一根k线开始计算,图上的k线数量限制不能影响正常交易

一天内交易5次,用全局变量做下限制

VARIABLE:n:=0;
if cond and n<=5 then
BEGIN
buy();
n:=n+1;
ENTERLONG
if time=CLOSETIME(0) then n:=0;


--  作者:平淡啊
--  发布时间:2014/7/9 12:08:12
--  
这样啊,我再看看,看准点
--  作者:平淡啊
--  发布时间:2014/7/9 13:23:59
--  
不行啊,总是不停地开平仓,你帮我看看这样写对了没有?在开多与开空处加入nnf<10.

VARIABLE:DUOKONG=0;
TSFS:=0;     {停损反手,1-反手 0-不反手}
ORDVOL:=1;     {开仓手数}
ZSDS:=2;     {止损点数}
//以下变量用于移动止盈,,移动止盈只能保证你尽可能稳健盈利,却不能保证盈利最大化,如果不想使用,可是将总开关设置为0
VARIABLE:YDZY=1;     {移动止盈总开关,1为开,0为关}
VARIABLE:HIGHPRICE=0,LOWPRICE=0; {保存开仓后的最高价、最低价}
VARIABLE:DHCDS=2,KHCDS=2;   {多、空单回撤点数}
VARIABLE:DYLDS=30,KYLDS=30;   {多、空单盈利点数,当盈利点数达到这个标准后,如果回撤达到上面的参数值就平仓}
VARIABLE:Z3B1:=1;     {赚3保1开关}
VARIABLE:nnf:=0; 
DUOKONG:=1;


//持有空单
IF HOLDING<0 THEN BEGIN
 IF 空头平仓 THEN BEGIN   //平空单
  空平:SELLSHORT(1,0,MARKET),COLORWHITE;
 END
 
 //止损
 IF C-ENTERPRICE>=ZSDS THEN BEGIN
  空损:SELLSHORT(1,0,MARKET),colorgreen;
 END
 
 //移动止盈
 IF YDZY=1 THEN BEGIN
  //每周期判断是否创新低
  IF L<LOWPRICE THEN BEGIN
   LOWPRICE:=L;
  END 
  
  //如果盈利超过10点之后回撤达到3点,就平仓,保住盈利
  IF ENTERPRICE-LOWPRICE>=KYLDS THEN BEGIN
   IF L-LOWPRICE>=KHCDS THEN BEGIN  //回撤超过3点
    空赢:SELLSHORT(1,0,MARKET);
   END 
  END 
 END
 
 //赚3保1
 IF Z3B1=1 THEN BEGIN
  IF ENTERPRICE-LOWPRICE>=5 THEN BEGIN
   IF ENTERPRICE-L<=1.2 THEN BEGIN
    空保:SELLSHORT(1,0,MARKET),COLORMAGENTA;
   END
  END
 END
END

//开多单

IF HOLDING=0 THEN BEGIN
 IF DUOKONG=1 OR DUOKONG=2 THEN BEGIN
  IF 多头开仓  and time<143000 and nnf<10 THEN BEGIN
   多开:BUY(1=1,30%,MARKET),ColorYELLOW;
   nnf:=nnf+1;
   if time=CLOSETIME(0) then nnf:=0;
   HIGHPRICE:=ENTERPRICE;  //将开仓价保存到最高价
 
  END 
 END
END
//持有多单
IF HOLDING>0 THEN BEGIN
 IF 多头平仓 THEN BEGIN  {平多单}
  多平:SELL(1,0,MARKET),COLORWHITE; 
 END
 
 //多单管理
 //止损
 IF ENTERPRICE-C>=ZSDS THEN BEGIN
  多损:SELL(1,0,MARKET),colorgreen;
 END
 //移动止盈
 IF YDZY=1 THEN BEGIN
  //每周期判断是否创新高
  IF H>HIGHPRICE THEN BEGIN
   HIGHPRICE:=H;
  END 
 
  //如果盈利超过10点之后回撤达到3点,就平仓,保住盈利
  IF HIGHPRICE-ENTERPRICE>=DYLDS THEN BEGIN
   IF HIGHPRICE-H>=DHCDS THEN BEGIN  //回撤超过3点
    多赢:SELL(1,0,MARKET);
   END 
  END 
 END
 //赚3保1
 IF Z3B1=1 THEN BEGIN
  IF HIGHPRICE-ENTERPRICE>=5   THEN BEGIN
   IF H-ENTERPRICE<=1.2 THEN BEGIN
    多保:SELL(1,0,MARKET),COLORMAGENTA;
   END
  END
 END
END


//开空单
IF HOLDING=0 THEN BEGIN
 IF DUOKONG=1 OR DUOKONG=3 THEN BEGIN
  IF 空头开仓  and time<143000 and nnf<10  THEN BEGIN
   空开:BUYSHORT(1=1,30%,MARKET),colorgreen;
   nnf:=nnf+1;
if time=CLOSETIME(0) then nnf:=0;
   LOWPRICE:=ENTERPRICE;
  END 
 END
END



//日内平仓
IF TIME>=150500 THEN BEGIN
 收盘平多:SELL(1,HOLDING,MARKET);
 收盘平空:SELLSHORT(1,HOLDING,MARKET);
END


--  作者:平淡啊
--  发布时间:2014/7/9 13:26:51
--  
/开多单

IF HOLDING=0 THEN BEGIN
 IF DUOKONG=1 OR DUOKONG=2 THEN BEGIN
  IF 多头开仓  and time<143000 and nnf<10 THEN BEGIN
   多开:BUY(1=1,30%,MARKET),ColorYELLOW;
   nnf:=nnf+1;
   if time=CLOSETIME(0) then nnf:=0;//这里对了没有
   HIGHPRICE:=ENTERPRICE;  //将开仓价保存到最高价

/开空单
IF HOLDING=0 THEN BEGIN
 IF DUOKONG=1 OR DUOKONG=3 THEN BEGIN
  IF 空头开仓  and time<143000 and nnf<10  THEN BEGIN
   空开:BUYSHORT(1=1,30%,MARKET),colorgreen;
   nnf:=nnf+1;
if time=CLOSETIME(0) then nnf:=0;
   LOWPRICE:=ENTERPRICE;
  END 
 
[此贴子已经被作者于2014/7/9 13:27:34编辑过]

--  作者:平淡啊
--  发布时间:2014/7/9 13:29:53
--  

简单点,帮写完整这个吧。开空+开多仓=10次一天。

bb:ema(c,5),linethick3;
cc:ema(c,25),COLORMAGENTA,linethick3;



KD:=cross(bb,cc);          //开多条件
PD:=bb<cc and c<cc;            //平多条件
KK:=cross(cc,bb);          //开空条件
PK:=bb>cc and c>cc;          //平空条件


平空:SELLSHORT(PK,1,THISCLOSE);                  //平空信号
开多:BUY(KD AND HOLDING=0,1,THISCLOSE);          //开多信号
平多:SELL(PD,1,THISCLOSE);                       //平多信号
开空:BUYSHORT(KK AND HOLDING=0,1,THISCLOSE);     //开空信号


--  作者:FexTel
--  发布时间:2014/7/9 13:37:06
--  

1,输出下NNF的值,看下每次交易后值是不是递增的

2,另外交易的是什么品种?time取值是否正常