以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  策略编写求助区  (http://weistock.com/bbs/list.asp?boardid=11)
----  求助:一个完整的后台交易模型方案  (http://weistock.com/bbs/dispbbs.asp?boardid=11&id=12915)

--  作者:小布丁
--  发布时间:2012/7/13 11:00:27
--  求助:一个完整的后台交易模型方案

一、已知的多空出入场规则:

variable:cc=0;

cangwei:=5;//仓位

pp:=barslast(date<>ref(date,1))+1;

entime:=pp>1 and pp<245;

extime:=pp>260;

bcond:=c>ma(c,10);

scond:=c<ma(c,10);

if bcond or extime and cc<0 then cc:=0;

if scond or extime and cc>0 then cc:=0;

if bcond and entime and cc=0 then cc:=1;

if scond and extime and cc=0 then cc:=-1;

cw:=cangwei*cc;//定义每一次交易的开仓手数cw,cw为理论持仓。

二、需要实现的后台交易方案:

1、K线走完模式下提前10秒下单

     通过在后台交易指令中加入时间限制开关 [abb:=time0-timetot0(dynainfo(207))<=10;] 实现。后台交易选择固定轮询间隔1秒。

2、委托单历时超过30秒仍未成交自动撤单 [tsubmit(0)、tcancel]

3、实时监控理论持仓与实际买持和实际卖持是否一致。实际买持小于理论多单则补足理论多单。实际买持大于理论多单则平掉多余仓位。实际卖持与理论空单同样处理。[通过新定义中间变量cw与tbuyholdingex/tsellholdingex的差值cangcha是否为零来判断]。

4、在每一次开多和开空之前检测是否有反向单存在,不允许出现锁单的情况,如账户存在反向单则先平掉反向单再发单。

5、将每一次交易的结果发送到指定邮箱123@163.com

6、将每一次交易的结果发送到指定QQ群12345

7、全自动无人值守方案(包括计算机的自动开关机、金字塔软件的自动重启关闭、自动登录多账户、自动启动后台交易、非正常关闭情况下重启软件等)

 

 


--  作者:董小球
--  发布时间:2012/7/13 11:26:17
--  
楼主你的方案里,1、2、3、4、5都可以通过指标语言来实现,6恐怕要通过VBA才能实现,7无法实现
根据你所说的,我给出一个例子,你学习一下里面的方法,就可以实现你的需求

当然,我所给出的例子,为了方便理解,只是一个不考虑是否盈亏的非常简单的MA均线指标,但是这个简单指标里,我把众多交易技巧都覆盖了在里面,只要你方法学会,形式可以做任意的变换~
//MA均线交易指标-后台交易


VARIABLE:A=0;
//条件判断
ZH1:\'1000\';
PZ1:\'IF00\';
MA5:MA(CLOSE,5);
MA10:MA(CLOSE,10);
CONDBUY:=CROSS(MA5,MA10);
CONDSELL:=CROSS(MA10,MA5);


//控制日内交易次数
IF TTOTALDAYTRADE>=300 THEN EXIT;

//开仓和平仓
TBUY(CONDBUY AND TBUYHOLDINGEX( ZH1,PZ1 ,0 )<10,1,LMT,CLOSE,0,ZH1,PZ1 );
TSELL(CONDSELL,TBUYHOLDINGEX( ZH1,PZ1 ,0 ),MKT,0,ZH1,PZ1);


//加仓
IF TBUYHOLDINGEX( ZH1,PZ1 ,0 )<10 THEN BEGIN
阳线加仓:TBUY(CLOSE>OPEN,2,LMT,CLOSE,ZH1,PZ1);
阴线加仓:TBUY(CLOSE<OPEN,1,LMT,CLOSE,ZH1,PZ1);
END


//止损止盈

IF DYNAINFO(  7)-TAVGENTERPRICEEX2(ZH1 ,PZ1 ,0 )>20*MINDIFF THEN BEGIN
TSELL(1,TBUYHOLDINGEX( ZH1,PZ1 ,0 ),MKT,0,ZH1,PZ1);
END

//止损
IF TAVGENTERPRICEEX2(ZH1 ,PZ1 ,0 )-C>10*MINDIFF THEN BEGIN
TSELL(1,TBUYHOLDINGEX( ZH1,PZ1 ,0 ),MKT,0,ZH1,PZ1);
END



//监控未成交单
WCJ:=TREMAINQTY( 1, ZH1,PZ1);
IF WCJ<>0 THEN BEGIN
A:=WCJ;
END

//对为成交单撤单,并追单
IF WCJ>0 THEN BEGIN
TCANCELEX(1,1,ZH1,PZ1 );
TBUY(WCJ=0,A,MKT,0,ZH1,PZ1);
END

//监控持仓和资金状况
当前持仓量:=TBUYHOLDINGEX( ZH1,PZ1 ,0 );
当前可用资金:=TACCOUNT(19);
DEBUGOUT(\'当前持仓量%.2f\',当前持仓量 );
DEBUGOUT(\'当前可用资金%.2f\',当前可用资金 );

//收盘前强平

IF CURRENTTIME>=150000 THEN BEGIN
TSELL(1,0,MKT,0,ZH1,PZ1);
END


//其他操作

--  作者:王锋
--  发布时间:2012/7/13 12:13:50
--  
参考 阿火秘笈 http://www.weistock.com/bbs/dispbbs.asp?boardid=10&Id=9439 里面的多个问题已经都涉及到了
--  作者:luqi
--  发布时间:2012/7/13 12:25:56
--  

哈哈,这个得找火哥啊,一切都搞定。我一个朋友用服务器交易就是你这样子的。。。。。。。。。。。。。。。。。。


--  作者:小布丁
--  发布时间:2012/7/13 13:08:15
--  

知道问题,知道解决的思路是一回事,但真正要写起来就没那么容易了。

以上问题,楼主等于没说。

 


--  作者:阿火
--  发布时间:2012/7/15 19:19:49
--  

哈,过奖。过奖了

第七点我可没做过哦

其他的几点早已实现并实盘了。