シンプルなトレードを作成
パラメータを定義

ストラテジーのパラメータはonStartメソッド実行前にセットします。
エディターでストラテジーJavaファイルを開き、Javaファイルにパラメータを追加します。
ストラテジーパラメータの詳細については、ストラテジーパラメータの項目を参照して下さい。


パラメータ定義の例
    // パラメータを定義します
    @Configurable( value = "通貨ペア" )
    public Instrument myInstrument = Instrument.EURGBP;
    @Configurable( value = "オーダータイプ", obligatory = true )
    public OfferSide myOfferSide = OfferSide.ASK;
    @Configurable( value = "時間軸" )
    public Period myPeriod = Period.TEN_MINS;

    public void onStart(IContext context) throws JFException {
        this.engine = context.getEngine();
        this.console = context.getConsole();



ファイルをコンパイルし、ストラテジーを起動すると"パラメータを定義"ダイアログが表示されます。



パラメータを設定完了後、"起動"ボタンを押すとストラテジーを開始します。

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





バーとティックを取得する

このパートでは前回定義したパラメータを使用します。
このパラメータはIBarITickオブジェクトの取得に使用します。
バーとティックについての詳細は、ヒストリーバーの項目とヒストリーティックの項目を参照して下さい。

ますIBarとITickのクラスオブジェクトを宣言します。



  // previousBarとmyLastTickの変数を宣言します
  private IBar previousBar;
  private ITick myLastTick;



onStartメソッド内で、
previousBarオブジェクトをIHistory.getBarメソッドで初期化し、
myLastBarオブジェクトをIHistory.getLastTickメソッドで初期化します。



  // previousBarとmyLastTickの値を初期化します
  previousBar = history.getBar(      myInstrument, myPeriod, myOfferSide, 1 );
  myLastTick  = history.getLastTick( myInstrument );



続いて、チャートの値をチェック出来るようにする為、ストラテジーのアウトプットに値を出力させます。


  // previousBarとmyLastTickの値を出力します
  console.getOut().println(previousBar);
  console.getOut().println(myLastTick);



ストラテジーを実行する前に、 IContext.setSubscribedInstrumentsを使って、通貨ペアリストに対象の通貨ペアを登録をする必要があります。
IBarを初期化する前に次のコードを追加します。



        // 対象の通貨ペアを通貨ペアリストに登録します
        Set<Instrument> instruments = new HashSet<Instrument>();
        instruments.add(myInstrument);
        context.setSubscribedInstruments(instruments, true);


Set - HashSetは、 値の重複を許さない順不同のオブジェクトを扱うコレクションです。
詳細はjava.utilパッケージのAPI仕様書参照。

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



サンプルソースコードのストラテジーを起動すると以下のような動作になります。
  1. 銘柄ウインドウの通貨ペアリストに対象の通貨ペアが登録されていない場合、対象の通貨ペアが追加されます。
    (対象の通貨ペアが登録されていないとストラテジーが起動出来ないので、追加する必要があります。)
     

    左:ストラテジー起動前。 右:ストラテジー起動後(パラメータでEUR/GBPを指定)。

  2. メッセージタブのメッセージにパラメータ値が表示されます。


  3. ストラテジーのアウトプットメッセージは、Strategyタブに表示されます。

バーの始値と終値に注意してください。チャート上の値を比較する必要があります。


チャートの値とストラテジーのアウトプットを比較します。
"パラメータを定義"ダイアログで選択した"通貨ペア"のチャートを開きます。
"パラメータを定義"ダイアログで選択した"時間軸"と同じ時間軸になるようにチャートを設定します。
"パラメータを定義"ダイアログで選択した"オーダータイプ"と同じ(アスクまたはビッド)になるようにチャートを設定します。
チャートの設定が完了したら、ストラテジーを実行します。

Strategyタブに出力された始値、終値、高値、安値、ボリュームが、チャート上の最後に確定したバーの値と比較し同じになっている事を確認します
(注意:最後に確定したバーなので、未確定の最新のバーの事ではありません)。









トレード部分を作成する

まず最初に、OrderCommand列挙をインポートするimport文を書きます。
この列挙はSELLBUYのコマンドを定義しています。
この列挙の定数は後で必要になります。



import com.dukascopy.api.IEngine.OrderCommand;



この例では、前回作成したストラテジーJavaファイル(BarsAndTicks.java)を使い、取引する為のソースコードを追加します。
最初に買うか売るかを決定するソースコードを書きます。
このケースでは、最後に確定したバーに基づいて決定します。
次のコードをonStartメソッドに追加します。
バーのgetOpenメソッドの戻り値とgetCloseメソッドの戻り値を比較して、買うか売るかを決定します。



    OrderCommand myCommand = previousBar.getOpen() > previousBar.getClose() ? OrderCommand.SELL : OrderCommand.BUY;



↑の例では三項演算子が使われていて分かり難いかもしれないので、崩して分かり易く書くと

    OrderCommand myCommand;   // OrderCommandオブジェクトを宣言

    if ( previousBar.getOpen() > previousBar.getClose() ) { // 始値 > 終値
        myCommand = OrderCommand.SELL;                       // 売りコマンドを設定
    } else {                                                // 始値 <= 終値
        myCommand = OrderCommand.BUY;                        // 買いコマンドを設定
    }

になります。


トレード操作を行う際は、IEngineメソッドのsubmitOrderを使用します。
トレードの種類についてはOrderCommandを用います。

submitOrderメソッドはオーダーラベル(Stringオブジェクトパラメータ)が必要です。
全てのオーダーに個別のオーダーラベルが必要になります。
(オーダーラベルに日本語は使えませんでした。)



// 1,000通貨でオーダーします(分解能は100万通貨です)。
engine.submitOrder( "MyStrategyOrder2" , myInstrument, myCommand, 0.001);



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

ファイルをコンパイルしストラテジーを起動します。
ポジションタブを確認すると、Ext.IDの欄に"MyStrategyOrder2"ラベルを持った新しいエントリー(ポジション)がある事を確認出来ます。
これはIEngine.submitOrderメソッドのパラメータに与えたラベルの名前です。


ポジションをクローズするには、対象のポジションの左側にあるチェックボックスにチェックを入れて、右クリックをして"ポジションをクローズ"をクリックします。






スポンサーリンク

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


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


Top

inserted by FC2 system