Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共18 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:[求助]公式编译出错

1楼
利期 发表于:2014/3/19 11:18:47

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20140319111311.jpg
图片点击可在新窗口打开查看

  我将
//赚3保1
复制多了一遍执行
 //赚7保2
两者意思一样的,赋值不同而已,
一个策略组,应该是单独判断执行的吧。
为什么会出现,下一段语句 END 语句前缺少 BEGIN呢。
这个问题如何编写?


2楼
jinzhe 发表于:2014/3/19 11:26:30
多了个end或者说少了个begin,你看看哪里少了或者多了
3楼
利期 发表于:2014/3/19 12:33:00
不多不少吧。原封不动,只是复制多了一段   //赚3保1   策略,没有进行其他的任何删减啊。。代码都显示在那,你看是哪里少了或者多了什么。实在不明。
4楼
利期 发表于:2014/3/19 12:35:15
可以了,删了一个END。
5楼
利期 发表于:2014/3/19 12:37:32
ENTERPRICE这个函数,是指标形成交易条件时的开仓价?还是账户上面的实际开仓价?
如果要采用账户上的成交均价,用哪个函数?
[此贴子已经被作者于2014/3/19 12:37:49编辑过]
6楼
jinzhe 发表于:2014/3/19 13:14:53
图表取不到实际开仓价,enterprice获取的是图表上的信号理论开仓价
7楼
利期 发表于:2014/3/19 14:56:48
关于止损后再开仓,VARIABLE  变量赋值,没法解决,想到一种条件式COUNT,或循环条件CONTINUE ,满足首先执行前面的各种平仓作为先决条件,之后符合新条件形成再执行,新的开仓,如何编法呢?
下面编的,没有任何信号了。

BUY1:=ND>XD;
SELL1:=ND<XD;

//持有多单

 IF HOLDING>0 and enterbars>0 THEN BEGIN
  IF SELL1 THEN BEGIN  {平多单}
  多平:SELL(1,0,MARKET),ORDERQUEUE;
 END

 //多单管理
 //多单止损
 IF HOLDING>0 and enterbars>0 and ENTERPRICE-C>=ZSDS THEN BEGIN
  多损:SELL(1,0,MARKET),ORDERQUEUE;
 END
 
 //移动止盈
 IF YDZY=1 THEN BEGIN
  //每周期判断是否创新高
  IF H>HIGHPRICE THEN BEGIN
   HIGHPRICE:=H;
   dwin:=HIGHPRICE-ENTERPRICE;
  END 

 //赚3保1
  IF Z3B1=1 THEN BEGIN
   IF HOLDING>0 and enterbars>0 and dwin>=3 THEN BEGIN
    IF H-ENTERPRICE<=0.8 THEN BEGIN
     多保1:SELL(1,0,MARKET);
    END
   END
  END
 END
 

 //赚7保2
  IF Z3B1=1 THEN BEGIN
   IF HOLDING>0 and enterbars>0 and dwin>=7 THEN BEGIN
    IF H-ENTERPRICE<=2 THEN BEGIN
     多保2:SELL(1,0,MARKET);
    END
   END
  END

 

 //赚10保3
  IF Z3B1=1 THEN BEGIN
   IF HOLDING>0 and enterbars>0 and dwin>=10 THEN BEGIN
    IF H-ENTERPRICE<=3 THEN BEGIN
     多保3:SELL(1,0,MARKET);
    END
   END
  END

 
  //如果盈利超过15点之后回撤达到7点,就平仓,保住盈利
 IF HOLDING>0 and enterbars>0 and dwin>=15 THEN BEGIN
  IF HIGHPRICE-H>=7 THEN BEGIN  //回撤超过3点
   多赢1:SELL(1,0,MARKET);
   END 
  END 


  //如果盈利超过20点之后回撤达到10点,就平仓,保住盈利
 IF HOLDING>0 and enterbars>0 and dwin>=20 THEN BEGIN
  IF HIGHPRICE-H>=10 THEN BEGIN  //回撤超过3点
   多赢2:SELL(1,0,MARKET);
   END 
  END 

 
     //如果盈利超过30点之后回撤达到8点,就平仓,保住盈利
 IF HOLDING>0 and enterbars>0 and dwin>=30 THEN BEGIN
  IF HIGHPRICE-H>=8 THEN BEGIN  //回撤超过3点
   多赢3:SELL(1,0,MARKET);
   END 
  END 


//开空单
if 多平 or 多损 or 多保1 or 多保2 or 多保3 or 多赢1 or 多赢2 or 多赢3 THEN BEGIN
IF HOLDING=0 AND TIME<151300 THEN BEGIN
  IF SELL1 THEN BEGIN
   空开:BUYSHORT(1,1,MARKET),ORDERQUEUE;
   LOWPRICE:=ENTERPRICE;
   END 
  END
 END
END
//持有空单
IF holding<0 and enterbars>0 THEN BEGIN
 IF BUY1 THEN BEGIN   //平空单
  空平:SELLSHORT(1,0,MARKET);
 END

 //空单止损
 IF holding<0 and enterbars>0 and C-ENTERPRICE>=ZSDS THEN BEGIN
  空损:SELLSHORT(1,0,MARKET);
 END
 
 //移动止盈
 IF YDZY=1 THEN BEGIN
  //每周期判断是否创新低
  IF L<LOWPRICE THEN BEGIN
   LOWPRICE:=L;
   kwin:=ENTERPRICE-LOWPRICE;
  END 
  
  //赚5保1
IF holding<0 and enterbars>0 and kwin>=3 THEN BEGIN
 IF Z3B1=1 THEN BEGIN
   IF ENTERPRICE-L<=0.8 THEN BEGIN
    空保1:SELLSHORT(1,0,MARKET);
   END
  END
 END
END  

  //赚7保2
IF holding<0 and enterbars>0 and kwin>=7 THEN BEGIN
 IF Z3B1=1 THEN BEGIN
   IF ENTERPRICE-L<=2 THEN BEGIN
    空保2:SELLSHORT(1,0,MARKET);
   END
  END
 END
END


//赚10保3
IF holding<0 and enterbars>0 and kwin>=10 THEN BEGIN
 IF Z3B1=1 THEN BEGIN
   IF ENTERPRICE-L<=3 THEN BEGIN
    空保3:SELLSHORT(1,0,MARKET);
   END
  END
 END


  //如果盈利超过15点之后回撤达到7点,就平仓,保住盈利
  IF holding<0 and enterbars>0 and kwin>=15 THEN BEGIN
   IF L-LOWPRICE>=7 THEN BEGIN  //回撤超过3点
    空赢1:SELLSHORT(1,0,MARKET);
   END 
  END 

  //如果盈利超过20点之后回撤达到10点,就平仓,保住盈利
  IF holding<0 and enterbars>0 and kwin>=20 THEN BEGIN
   IF L-LOWPRICE>=10 THEN BEGIN  //回撤超过3点
    空赢2:SELLSHORT(1,0,MARKET);
   END 
  END 

  //如果盈利超过30点之后回撤达到8点,就平仓,保住盈利
  IF holding<0 and enterbars>0 and kwin>=30 THEN BEGIN
   IF L-LOWPRICE>=8 THEN BEGIN  //回撤超过3点
    空赢3:SELLSHORT(1,0,MARKET);
   END 
  END
  
//开多单
if 空平 or 空损 or 空保1 or 空保2 or 空保3 or 空赢1 or 空赢2 or 空赢3 THEN BEGIN
 IF HOLDING=0 AND TIME<151300 THEN BEGIN
  IF BUY1 THEN BEGIN
   多开:BUY(1,1,MARKET);
   HIGHPRICE:=ENTERPRICE;  //将开仓价保存到最高价
  END
 END
END

 //日内平仓
IF TIME>=151000 THEN BEGIN
 收盘清多:SELL(1,0,MARKET);
 收盘清空:SELLSHORT(1,0,MARKET);
END
8楼
jinzhe 发表于:2014/3/19 15:02:14
你的代码已经没有全局变量了,也就是开平没有信号那么就说明你的开平仓条件没有成立,而不是其他什么的问题,你找找条件是否满足
9楼
利期 发表于:2014/3/19 15:06:08
//开空单
if 多平 or 多损 or 多保1 or 多保2 or 多保3 or 多赢1 or 多赢2 or 多赢3 THEN BEGIN
  IF SELL1 THEN BEGIN

   空开:BUYSHORT(1,1,MARKET),ORDERQUEUE;

这样,如止盈多单后的,同时却符合合多条件BUY1  ,不会再开当前条件多仓,等到SELL1 再 空开:

//开多单
if 空平 or 空损 or 空保1 or 空保2 or 空保3 or 空赢1 or 空赢2 or 空赢3 THEN BEGIN
  IF BUY1 THEN BEGIN

   多开:BUY(1,1,MARKET);

反之亦然       止盈空单后的,同时却答合空条件SELL1  ,不会再开当前条件空仓,等到BUY1 ,再多开。


循环检测条件再执行,如何编写呢?
10楼
jinzhe 发表于:2014/3/19 15:11:20
平多后不开同方向单只能开反方向单?
共18 条记录, 每页显示 10 条, 页签: [1] [2]


Powered By Dvbbs Version 8.3.0
Processed in 0.04492 s, 3 queries.