设为首页收藏本站

 找回密码
 注册
查看: 5763|回复: 8
打印 上一主题 下一主题

怎么没人帮忙啊?! [复制链接]

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
1#
发表于 2008-1-28 15:27:54 |显示全部楼层
你的问题不是一般的难,大家都没试过这样的编程方式,当然帮不上忙,要多自己摸索了.因为你走的不是一般人的路啊.
TradeBlazer交流群33647992。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
2#
发表于 2008-1-28 18:37:25 |显示全部楼层
你的思路是什么,发给我看看,不怕与我共享的话,也许我会帮你提点建议.
TradeBlazer交流群33647992。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
3#
发表于 2008-1-28 21:36:58 |显示全部楼层
思路不怎以样,不过编程是有难度的,我再想想,想好了再发吧。
TradeBlazer交流群33647992。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
4#
发表于 2008-1-28 22:32:07 |显示全部楼层
  1. params
  2. numeric myprice(8950);
  3. vars
  4. numeric i;
  5. begin
  6. for i=1 to 10
  7. {
  8.     if(high>=myprice+i*60*minmove*pricescale and high<=myprice+(i+1)*60*minmove*pricescale and abs(currentcontracts())<i)
  9.     {
  10.         sellshort(1,0);
  11.     }
  12. }
  13. end
复制代码

你提供的思路就这么多,也就将就了。
TradeBlazer交流群33647992。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
5#
发表于 2008-1-29 09:48:29 |显示全部楼层
你怎么知道不会执行呢?执行不执行是由条件是否满足决定的,没有规定说会回测就不能执行实盘的说法.只要你实盘的钱够开10手就应该没问题.
TradeBlazer交流群33647992。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
6#
发表于 2008-1-29 11:09:40 |显示全部楼层
哦,你的意思只是获得今天的价格作参考.currentdate>20080128改为date>=20080128就可以了date比currentdate好,date是bar数据,尽量用bar数据作为条件会稳定得多.你的条件是大于今天,那么只有明天可交易了.也可以设置样本数,从某日起.
params
numeric myprice(10500);
numeric mydate(20080128);
vars
numeric i;
begin
for i=1 to 10
{
    if(date>=mydate And high>=myprice+i*60*minmove*pricescale and high<=myprice+(i+1)*60*minmove*pricescale and abs(currentcontracts())<i)
    {
        sellshort(1,0);
    }
}
end
TradeBlazer交流群33647992。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
7#
发表于 2008-1-29 11:16:31 |显示全部楼层
另外,你的样本设少一点,可能是设的初始金不够用所致.
TradeBlazer交流群33647992。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
8#
发表于 2008-1-29 19:30:27 |显示全部楼层
问题基本弄清,一因为没有平仓指令,那么整个样本内就只当作一次还没有完成的交易(完整的一次交易最少包括一次开,一次平),你在交易设置中的可连续开次数(假如默认为5次),已在回测时被使用完了,所以,要设计一个交易系统,必须起码有一个开仓,一个平仓;第二,程序中没有加入每根BAR限开一次的代码,那么就存在了同一根BAR可能被开仓几次的可能,更尽早使用完了设置的次数.下面我用每日开盘价作参考,每日收盘平仓,交易设置中可连续开的次数设为10次.自己再琢磨修改吧.不要回测讯号是危险的,有回测更易发现问题所在.就此不回复了,今天的电脑速度太慢,编译一次都要20分钟,所以做不成工了.你的思路把它颠倒做还可以,自己看着办吧.
  1. //------------------------------------------------------------------------
  2. // 简称: Addsellposition
  3. // 名称: Addsellposition
  4. // 类别: 交易指令
  5. // 类型: 空头建仓
  6. // 输出:
  7. //------------------------------------------------------------------------
  8. //只用当日的开盘价作参考点吧,收盘平仓。
  9. params
  10. numeric updots(5);
  11. vars
  12. numeric i;
  13. boolseries btoday(false);
  14. boolseries bsellentry(false);
  15. numericseries openprice;
  16. begin
  17.                 if(time>=0.0900 and time<0.1457)
  18.                 {
  19.                                 if(btoday[1]==false)
  20.                                         {
  21.                                                 btoday=true;
  22.                                                 openprice=open;
  23.                                         }Else
  24.                                         {
  25.                                                 btoday=btoday[1];
  26.                                                 openprice=open[1];
  27.                                         }
  28.                         for i=1 to 10
  29.                         {
  30.                                 if(high>=openprice+i*updots*minmove*pricescale and high<=openprice+(i+1)*updots*minmove*pricescale and and bsellentry==false and abs(currentcontracts())<i)
  31.                                         {
  32.                                                 sellshort(1,high);
  33.                                                 commentary("此时已开"+text(i)+"手。");
  34.                                                 bsellentry=true;
  35.                                         }
  36.                         }
  37.                 }
  38. if(time>=0.1457)
  39. {
  40.         if(marketposition==-1)
  41.         {
  42.                 buytocover;
  43.         }
  44. }
  45. end
复制代码
TradeBlazer交流群33647992。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
9#
发表于 2008-1-30 09:50:06 |显示全部楼层
openprice=open[1];
改为openprice=openprice[1];
TradeBlazer交流群33647992。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-23 18:15

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部