以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  同根K线平仓即反手无法实现  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=61186)

--  作者:勇敢的心
--  发布时间:2014/1/22 14:31:10
--  同根K线平仓即反手无法实现
//声明参数
INPUT : T20(20,15,60,1) ;
INPUT : ATRLEN(20,15,30,1) ;
INPUT : POSNUM(1,1,200,1) ;
INPUT : M(30,1,100,5);


//声明变量
NT := 1 ; //调试信息带时间戳
BUYORDERTHISBAR := 0 ; //当前BAR有过交易
VARIABLE:回溯值1:=20;        //定义全局变量
VARIABLE:回溯值2:=10;        //定义全局变量

VARIABLE : _DEBUG = 1 ; //是否输出前台交易指令
VARIABLE : _TDEBUG = 1 ; //是否输出后台交易指令
VARIABLE : _DEBUGOUT = 0 ; //是否输出后台交易的调试信息

VARIABLE : MYENTRYPRICE =0 ; //开仓价格
VARIABLE : MYEXITPRICE =0 ; //平仓价格

VARIABLE : TURTLEUNITS=0 ; //交易单位
VARIABLE : POSITION=0 ; //仓位状态
//0表示没有仓位,1表示持有多头, -1表示持有空头

VARIABLE : T20HI=CLOSE; //20周期的高点
VARIABLE : T20LO=CLOSE; //20周期的低点


//计算交易系统主要条件

T20HI := REF(HHV(H,T20),1) ;
T20LO := REF(LLV(L,T20),1) ;

AVGTR :=  REF(MA(TR,ATRLEN),1) ;

//开始执行时 初始化数据
IF BARPOS=1 THEN BEGIN
//POSITION := 0 ;

END //IF

//如果当前是空头持仓的状态
IF  BARPOS>T20 AND H>L THEN BEGIN

//建立平空做多进场条件
LONG := H > T20HI ;
//平空做多
IF LONG AND POSITION=-1  THEN BEGIN
MYENTRYPRICE := IF(OPEN>T20HI+MINDIFF ,OPEN ,T20HI+MINDIFF ) ;
SELLSHORT( _DEBUG,POSNUM,LIMITR,MYENTRYPRICE);
BUY( _DEBUG,POSNUM,LIMITR,MYENTRYPRICE);
POSITION := 1 ;
TURTLEUNITS := 1 ;
N := AVGTR ;
BUYORDERTHISBAR := 1;

END //IF


//建立平多做空进场条件
SHORT := L < T20LO ;
//平多做空
IF SHORT AND POSITION=1 THEN BEGIN
MYENTRYPRICE := IF(OPEN<T20LO-MINDIFF ,OPEN ,T20LO-MINDIFF ) ;
SELL( _DEBUG,POSNUM,LIMITR,MYENTRYPRICE);
BUYSHORT( _DEBUG,POSNUM,LIMITR,MYENTRYPRICE);
POSITION := -1 ;
TURTLEUNITS := 1 ;
N := AVGTR ;
BUYORDERTHISBAR := 1;

END
//GOTO CONTINUELINE ;
END  //IF


//如果当前持有多头仓位的状态

IF POSITION=1 AND BARPOS>T20 AND H>L THEN BEGIN

//建立多头止损条件
LONGX2 := (LOW<MYENTRYPRICE-2*N)  ;

IF LONGX2 AND POSITION=1 AND BUYORDERTHISBAR=0 THEN BEGIN
MYEXITPRICE := IF(OPEN<MYENTRYPRICE-2*N ,OPEN ,MYENTRYPRICE-2*N ) ;
MYEXITPRICE := FLOOR(MYEXITPRICE/MINDIFF)*MINDIFF ;
SELL( _DEBUG ,0,LIMITR,MYEXITPRICE);
POSITION := 0 ;
TURTLEUNITS := 0 ;
END

GOTO CONTINUELINE ;

END  //IF


//如果当前持有空头仓位的状态
    
 IF POSITION =-1 AND BARPOS>T20 AND H>L THEN BEGIN 
    
//建立空头止损条件
SHORTX2 := HIGH > MYENTRYPRICE + 2*N  ;

IF SHORTX2 AND POSITION = -1 AND BUYORDERTHISBAR=0  THEN BEGIN
MYEXITPRICE := IF(OPEN>MYENTRYPRICE+2*N ,OPEN ,MYENTRYPRICE+2*N ) ;
MYEXITPRICE := CEILING(MYEXITPRICE/MINDIFF)*MINDIFF ;
SELLSHORT( _DEBUG,0,LIMITR,MYEXITPRICE);
POSITION := 0 ;
TURTLEUNITS := 0 ;
END 

END  //IF


您好,上述代码中加粗部分代码目标是同根K线平仓即反手,但将公式加载到图表上,交易信号显示,不知道哪个环节存在错误,请帮忙解决一下,非常感谢。

--  作者:jinzhe
--  发布时间:2014/1/22 14:40:10
--  

图表上有没有同根k线平仓反手信号?

如果有的话有没有下单?

下单的话有没有成交?


--  作者:勇敢的心
--  发布时间:2014/1/22 14:45:25
--  
//开始执行时 初始化数据
IF BARPOS=1 THEN BEGIN
//POSITION := 0 ;

END //IF

//如果当前是空头持仓的状态
IF  BARPOS>T20 AND H>L THEN BEGIN

//建立平空做多进场条件
LONG := H > T20HI ;
//平空做多
IF LONG AND POSITION=-1  THEN BEGIN
MYENTRYPRICE := IF(OPEN>T20HI+MINDIFF ,OPEN ,T20HI+MINDIFF ) ;
SELLSHORT( _DEBUG,POSNUM,LIMITR,MYENTRYPRICE);
BUY( _DEBUG,POSNUM,LIMITR,MYENTRYPRICE);
POSITION := 1 ;
TURTLEUNITS := 1 ;
N := AVGTR ;
BUYORDERTHISBAR := 1;

END //IF

图表上没有同根k线平仓反手信号,我上述写的平仓反手命令代码没有执行,能帮忙分析解决一下嘛,非常感谢。



--  作者:jinzhe
--  发布时间:2014/1/22 14:58:26
--  
那么出现的情况是上面我所说的哪些?
--  作者:勇敢的心
--  发布时间:2014/1/22 15:08:26
--  
嗯 是的 能否帮忙调试一下,谢谢。
--  作者:jinzhe
--  发布时间:2014/1/22 15:26:11
--  

到底出现的是哪种情况啊?

 


--  作者:勇敢的心
--  发布时间:2014/1/22 15:27:57
--  
请问找到问题了嘛?因为看到别人使用金字塔能实现,说明不是软件问题,可能我写的代码逻辑上有问题,谢谢指正。
--  作者:jinzhe
--  发布时间:2014/1/22 15:37:56
--  

看我第一个回复,看下反手失败时的现象是哪个


--  作者:勇敢的心
--  发布时间:2014/1/22 15:39:32
--  
图表上有没有同根k线平仓反手信号?
--  作者:jinzhe
--  发布时间:2014/1/22 16:09:04
--  

http://www.weistock.com/bbs/dispbbs.asp?boardid=2&Id=31614&page=3

按照提示把k线图上的信号截图上传