我的思路是这样的: 如果今天在盘中:实时价格大于昨天(最高价一最低价)那么就以 开盘价加昨天(最高价一最低价)做为开盘做多; 如果今天在盘中:实时价格小于昨天(最高价一最低价)那么就以 开盘价减昨天(最高价一最低价)做为开盘做空; 下午14点59分30秒全部清仓。 请教高手写个图表交易系统的程序 |
h1:callstock(stklabel,vthigh,6,-1);
l1:callstock(stklabel,vtlow,6,-1);
if h>(h1-l1) then begin
sellshort(1,0,market);
buy(holding=0,1,market);
end
if l<(h1-l1) then begin
sell(1,0,market);
buyshort(holding=0,1,market);
end
if (currenttime>=145930 and islastbar) or(time=closetime(0) and not(islastbar)) then begin
sell(1,0,market);
sellshort(1,0,market);
end
|
老师,刚刚用您的方法测试了一下:我还有以下几个问题
<!--[if !supportLists]-->一、<!--[endif]-->用(if (currenttime>=145930 and islastbar) or(time=closetime(0) and not(islastbar)) then begin)这个语句的话,是使用未来函数,在测试时不会平仓。想请老师,另外给请我加一段语问,在测试时使用。也就是如果当天触发了成交的条件,那么就以当天收盘价做平仓条件(无论是当天只有空单,无论是当天只有多单,无论是当天空单和多单都有),这样便于测试。
<!--[if !supportLists]-->二、<!--[endif]-->老师这么写的话,是以下一个开盘日的开盘价作为成交价了,如何能以实时价等于这个触发价(最高价-最低价),来成交。
三、老师这个交易程序里,写的程序是只能一天当中有一手空单或一手多单。我想还要多考虑一种情况,那就是:如果当天的实时价格不但触发了做多,同时也触发了做空。比如:当天的最高价3030 ,当天的最低价2900 ,而当天做多的触发条件是3020,当天做空的触发条件是2950,一般当天的收盘价会出现三种情况,第一种当天收盘价大于多单触发价(最高价>收盘价>3020);第二种当天收盘价小于多单触发价大于空单触发价(3020>收盘价>2950);第三种当天收盘价小于空单位触发价(最低价<收盘价<2950)。
我以第二种情况为例,表述一下:如果最后当天收盘价是3000。假如当天是先触发了多单,后触发了空单,那么以当天收盘价作平仓后的赢亏情况
按我想法就会是这样的:多单亏损20(3000-3020=-20),空单亏损50(2950-3000=-50)当天总共亏损70。
如果按照老师的程序走的话,就会是这样的,先触发多单,到后面价格跌到触发空单时,那么先会把多单平仓,先是亏损70(3020-2950),后面空单亏损50(2950-3000=-50)是一样的,但当天总共亏损就达到120。
请教老师怎么才能写成我所表述的那种交易模型,非常感谢!
input:m(5),n(20);
ma5:=ma(c,m);
ma10:=ma(c,n);
if cross(ma5,ma10) then begin
sellshort(holding<0,0,thisclose);
buy(holding=0,1,thisclose);
end
if cross(ma10,ma5) then begin
sell(holding>0,0,thisclose);
buyshort(holding=0,1,thisclose);
end
比如像这样简单的MA均线系统,就能做到一天之内开多开空都有信号。
你的系统没信号只因为条件不满足