シストレマスターへの道
シストレブログ人気ランキング  

シストレ徹底攻略シストレマスターへの道ワールド・トレーディング・エッジ基礎から学ぶシステムトレードシストレニュースシストレツールシストレナビTOPへ

 

2011年09月21日(水)

eSignal 〜各国の価格データを入手する〜



システムトレードでは、得られた価格データを入手して、検証・分析をしていく以上、データを入手する方法を考えなくてはいけません。

そこで、いくつか現状で考えられる方法をご紹介していこうと思います。

■eSignal
http://www.esignal.com/default.aspx

画像(320x218)・拡大画像(508x347)

 こちらは世界各国の株・先物・為替など様々な価格データを取得して、分析したいというシステムトレーダー向きのチャートツールになります。

 対象となる銘柄・先物によって、契約するデータは異なるので、月額費用を払えば価格データを取得する事ができます。

eSignalでは、海外のデータだけではなく、東証・大証の価格データも取得できますので、国内銘柄・先物を売買する時でも利用ができるのは良い点といえるでしょう。

費用体系は分かりにくい部分もありますが、大まかな分類としては3つに分けられます。

[Delayデータ:検証・分析段階]
・eSignal Ondemand

[リアルデータ:運用段階]
・eSignal Premier
・eSignal Premier Plus

eSignal OnDemand とPremierの違いは、リアルタイムデータを取得できるかできないかの違いになります。

検証段階では、OnDemandでも十分だといえますね。

■eSignal OnDemand
http://www.esignal.com/ondemand/pricing.aspx

1つの地域に限定した価格データであれば、$34.95/monthで利用が可能です。
全世界の価格データを取得したい場合、$44.95/monthで価格データを利用する事ができます。

標準でも120日程度のIntraday dataも入手ができるのですが、+$10/month で、北アメリカ・ヨーロッパのデータは数年前まで遡ってデータを取得が可能なようです。

[Intraday Historical dataについて]
http://www.esignal.com/ondemand/ondemand_historydata.aspx

eSignal OnDemandでも、MultiChartsに接続が可能なので、重宝しています。

■eSignal Premier
http://www.esignal.com/esignal/pricing.aspx

価格は $129〜/monthですね。OnDemandで検証して、運用しても問題ないもしくはリアルデータで無いと検証できないとなったタイミングで契約する形になるかと思います。

■eSignal単体でチャートも閲覧可能
私の場合、検証用のMultichartsに価格データを取得させる為にeSignalを利用していますが、単体でチャートも閲覧は可能です。

画像(278x320)・拡大画像(505x580)

■プログラム売買用の言語も利用可能
 Tradestation、MultiChartsのように、プログラム売買用の言語も利用ができます。少し中身を見てみましょう。
(※例として掲載しているだけなので、プログラム部分は読み飛ばした方がいいかも・・・)

function preMain() {
  setPriceStudy(true);
  setStudyTitle("Back Test: Donchian with Fixed Stops");
  setCursorLabelName("Upper Donchian", 0);
  setCursorLabelName("Lower Donchian", 1);
  setCursorLabelName("Stop", 2);
  setDefaultBarFgColor(Color.RGB(0x00,0x94,0xFF), 0);
  setDefaultBarFgColor(Color.RGB(0x00,0x94,0xFF), 1);
  setDefaultBarFgColor(Color.RGB(0xFE,0x69,0x00), 2); // Stop color
  setDefaultBarThickness(2, 2); // Stop Thickness
  setPlotType(PLOTTYPE_FLATLINES, 2); // Stop plot type
}

// Global Variables
var xUpper = null;
var xMiddle = null;
var xLower = null;
var nStop = null;
var bInit = false; // initialization flag

function main() {
  if (getCurrentBarIndex() == 0) return;

  if(bInit == false) {
    xUpper = upperDonchian(10);
    xMiddle = middleDonchian(10);
    xLower = lowerDonchian(10);
    bInit = true; // Prevents this code block from executing again.
}
    var nU = xUpper.getValue(-1);
    var nM = xMiddle.getValue(-1);
    var nL = xLower.getValue(-1);
    var bExitFlag = false;
    if(nU == null || nM == null || nL == null) {
    return; // Exit the formula if variables contain invalid data.
  }
  if (Strategy.isInTrade() == false) {
    nStop = null;
  }

  if (Strategy.isInTrade() == true) {
    if (Strategy.isLong() == true) { // Long Fixed Stop Exit
      if (open(0) <= nStop) {
        Strategy.doSell("Long Stop", Strategy.MARKET, Strategy.THISBAR);
        bExitFlag = true; // Exit trade occured on the current bar.
      } else if (low(0) <= nStop) {
        Strategy.doSell("Long Stop", Strategy.STOP, Strategy.THISBAR, Strategy.ALL, nStop);
        bExitFlag = true; // Exit trade occured on the current bar.
      }
    }
    if (Strategy.isShort() == true) { // Short Fixed Stop Exit
      if (open(0) >= nStop) {
        Strategy.doCover("Short Stop", Strategy.MARKET, Strategy.THISBAR);
        bExitFlag = true; // Exit trade occured on the current bar.
      } else if (high(0) >= nStop) {
        Strategy.doCover("Short Stop", Strategy.STOP, Strategy.THISBAR, Strategy.ALL, nStop);
        bExitFlag = true; // Exit trade occured on the current bar.
      }
    }
  }

  // Entry Strategy
  if (bExitFlag == false) {
    if (Strategy.isLong() == false && high(0) >= nU) { // Long Trade Signal
      Strategy.doLong("Long Signal", Strategy.LIMIT, Strategy.THISBAR, Strategy.DEFAULT, Math.max(nU, open(0)) );

      nStop = nM;
    } else if (Strategy.isShort() == false && low(0) <= nL) { // Short Trade Signal
      Strategy.doShort("Short Signal", Strategy.LIMIT, Strategy.THISBAR, Strategy.DEFAULT, Math.min(nL, open(0)) );

      nStop = nM;
}
}
    if(Strategy.isLong()) {
    setBarBgColor(Color.darkgreen);
    } else if(Strategy.isShort()) {
    setBarBgColor(Color.maroon);
    }
    return new Array(xUpper.getValue(0), xLower.getValue(0), nStop);
}

うーん、なんとなくわかるけど、文法の違いを吸収するのは面倒そう。私の場合は慣れ親しんでいるMultiChartsにつないでしまった方がいいかな・・・

eSignalの独自言語で書いていくか、それとも価格データ配信の為のツールとして割り切って使うかは、eSignalの汎用性などを考慮してやっていくのがよいかと思います。

>>“シストレマスターへの道”全記事バックナンバーはこちらから




Posted at 14時00分


ページのトップへ ページのトップへ

Sponsor AD

プロフィール

トレードシステムエンジニア

高橋謙吾

個人投資家として、米国の指数先物・債券先物を中心に4年前からシステムトレードで運用している。システムトレードの運用経験から某証券会社のシステムトレード環境の開発に監修・アドバイザーとして携わっている。

最近の記事

スポンサードリンク

2011/9

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

検索


当サイトコメントについて

当コメントは情報提供のみを目的として作成されたものであり、投資に関してはご自身でご判断くださいますようお願い致します。また、当資料は著作物であり著作権法により保護されております。無断で全文または一部を転載することはできません。

RSS1.0

[Login]


powered by a-blog
Copyright (C) 2007 PhiConcept,Inc. All rights reserved.