以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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=8340)

--  作者:lizhaozhao
--  发布时间:2011/10/10 22:28:29
--  我的一个日内交易策略,求助编程程序

1.开盘前30分钟不交易


2.30分钟后,最高价和最低价的价差大于250,当日也不交易


3.30分钟后,价格第一次向上突破30分钟最高价,确定第一次做多(突破时并不马上做多,要等回调50元再进场)

   30分钟后,价格第一次向下突破30分钟最低价,确定第一次做空(突破时并不马上做空,要等反弹50元再进场)

 

4.什么情况下进场做多?

   第一次开仓做多是当最新价格当日第一次向上突破30分钟最高价格时(当前价格肯定就是最高价),按照(当前价格-50元),开多单。

   那么之后的第二次、第三次......做多,是在什么情况下进场呢?

   答:即在当前价格突破前一新高(是目前为止当日的最高价格时),按照(当前价格-50元),开多单。(注:只要有新高出现,就按照当前价格-50的指定价下单)

   注意:当出现新高的时候,如果之前已有多单申报,但还没成交的时候,需要把未成交的申报撤掉,继续按(当前价格-50元)开新的多单。

 

5.什么情况下多单平仓?

一.止盈80出场;

二.止损75出场;

三.当持仓经历过大于等于50元的浮动盈利,又再一次回到开仓价位时,以开仓价平仓出场

    当持仓经历过大于等于50元的浮动损失,又再一次回到开仓价位时,以开仓价平仓出场

 

6.什么情况下进场做空?(与做多正好完全相反)

   第一次开仓做空是当最新价格当天第一次向下突破30分钟最低价格时(当前价格肯定就是最低价),按照(当前价格+50元),开空单。

   之后的第二次、第三次......做空,是在只要当前价格突破前一新低(是当前的最低价格时),按照(当前价格+50元),开空单。。(注:只要有新低出现,就按照当前价格-50的指定价下单)

  注意:当出现新低的时候,如果之前已有空单申报,但还没成交的时候,把未成交的申报撤掉,继续按(当前价格+50元)开新的空单。

 

7.什么情况下空单平仓?

一.止盈80出场;

二.止损75出场;

三.当持仓经历过大于等于50元的浮动盈利,又再一次回到开仓价位时,以开仓价平仓出场

    当持仓经历过大于等于50元的浮动损失,又再一次回到开仓价位时,以开仓价平仓出场

 

8.当价格向上突破了开盘30分钟最高价位超过160元时,就算出现最新的最高价也不再做多了

   当价格向下突破了开盘30分钟最低价位超过160元时,就算出现最新的最低价也不再做空了

 

9.到了下午14:58时,所有未平仓的持仓全部按市价平仓。


--  作者:26327756l
--  发布时间:2011/10/11 9:10:49
--  

问题正在解决中


--  作者:fly
--  发布时间:2011/10/11 9:39:46
--  

条件2.30分钟后,最高价和最低价的价差大于250,当日也不交易

这里的---最高价和最低价,具体指的是什么?指的是开盘前30分钟的最高价和最低价吗?


--  作者:fly
--  发布时间:2011/10/11 9:42:30
--  

3.30分钟后,价格第一次向上突破30分钟最高价

这里的是开盘后  前30分钟最高价?

 

还是到本根K线之前前30周期的最高价?

 

 


--  作者:lizhaozhao
--  发布时间:2011/10/11 10:16:46
--  

30分钟后,最高价和最低价的价差大于250,当日也不交易,这里的最高价和最低价是指开盘前30分钟(9点-9点半)的最高价和最低价

 

30分钟后,价格第一次向上突破30分钟最高价,这里的最高价指的是开盘前30分钟(9点-9点半)最高价

 


--  作者:26327756l
--  发布时间:2011/10/11 13:36:37
--  

程序说明

1 程序是使用在图表程序化交易中,使用1分钟K线,走完以根K线模式。

2 程序主要写了开多的功能,开空功能,您可以根据此程序套用添加上。

3 要求中的第5条的第三款要求,不能在标准版的图标交易里实现,只有专业版的后台交易里才可以达到您的要求。

4 程序供参考,有些细节以我的理解设定,不符合望自己修改。

 

  //变量说明,h30、l30 是开盘前30分钟最高和最低价,h1、l1是当天最高价和最低阶,di是用于当天第一手的开仓
variable:h30=0,l30=0,h1=0,l1=0,di=0;
h1:=if(c>h1,c,h1);
l1:=if(c<l1,c,l1);

if CURRENTTIME>090000 and CURRENTTIME<093000 then
begin
   h30:=if(h30>h,h30,h);
   l30:=if(l30<l,l30,l);
end

if CURRENTTIME<093000  then  exit; //1.  开盘前30分钟不交易

if CURRENTTIME>093000 and CURRENTTIME<145800 then
begin
   //2. 30分钟后,最高价和最低价的价差大于250,当日也不交易
if ABS(h30-l30)>=250 then exit;

    //3.30分钟后,价格第一次向上突破30分钟最高价,确定第一次做多(突破时并不马上做多,要等回调50元再进场)
if c>=h30 and di=0 then
begin
buy(1,1,limit,c-50),ignorecheckprice;

di:=1;
end
    //30分钟后,价格第一次向下突破30分钟最低价,确定第一次做空(突破时并不马上做空,要等反弹50元再进场)
if c<=l30 and di=0 then
begin
buyshort(1,1,limit,c+50),ignorecheckprice;

di:=1;
end
    //即在当前价格突破前一新高(是目前为止当日的最高价格时),按照(当前价格-50元),开多单
if c>=ref(h1,1) then buy(1,1,limit,c-50),ignorecheckprice;
  //  目前使用的是图标交易程序,未成交的判断功能,要使用后台才可以实现,所以先忽略测单


  //一.止盈80出场;
if OPENPROFIT>80*MINDIFF then SELL( holding>0,holding ,market );
  //二.止损75出场;
if  OPENPROFIT<REVERSE( 75*MINDIFF) then sellshort(holding<0,REVERSE(holding),market);

end


   // 9.  到了下午14:58时,所有未平仓的持仓全部按市价平仓。

if CURRENTTIME>145800 then
  begin
    sell(holding>0,holding,market);
    sellshort(holding<0,REVERSE(holding ),market);
  end

 

 

 


--  作者:26327756l
--  发布时间:2011/10/11 15:45:28
--  

提点后修改了一下

 


  //变量说明,h30、l30 是开盘前30分钟最高和最低价,h1、l1是当天最高价和最低阶,di是用于当天第一手的开仓
variable:di=0;

 M:=BARSLAST(DATE<>REF(DATE,1) )+1;
 
h30:=VALUEWHEN(TIME<=093000,HHV(HIGH,M));
 l30:=VALUEWHEN(TIME<=093000,LLV(LOW,M));
h1:ref(hhv(l,m),1);

l1:ref(llv(l,m),1);

if time<093000  then  exit; //1.  开盘前30分钟不交易

if h30-l30>=250 then exit;

if time>093000 and time<145800 then
begin
   //2. 30分钟后,最高价和最低价的价差大于250,当日也不交易


    //3.30分钟后,价格第一次向上突破30分钟最高价,确定第一次做多(突破时并不马上做多,要等回调50元再进场)
if c>=h30 and di=0 then
begin

buy(holding=0,1,limit,c-50),ignorecheckprice;
di:=1;
end
    //30分钟后,价格第一次向下突破30分钟最低价,确定第一次做空(突破时并不马上做空,要等反弹50元再进场)
if c<=l30 and di=0 then
begin

buyshort(holding=0,1,limit,c+50),ignorecheckprice;
di:=1;
end
    //即在当前价格突破前一新高(是目前为止当日的最高价格时),按照(当前价格-50元),开多单
if c>=ref(h1,1) then buy(1,1,limit,c-50),ignorecheckprice;
  //  目前使用的是图标交易程序,未成交的判断功能,要使用后台才可以实现,所以先忽略测单


  //一.止盈80出场;
if OPENPROFIT>80*MINDIFF then SELL( holding>0,holding ,market );
  //二.止损75出场;
if  OPENPROFIT<REVERSE( 75*MINDIFF) then sellshort(holding<0,REVERSE(holding),market);

end


   // 9.  到了下午14:58时,所有未平仓的持仓全部按市价平仓。

if time>145800 then
  begin
    sell(holding>0,holding,market);
    sellshort(holding<0,REVERSE(holding ),market);
  
  end

if time>=150000 then di:=0;

 


--  作者:lizhaozhao
--  发布时间:2011/10/11 16:05:37
--  

非常感谢帮助


--  作者:newbasic
--  发布时间:2011/11/3 19:30:35
--  

图表显示不对啊


--  作者:26327756l
--  发布时间:2011/11/7 11:33:08
--  

指出来哪里有问题啊?