以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  帮我把以下的图表交易程序改成后台交易程序  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=62149)

--  作者:crystal731
--  发布时间:2014/2/28 9:45:45
--  帮我把以下的图表交易程序改成后台交易程序

帮我把以下的图表交易程序改成后台交易程序,是只改个交易命令还是还要改其他的?我的程序如下:

 

INPUT:N(1,1,100,1),NMIN(10,1,100,1),SS(1,1,10000,1),x(20,10,100,1),q(10,1,50,1),ks(500,100,3000,100);
VARIABLE:趋买势:=0,k1:=0.7,k2:=0.7,y=:0;

M:=NUMTOSTR(N,0);
p:=NUMTOSTR(q,0);
S:=TODAYBAR;
HH:=HHV(H,S);//当日最高价
LL:=LLV(L,S);//当日最低价
OO:=STKINDI(\'\',\'MAO.MAO1(1)\',0,6,0);//当日开盘价
昨收:=stkindi(\'\',\'MAO.MAO2(1)\',0,6,-1);
昨昨收:=stkindi(\'\',\'MAO.MAO2(1)\',0,6,-2);//昨天的前一天的收盘价,暂称为昨昨收


昨高:=STKINDI(\'\',\'MAO.hh(\'&M&\')\',0,6,-1);
昨低:=STKINDI(\'\',\'MAO.ll(\'&M&\')\',0,6,-1);
高收:=STKINDI(\'\',\'MAO.hc(\'&M&\')\',0,6,-1);
低收:=STKINDI(\'\',\'MAO.lc(\'&M&\')\',0,6,-1);
关键点:=(stkindi(\'\',\'MAO.MAO2(1)\',0,6,-1)-stkindi(\'\',\'MAO.MAO2(1)\',0,6,-q))/(stkindi(\'\',\'MAO.hh(&q&)\',0,6,-1)-stkindi(\'\',\'MAO.ll(&q&)\',0,6,-1))*100;


浮动区间:=MAX(昨高-低收,高收-昨低);//RANGE


if 昨收>昨昨收 then begin
    if 关键点<x then begin
      k1:=0.35;
      k2:=0.7;
    end
    if 关键点>=x then BEGIN
      k1:=0.7;
      k2:=0.35;
    end
end

if 昨收<=昨昨收 then begin
   if 关键点<x then begin
   k1:=0.7;
   k2:=0.35;
   end
   if 关键点>=x then BEGIN
   k1:=0.35;
   k2:=0.7;
   end
end


上轨:OO+K1*浮动区间;
下轨:OO-K2*浮动区间;
今日开盘:oo;
T1:=TIME>OPENTIME(1) AND TIME<CLOSETIME(0)-NMIN*100;
T2:=TIME>=CLOSETIME(0)-NMIN*100;
手数:=SS;
a1:=ref(asset,todaybar);
if a1-asset>ks then y:=1;


//交易条件
开多条件:=C>上轨 AND (HOLDING=0 or holding<0) and y=0;
开空条件:=C<下轨 AND (HOLDING=0 or holding>0) and y=0;
平空条件:=C>上轨 AND HOLDING<0;
平多条件:=C<下轨 AND HOLDING>0;

 


//交易系统
平空:sellshort(平空条件 and t1,手数,market);
开多:BUY(开多条件 AND T1,手数,MARKET);
平多:sell(平多条件 and t1,手数,market);
开空:BUYSHORT(开空条件 AND T1,手数,MARKET);

//亏损1000元自动止损可以写成这样
if asset-a1<=-ks then begin
   sell(1,0,market);
   sellshort(1,0,market);
end


收盘平多:SELL(T2,手数,MARKET);
收盘平空:SELLSHORT(T2,手数,MARKET);

ak1:k1,LINETHICK0;
ak2:k2,LINETHICK0;

if time=closetime(0) then y:=0;

 


//最后每天收盘时重置全局变量
亏损:a1,LINETHICK0;
总亏损:a1-asset,LINETHICK0;
浮动盈亏:OPENPROFIT,LINETHICK0;
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;//输出当前资产,但不影响坐标最高最低值


--  作者:crystal731
--  发布时间:2014/2/28 10:15:40
--  

--  作者:lichenghu
--  发布时间:2014/2/28 10:32:37
--  

稍等,工作人员正在处理

 

您对后台了解吗?

[此贴子已经被作者于2014/2/28 10:32:57编辑过]

--  作者:lichenghu
--  发布时间:2014/2/28 10:43:33
--  

1,后台尽量使用EXTGBDATASET来定义全局变量

2,后台没有虚拟资金这个概念,ASSET无法取到值的

3,对应下单函数做下变动即可


--  作者:crystal731
--  发布时间:2014/3/3 9:26:06
--  

那么怎么实现日亏损1000元平仓不再开仓?整条语句帮我改成后台运行的行吗?就用rb1405的吧。


--  作者:crystal731
--  发布时间:2014/3/3 10:28:13
--  

--  作者:jinzhe
--  发布时间:2014/3/3 10:45:33
--  

if dynainfo(207)>=151455 then begin

   extgbdataset(\'zijin\',tasset);

   extgbdataset(\'bioaji\',2);

end

 

if tasset-extgbdata(\'zijin\')<=-1000 then extgbdataset(\'biaoji\',1);

 

开仓条件加上  and extgbdata(\'biaoji\')<>1

 

思路是记录昨天收盘前的资金,然后判断当前资金和昨日收盘资金相比是否亏损1000,亏损之后将标记置为1,然后开仓条件加上判断1是否等于,最后在每天收盘前重置全局变量