トップ  >  リファレンス  >  ストラテジーAPI  >  ストラテジーパラメータ
ストラテジーパラメータ


@Configurableアノテーションはユーザー定義のパラメータを使用する為に使用します。
ストラテジーのパラメータにストラテジーフィールドを表示するには、 public変数と@Configurableアノテーションが必要で、@Configurableアノテーションを先に書く必要があります。
パラメータはライブデータでの動作と、ヒストリカルテスターのバックテストの両方で使用出来ます。
ストラテジーパラメータダイアログがストラテジー起動前に表示されます。

パラメータプロパティ

ユーザーはGUIの値が表示されるパラメータ名を割り当てることが出来るだけではなく、
読み取り専用属性持たせたり、ステップサイズ属性を持たせたり、説明のツールチップテキストを持たせたりする事が出来ます。



@Configurable("通貨ペア1")
public Instrument instrument = Instrument.EURUSD;
@Configurable(value ="通貨ペア2", description = "an obligatory instrument", obligatory = true)
public Instrument instrument2;
@Configurable(value = "時間軸", readOnly = true, description = "読み取り専用(変更出来ません)")
public Period selectedPeriod = Period.ONE_MIN;
@Configurable(value = "ロット" , stepSize = 0.9, description = "カスタムステップサイズで変更")
public double amount = 0.02;






サポートされているパラメータタイプ


パラメータタイプに応じて、パラメータダイアログで異なる表示になります。
以下のパラメータタイプがサポートされています。

パラメータタイプ Javaでの型 表示 リモートモードでの違い
数値 int, double, short, long, Integer, Double, Short, Long ステップサイズで変更可能な
数値フィールド
-
ブーリアン boolean, Boolean チェックボックス -
文字列 String テキストフィールド -
ファイル java.util.File パスとファイル参照可能な
テキストフィールド
-
日時 java.util.Calendar, java.util.Date, long ,
Long(Configurable.datetimeAsLong = true)
日付ピッカー -
java.util.Color カラーピッカー -
定数 enum, Enum, class
(self-typed public static final fieldsを含んだクラス)
コンボボックス(単一選択) Configurable.options経由の
ユーザー定義定数
定数コレクション java.util.Collection
(enum, Enum, class
 (self-typed public static final fieldsを含んだクラス))
コンボボックス(複数選択) ユーザー定義定数は
許可されていません
フィード IFeedDescriptor(com.dukascopy.api.feed.utilインポート) データフィード選択ダイアログ -


全タイプの使用方法


各パラメータタイプの使用方法のサンプルです。


    @Configurable(value = "int パラメータ", stepSize = 3)
    public int intParam = 1;
    @Configurable(value = "double パラメータ", stepSize = 0.5)
    public double doubleParam = 0.5;
    @Configurable("bool パラメータ")
    public boolean boolParam = true;
    @Configurable("テキスト パラメータ")
    public String textParam = "some text";
    @Configurable("")
    public File file = new File(".");
    @Configurable(value="現在日時", description="default is current time")
    public Calendar currentTime = Calendar.getInstance();
    @Configurable("")
    public Color color = new Color(100, 100, 100);
    @Configurable("通貨ペア(enum)")
    public Instrument instrument = Instrument.EURUSD;
    @Configurable("")
    public Set<Instrument> instruments = new HashSet<Instrument>( 
            Arrays.asList(new Instrument[] {Instrument.EURUSD, Instrument.AUDCAD}) 
    );
    @Configurable("")
    public IFeedDescriptor renkoFeedDescriptor = new RenkoFeedDescriptor(Instrument.EURUSD, PriceRange.TWO_PIPS, OfferSide.ASK);





サンプルソースコード:StrategyParams.java





日付/時間の使用方法


特定の日時を設定するには、スタティックブロック内で設定する必要があります。
SimpleDateFormat.parseを使用した場合、Calendarコンストラクタが無いので、ParseExceptionでハンドル取得する必要があります。




    private static Calendar myCalendar;
    static {
        myCalendar = Calendar.getInstance();
        myCalendar.set(2012, Calendar.JULY, 17, 14, 30, 00);
    }
    
    @Configurable(value="指定日時", description="17th july 14:30")    
    public Calendar particularTime = myCalendar;
    
    private static Calendar calTodayAt5am;
    static {
        calTodayAt5am = Calendar.getInstance();
        calTodayAt5am.set(Calendar.HOUR_OF_DAY, 5);
        calTodayAt5am.set(Calendar.MINUTE, 0);
        calTodayAt5am.set(Calendar.SECOND, 0);
    }
    
    @Configurable(value="msec単位の日時", description="default is today at 5am", datetimeAsLong=true)    
    public long timeInMillis = calTodayAt5am.getTimeInMillis();





サンプルソースコード:StrategyParams.java





カスタム列挙の使用方法

通貨ペアやエントリー方向のようなJForex-API列挙を使用するだけでなく、
独自の列挙型を定義する事が出来ます。



    enum Mode { 
        BUY,
        SELL,
        NONE
    }
    @Configurable("モード (enum param)")
    public Mode mode = Mode.BUY;



また、self-typed定数(JForex-API 2.8.1)を持ったクラスを使用する事が出来ます。


    static class Person {
        
        public static final Person FOO = new Person("foo");
        
        public static final Person BAR = new Person("bar");
        
        public final String name;
        
        public Person(String name){
            this.name = name;
        }
        
        @Override 
        public String toString(){
            return name;
        }
    }
    
    @Configurable("")
    public Person person;
    
    @Configurable("")
    public List<Person> persons;



注意:この機能はリモートモードでは使用出来ません。

サンプルソースコード:StrategyParams.java









リモートモード用定数


Configurable.optionsフィールドを使用して、列挙の値をロードする事が出来、ロード後に文字列定数の選択肢を定義する事が出来ます。




    private static final String BULLISH = "BULLISH";
    private static final String BEARISH = "BEARISH";
    
    enum Mode{
        BULLISH(ConfigOptionsEnum.BULLISH),
        BEARISH(ConfigOptionsEnum.BEARISH);
        
        private final String name;
        
        private Mode(String name){
            this.name = name;
        }
        
        private static Mode fromString(String name){
            for(Mode mode : Mode.values()){
                if(mode.name.equals(name)){
                    return mode;
                }
            }
            return null;
        }
    }

    @Configurable(value = "mode1", options = { BULLISH, BEARISH})
    public String mode1 = BULLISH;

    @Override
    public void onStart(IContext context) throws JFException {
        Mode mode = Mode.fromString(mode1);
        context.getConsole().getOut().println("chosen mode: " + mode);
    }




サンプルソースコード:ConfigOptionsEnum.java







スポンサーリンク

スポンサーリンク
検索
リファレンスツリー


Copyright ©2016 JForexAPIで自動売買させ隊! All Rights Reserved.


Top

inserted by FC2 system