29. 5. 2024

5 1

WFマトリックスからのトレード数

注意:SQXビルド140以降用の更新版があります。添付のコードスニペットをご覧ください。.

 

このJavaスニペットは、新しいデータバンク列の機能を追加し、WFマトリックスのすべての組み合わせのトレード数を計算できるようにします。.

/*
 * Copyright (c) 2017-2018, StrategyQuant - All rights reserved.
 *
 * このファイル内のコードは、正確であり、意図したとおりに動作することを善意に基づいて作成されています。
 * このコードにバグを見つけた場合、改善案がある場合、またはご自身のコードスニペットを当社の標準ライブラリに組み込みたい場合は、以下の連絡先までご連絡ください:
 * https://roadmap.strategyquant.com
 *
 * このコードは、StrategyQuant製品内でのみ使用可能です。
 * StrategyQuant製品の有効なライセンス(無料、試用版、商用版を問わず)を所有するすべての方は、
 * 制限なくこのコードを自由に使用、複製、改変、または派生作品を作成することができ、
 * すべてのStrategyQuant製品での使用、および自身の修正や派生作品を
 * StrategyQuantコミュニティと共有することが許可されています。
 *
 * 本ソフトウェアは「現状有姿」で提供され、明示的または黙示的を問わず、いかなる種類の保証も付帯せず、
 * これには、商品性、特定目的への適合性、
 * および非侵害性の保証が含まれますが、これらに限定されません。いかなる場合においても、著作者は、本ソフトウェアまたはその使用に起因し、
 * またはその他の責任について、契約、不法行為、その他のいかなる法的根拠に基づくものであれ、本ソフトウェア、または本ソフトウェアの使用もしくはその他の取り扱いから生じ、
 * これに関連して生じたものについては、いかなる場合においても責任を負いません。
 *
 */
package SQ.Columns.Databanks;

import com.strategyquant.lib.L;
import com.strategyquant.tradinglib.DatabankColumn;
import com.strategyquant.tradinglib.ResultsGroup;
import com.strategyquant.tradinglib.SettingsKeys;
import com.strategyquant.tradinglib.ValueTypes;
import com.strategyquant.tradinglib.WalkForwardResult;
import com.strategyquant.tradinglib.optimization.WalkForwardMatrixResult;

public class NumberOfTradeWF extends DatabankColumn {
    
    public NumberOfTradeWF() {
		super(L.tsq("# of trades WF"), DatabankColumn.Integer, ValueTypes.Aproximate, 0, 0, 100);

        setWidth(70);
		
		setTooltip(L.tsq("取引回数 WF"));

        // これは、値が取引日数に依存することを意味します。
        // そのため、取引日数が異なる別の結果と比較する際は、日数で正規化する必要があります。
        // 取引日数が異なる別の結果と比較する際は、日数で正規化する必要があります。
		setDependentOnTradingPeriod(true); 
    }
    
    //------------------------------------------------------------------------

    @Override
    public String getValue(ResultsGroup results, String resultKey, byte direction, byte plType, byte sampleType) throws Exception {		
		/*
         * WF結果の統計値を取得するためのサンプルコード
         * ----------------------------------------------------
         * ----------------------------------------------------
         * ----------------------------------------------------
         */
        
        //WF行列の結果を取得する
		WalkForwardMatrixResult mwfResult = (WalkForwardMatrixResult) results.mainResult().get(SettingsKeys.WalkForwardResult);
        if(mwfResult==null) {
            return "NA";
        }
				
		/*
         *  WalkForwardMatrixResult のオプションパラメータ
         *     public int start1;
            public int stop1;
            public int increment1;
            public int start2;
			public int stop2;
            public int increment2;
            
            for(int j=mwfResult.start2; j<=mwfResult.stop2; j+=mwfResult.increment2) {
				for(int i=mwfResult.start1; i<=mwfResult.stop1; i+=mwfResult.increment1) {
                    WalkForwardResult wfResult = mwfResult.getWFResult(i, j);
                }
			}
         */
        int param1 = mwfResult.start1; //oos        
        int param2 = mwfResult.start2; //run
        
        //行列から特定のWF結果を取得する
		WalkForwardResult wfResult = mwfResult.getWFResult(param1, param2);
        
        /*
         * WalkForwardResult が算出した統計量
         * public SQStats stats = null; //全サンプル統計量
		 * public SQStats statsOOS = null; //OOS統計量
         * public SQStats statsStability = null; //安定性統計量
         * public SQStats statsScore = null; //スコア統計量
		 * public SQStats statsSpecial = null; //統計のスペシャル値
         */
        
        //計算された統計値を返す
        return wfResult.stats.getInt("NumberOfTrades")+"";
    }
        
}

 

1 コメント
最古の
最新 最も投票された
エマニュエル
2024年9月4日 午後2:19

最高だよ、トーマス!!!!!
良いアイデアですね!
ありがとうございます 🙂 🙂 🙂