以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  金字塔软件自带例子中海龟交易策略的buyorderthisbar函数的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=157306)

--  作者:死亡旋律
--  发布时间:2017/8/26 19:49:01
--  金字塔软件自带例子中海龟交易策略的buyorderthisbar函数的问题
管理员好,最近在学习金字塔软件,在里面看到系统自带的双向海龟系统示范模型里面有一个问题,谢谢。
在示范程序的一开始这里buyorderthisbar变量被声明并赋值为零。
 
//声明变量
NT := 1 ;     //调试信息带时间戳
BUYORDERTHISBAR := 0 ;  //当前BAR有过交易

 在下列程序中,多头进场成功后,buyorderthisbar被赋值为1。。。
  //建立多头进场条件
 LONG := H > T20HI ;
 
 //多头进场
 IF LONG THEN BEGIN
  MYENTRYPRICE := IF(OPEN>T20HI+MINDIFF ,OPEN ,T20HI+MINDIFF ) ;   
  BUY( _DEBUG,POSNUM,LIMITR,MYENTRYPRICE);
  POSITION := 1 ;
  TURTLEUNITS := 1 ;
  N := AVGTR ;
  BUYORDERTHISBAR := 1;

 END //IF



下列程序中,多头加仓成功,buyorderthisbar也是被赋值为1;

 
 WHILE (HIGH>MYENTRYPRICE+0.5*N) AND TURTLEUNITS<4 DO BEGIN
  MYENTRYPRICE := IF(OPEN>MYENTRYPRICE+0.5*N ,OPEN ,MYENTRYPRICE+0.5*N ) ;
  MYENTRYPRICE := CEILING(MYENTRYPRICE/MINDIFF)*MINDIFF ; 
  BUY( _DEBUG, POSNUM, LIMITR, MYENTRYPRICE);
  TURTLEUNITS := TURTLEUNITS+1 ;
  BUYORDERTHISBAR := 1;

 END //WHILE 
 


以上是程序中多头对buyorderthisbar的所有赋值。。我现在面临的疑问是多头离场条件中:

LONGX1 := (LOW < T10LO)  ;
 
 IF LONGX1 AND BUYORDERTHISBAR=0 THEN BEGIN
  MYEXITPRICE := IF(OPEN<T10LO-MINDIFF ,OPEN ,T10LO-MINDIFF ) ;   
  SELL( _DEBUG ,0,LIMITR,MYEXITPRICE);
  POSITION := 0 ;
  TURTLEUNITS := 0 ;
 END


多头离场条件中,buyorderthisbar的判断条件是等于0,,,可是在之前的对buyorderthisbar的赋值中,都是在建立多头仓位或者加仓后,都赋值为1。。而只有在建仓和加仓都是成功的之后才能离场,所以这里的buyorderthisbar的判断条件似乎应该是1。。。。。这里我看了好几次没看懂,初次学习编程方面的东西,麻烦管理员帮忙解释一下,谢谢。。

 

PS:上面的所有程序片段都来自于金字塔软件自带的 交易系统——》系统交易——》双向海龟交易策略 里面的程序例子。


--  作者:wenarm
--  发布时间:2017/8/27 17:49:36
--  
这个是笔误,就是你理解的样子,这个平仓条件中应该是1
--  作者:zhong.jie
--  发布时间:2017/9/18 1:20:09
--  
buyorderthisba在这里是个普通变量,第N根K线开仓,置为1,等第N+1根K线开始的时候又会重置为0,如果第N+1根K线有加仓才会又置为1,不加仓,还是0,如此循环下去。。。
当前K线没有开仓动作这个变量就是0;假如前面开了仓,走到后面某根K线没有达到开加仓条件反而到了止损位,而平仓条件却是变量为1那就没法平仓止损。。。

--  作者:wenarm
--  发布时间:2017/9/18 8:37:13
--  

抱歉,2楼回复有误。

BUYORDERTHISBAR 的作用是用于判断当前k线位置是否有开仓动作。作用域仅限在当前k线,目的是防止同一根k上出现开平两个动作。

POSITION是全局变量用于记录仓位的状态。