以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  策略编写求助区  (http://222.73.7.161/bbs/list.asp?boardid=11)
----  求助后台程式化交易公式编写  (http://222.73.7.161/bbs/dispbbs.asp?boardid=11&id=8885)

--  作者:hldx1000
--  发布时间:2011/11/9 16:18:24
--  求助后台程式化交易公式编写

开仓条件:最新价上穿下轨时(持仓为零)或最新价高于开盘价时(持仓为零)即开多单,

              最新价上穿上轨时(持仓为零)或最新价低于开盘价时(持仓为零)即开空单。

反手动作:在日内任何时间段,最新价高于或低于开仓价20点时做反手(包括当根K线内做反手)。

清      仓:在14点58分全部平仓。

运行模式:序列模式,后台程式化交易。

要      求:在当根K线内开仓且满足条件做反手。


--  作者:jinzhe
--  发布时间:2011/11/9 16:26:50
--  
上下轨该如何定义?
--  作者:hldx1000
--  发布时间:2011/11/10 7:42:32
--  

指布林通道的上、下轨。


--  作者:26327756l
--  发布时间:2011/11/10 8:47:21
--  

仅供参考

input:M(26,5,300,30),N(2,0.1,10,1);

MID :  MA(CLOSE,M);
UPPER: MID + N*STD(CLOSE,M);
LOWER: MID - N*STD(CLOSE,M);
//最新价上穿下轨时(持仓为零)或最新价高于开盘价时(持仓为零)即开多单,
if (cross(c,lower) or c>o) then tbuy(tholding=0,1);
//最新价上穿上轨时(持仓为零)或最新价低于开盘价时(持仓为零)即开空单。
if (cross(c,upper) or c<o) then tbuy(tholding=0,1);
//反手动作:在日内任何时间段,最新价高于或低于开仓价20点时做反手(包括当根K线内做反手)。
if c<TENTERPRICE+20*mindiff then
begin
tsell(holding>0,0);
tbuyshort(holding=0,1);
end

if c>TEXITPRICE+20*mindiff then
begin
tsellshort(holding<0,0);
tbuy(holding=0,1);
end

//清      仓:在14点58分全部平仓。
 if time>145800 then
 begin
 tsell(holding>0,0);
 tsellshort(holding<0,0);
 end

 

[此贴子已经被作者于2011-11-10 9:08:16编辑过]

--  作者:admin
--  发布时间:2011/11/10 8:48:28
--  
还请楼上认真对待用户的需求,仔细检查你的代码
--  作者:26327756l
--  发布时间:2011/11/10 9:29:24
--  

修改后


input:M(26,5,300,30),N(2,0.1,10,1);
MID := MA(CLOSE,M);
UPPER: MID + N*STD(CLOSE,M);
LOWER: MID - N*STD(CLOSE,M);
oo:=ref(o,BARSLAST(date<>ref(date,1)));
//最新价上穿下轨时(持仓为零)或最新价高于开盘价时(持仓为零)即开多单,
if (cross(c,lower) or c>oo) then tbuy(tholding=0,1,MKT);
//最新价上穿上轨时(持仓为零)或最新价低于开盘价时(持仓为零)即开空单。
if (cross(c,upper) or c<oo) then tbuy(tholding=0,1,MKT);
//反手动作:在日内任何时间段,最新价高于或低于开仓价20点时做反手(包括当根K线内做反手)。
if c>TENTERPRICE+20*mindiff and THOLDING>0 then
begin
tSELL(1,0,MKT),ORDERQUEUE;
tBUYSHORT(1, 1,MKT),ORDERQUEUE;
end
if c<TENTERPRICE-20*mindiff and THOLDING<0 then
begin
tSELLSHORT(1,0,MKT),ORDERQUEUE;
tBUY(1,1,MKT),ORDERQUEUE;
end


//清      仓:在14点58分全部平仓。
 if CURRENTTIME>145800 then
 begin
 tsell(tholding>0,0,MKT);
 tsellshort(tholding<0,0,MKT);
 end

 

[此贴子已经被作者于2011-11-10 9:36:59编辑过]