人類みんなごくつぶし

2004-10-27

[]Eclipse操作スクリプト 02:12

探してます。

やりたいことは

クラスパス変数や実行文字列置き換える

(ex. TOMCAT_HOME=C:/tomcat)

というもの

Antタスク作ろうと思ったがそれもだるいなぁという気もして。


Groovyプラグインってないものか。

スクリプト作成補助でなく、プラグイン環境からGroobyを実行する。

と、思ったけど、実際の処理自体(クラスパス変数を設定するみたいな)がないと

結局だるいな。

[]自分でEclipse向けのAntタスクを作成する場合 02:09

<eclipse.refleshLocal>の例

ブツ事態はorg.eclipse.core.resourcesプラグインに含まれる

plugin.xml

<antTask
       library="ant_tasks/resources-ant.jar"
       name="eclipse.refreshLocal"
       class="org.eclipse.core.resources.ant.RefreshLocalTask">
</antTask>

クラスはorg.eclipse.core.resources.ant.RefreshLocalTask

クラスを含むJARはresources/resoruce-ant.jar(resourceプラグインの中にある)


なお、ソースはplugins/org.eclipse.platform.source_3.0.1/src/org.eclipse.core.resources_3.0.1/ant_tasks/resources-antsrc.zip

に含まれる


Eclipseヘルプの「タスクおよび型の組み込み」も参照のこと。

(作ってないけど。。。)

[]リッチクライアント開発の引き合い状況は? 19:43

http://www.atmarkit.co.jp/news/survey/2004/01dev/dev.html

読者のプロジェクトで今後採用を予定(検討)しているリッチクライアント技術を尋ねたところ、「Windowsアプリケーション」に最も多くのポイントが集まった(図4)。Swingの性能改善/SWTの登場などで見直されつつある「Javaアプリケーション」が2番手につけているものの、全体的にはクライアントサーバ時代からクライアント開発に強みを持つマイクロソフト技術が、リッチクライアント時代にも大きな存在感を示している。

うぃーん

[]テクニカル分析 00:30

http://kaburobo.jp/howto/makerobot.html#6

テクニカル分析は TechnicalAnalysisManagerクラスを使って行うことができます。

このクラスでは以下のテクニカル分析を行うことができます。

その他のテクニカル分析を行う場合は、自分で計算するコードを記述する必要があります。

移動平均

移動平均乖離率

ゴールデンクロス/デッドクロス

MACD

RSI 

ボリュームレシオ


直近のRSIソートする例(長いな。。。)

public class TestRobot3 implements Robot{

    public void run(InvestmentAgent agent) {

        MyStockManager manager = new MyStockManager(agent);
        MyStock[] mystocks = manager.searchByLastRSI();
        
        for(int i=0; i<mystocks.length; i++){
            MyStock mystock = mystocks[i];
            System.out.println(
                    mystocks[i].getStock()
                    + "," + mystock.getLastRSIValue()
            );
        }
    }

    class MyStockManager{
        private InvestmentAgent agent;
        public MyStockManager(InvestmentAgent agent){
            this.agent = agent;
        }
        public MyStock[] searchByLastRSI(){
            Stock[] stocks = agent.getStocks();
            MyStock[] mystocks = new MyStock[stocks.length];
            for(int i=0; i<stocks.length; i++){
                mystocks[i] = new MyStock(agent, stocks[i]);
            }

            Arrays.sort(mystocks, new Comparator(){

                public int compare(Object o1, Object o2) {
                    double p1 = ((MyStock)o1).getLastRSIValue();
                    double p2 = ((MyStock)o2).getLastRSIValue();
                    if(p1 == p2){
                        return 0;
                    }else if(p1 < p2){
                        return -1;
                    }else{
                        return 1;
                    }
                }
            });
            return mystocks;
        }
    }
    
    class MyStock{
        private InvestmentAgent agent;
        private Stock stock;
        private RSI[] rsis;
        public MyStock(InvestmentAgent agent, Stock stock){
            this.agent = agent;
            this.stock = stock;
            calcRSI();
        }
                
        private void calcRSI(){
            Calendar time = Time.getTime(); 
            List infoList = agent.getInformationManager().getIndexInformation(stock, time, -20);//過去20日(適当な日数)
            PriceData[] infos = (PriceData[])infoList.toArray(new PriceData[0]);
            TechnicalAnalysisManager tech = agent.getTechnicalAnalysisManager();
            List rsiList = tech.getRSI(infos, "", 9);//9日RSI
            rsis = (RSI[])rsiList.toArray(new RSI[0]);
            
        }
        
        public Stock getStock(){
            return stock;
        }
        
        public double getLastRSIValue(){
            return rsis[rsis.length-1].getRsi();
        }
    }
}

TechnicalAnalysisManager#getXXXメソッドでは、PriceDataのtype(String型)を渡すメソッドが

ありますが、このtypeは通常の株価の実装IndexInformationの場合は、無視されるようです(何をわたしても一緒)。StockMarketInformationの場合、引数日経の価格、ダウの価格など、いろいろ変わります。


参考:PriceDataインターフェイスクラス階層

(Iはインターフェイス、Cはクラス)

(I)PriceData
   (C)ExchangeInformation
   (C)FutureInformation
   (I)StockPriceData
      (C)IndexInformation
      (C)StockMarketInformation

カブロボと直接関係はないですが、Listから配列への変換は、

List#toArray(ArrayType[])

メソッドが便利です。引数のArrayType[0]はちょっと奇妙に感じますが、

こういう風に書いておくと、ちょうどいいサイズの配列を返してくれます。


配列のソートは、

Arrays.sort(Object[], Comparator)

が利用できます。

引数にComparatorインターフェイス(の実装クラス)をわたします。

espassiespassi 2004/10/28 07:16 各銘柄毎に、適したオシレータや相場(BOXか上昇か下落か)の状況、地合などがあると思うので、その評価関数的なものも組み込めると人の考え方と変わらなくなってくるねぇ。

muimymuimy 2004/10/29 01:03 自分の頭の中でも評価関数がまわってるのかなぁー

トラックバック - http://d.hatena.ne.jp/muimy/20041027
Connection: close