请高手帮助!!!(用在分析家上)

Discussion in 'General Topics on Software and Data' started by ybgl, Jun 9, 2005.

  1. qls老大是何方神圣,莫非就分析家的超级斑竹吗?
     
  2. 代码你改了吗?可以贴出来让大家看看。我在上海汽车没有看到这样的情况。
    只是加码太多了,这要用参考加以限定。
     
  3. 我用的是我自己的程序
     
  4. 关注,盼望该系统在MALTAB的测评效果
     
  5. 说一点看法

    这个交易系统的买入条件和卖出条件不是一一对应的关系,问题出在宽幅震荡日这个条件:)
     
  6. qls

    qls

    原公式没有测试,是有很多错误,请大家到分析家论坛看最新的公式,欢迎指正
     
  7. "原公式没有测试,是有很多错误,请大家到分析家论坛看最新的公式,欢迎指正",给个连接嘛!
     
  8. qls

    qls

  9. 用我的系统测试了一下,结果见http://itfin.afraid.org/tmp/backtest.html,具体代码为:
    $global->{Cache}{signalfactory}{'ybgl'}=Finance::Trade::SignalFactory->new(name=>'ybgl',type_id=>1,depends=>['high','low','close'],
    expr=>'lift=function(x,n){c(rep(NA,n),x[1:(length(x)-n)])};
    window=function(x,f,n){running(x,fun=f,width=n,align=\"right\",allow.fewer=FALSE,pad=TRUE,simplify=TRUE)};
    close1=lift(close,1);tr=lift(pmax(high-low,abs(close1-high),abs(close1-low)),d_lag);atr=filter(tr,rep(1,d_ma)/d_ma,method=\"convolution\",sides=1);
    hh=lift(window(high,max,d_win),1);ll=lift(window(low,min,d_win),1);
    r=rep(0,length(close));r[which(close>hh & tr>=fac*atr)]=1;r[which(close<ll & tr>=fac*atr)]=-1;r',
    para=>[{-name=>'d_lag',-type=>'I'},{-name=>'d_win',-type=>'I'},{-name=>'d_ma',-type=>'I'},{-name=>'fac',-type=>'F'}],
    defaultpara=>[3,7,20,2.],Global=>$global);
    sub ybglStrategy {
    my ($targetmap,$account,$date,$sigmap,$delta)=@_;
    return if !defined($sigmap);
    my $portfolio=$account->getPortfolio($date);
    for my $tid(@$targetmap){
    my $tradable=$account->{Global}{Cache}{tradable}{$tid};
    if($portfolio->Asset($tid)>0){
    if($tradable->getLow($date)<$tradable->{stoploss}){
    push(@$delta,{tid=>$tid,percentage=>0,price=>$tradable->{stoploss},tag=>'stoploss'});
    last;
    }elsif(any (map {$_<0} values(%{$sigmap->{$tid}}))){
    push(@$delta,{tid=>$tid,percentage=>0,tag=>'signalsell'});
    last;
    }else{
    $tradable->{stoploss}+=max($tradable->getPrice($date)-$tradable->getPrice($date,-1),0);
    if(($tradable->getPrice($date)-$tradable->{buyprice})>=($tradable->{buy_count}*1.5*$tradable->{maxloss})){
    $tradable->{buy_count}++;
    push(@$delta,{tid=>$tid,percentage=>min($tradable->{buy_count}*$tradable->{position_percentage},0.98),tag=>'positionadjust'});
    }else{}
    }
    }else{
    if(all(map {$_>0} values(%{$sigmap->{$tid}}))){
    if(!$portfolio->RiskAssetCount()){
    $tradable->{buyprice}=$tradable->getPrice($date);
    $tradable->{stoploss}=min(map {$tradable->getLow($date,$_)} (-7..-1));
    $tradable->{maxloss}=$tradable->{buyprice}-$tradable->{stoploss};
    $tradable->{buy_count}=1;
    $tradable->{position_percentage}=0.03*$tradable->{buyprice}/$tradable->{maxloss};
    push(@$delta,{tid=>$tid,percentage=>$tradable->{position_percentage},tag=>'signalbuy'});
    last;
    }else{}
    }else{}
    }
    }
    }
    $engine->backtestTS('ybgl(3,7,20,2.)-main::ybglStrategy,20000101,20050601')
    另外把这个系统加到demo的例子里了,可以访问http://itfin.afraid.org/fc用密码test登录(用户名可随意输,但要有唯一性,以免与别人的session冲突)进行针对个股的测试.
     
  10. 版主请看一下!

    VARIABLE:I=1;
    TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
    ATR:=MA(TR,10);
    IF BARSLAST(TR/ATR>=2)=0 AND C>HHV(REF(H,1),3) THEN
    BB:=CASH*0.03/(ATR*100);
    BB:=BB*100;
    BUY(BB);
    IF BARSLAST(TR/ATR>=2)=0 AND C<LLV(REF(L,1),3) THEN
    SELL();
    IF C-ENTERPRICE>(1.5*ATR) AND I<3 THEN BEGIN
    BB:=CASH*0.02/(ATR*100);
    BB:=100*BB;
    BUY(BB);
    I:=I+1;
    END;
    这是我写的一个交易系统,但不知中间那有不对的地方,在分析家上测试速度特别慢,是不是循环或分支有问题?请版主或大地飞鹰帮忙看一下!!谢谢!!
     
  11. Re: 版主请看一下!

    我没有引入分析家,不知道速度如何。

    你的表达没有反映这个系统的关键,距离太远了。qls已经做得很好了,ilian版主说qls是分析家的超级版主,我估计使用分析家也就是这个水平。使用分析家准确地表达出这个系统有点难,但是基本要点出来了,差别是在细节。你在qls的程序的基础上改进吧。