2009年6月 6日 (土)

近未来型FX自動取引ツールとは

サザインベストメントで新しい自動売買のツールがリリースされるようです。

近未来型FX取引システム「トレードメッセンジャー」

これまでも投資のサービスとしてプロの投資家がシグナルをメールなどで配信するサービスはあったと思います。が、メールでシグナルを受け取っても実際にトレードするのは自分自身であるため、タイミングを逃したり、何らかの事情で売買できなかったり、取引チャンスを逃すことも多かったのではないでしょうか。

このソフトはシグナルを配信してくれるトレーダーから受信したシグナルをもとに自動売買を行ってくれるというソフトのようです。これで仕事中でも就寝中でも、取引チャンスを逃すことは無くなりますね。なかなか画期的な取引システムだと思います^^

今のところシステムの利用料は無料ですが、サザインベストメントでトレードメッセンジャー専用口座をオープンする必要があるようです。今月中には口座開設できるようになるそうです。これは期待大!ですねw

>>サザインベストメント

| | コメント (0)

2008年4月16日 (水)

CTL言語マニュアル 無料配布

4月14日よりCTL言語(DealBook360自動売買プログラム言語)のマニュアルがATS総合ポータルサイト(サザインベストメント)から配布されています。本マニュアルは一度2月に配布停止となっていたのですが、バージョンアップしてようやく再配布が開始されました。

Ctl

マニュアルは電子書籍ですので、PDFとして配布されています。200ページ以上あるのですが、サザインベストメントに口座を開設していると、無料で読むことができます。うれしいですね^^。

ざっと一通り見て見たのですが、ChartStudio(CTL開発環境)を使ってインディケータや、ストラテジー(自動売買プログラム)を1から作成する方法がわかりやすく解説されており、まさに初心者の方にうってつけの内容ではないかと思います。

CTL言語の細かい仕様や、動きなど、私も知らなかった内容もありました。読んでよかったです(^^;

それと、ところどころにでてくるコラム「ちょっとひといきシステムトレード徹底攻略」も、シストレの心構えみたいなものが記載されてますので、読んでおいて損はないと思います。

マリュアルの配布サイトはこちら>ATS総合ポータルサイト

入手するには口座開設が必要です>サザインベストメント

| | コメント (2)

2008年3月27日 (木)

ChartStudio入門 (13) インディケータのスタイルを変更する

ChartStudio入門(13)です。
※ChartStudioをもっていない方はDealbook360(サザインベストメント)を入手してください。
※GFTで公開されている新バージョン(2.10.927.21)を利用しています。

今回は、インディケータラインのスタイル設定方法を記述したいと思います。

例えば次の単純なインディケータの場合ですと、ラインはデフォルトのスタイルが適用されます。

indicator test_indicator;
input period = 25;
draw line("test-1");
begin
  line := sma(close ,period);
end.

Trend1

これのラインのスタイルを変更してみましょう。ラインのスタイルとして線種(破線、ヒストグラムなど)、色(赤、青・・)、線の太さ(1、2、3・・)が変更可能です。

次の例では、緑色で線幅2のドット線を描きます。

indicator test_indicator;
input period = 25;
draw line("test-1", dot_line, green, 2),
begin
  line := sma(close ,period);
end.

Trend2

ヒストグラムを描くことも可能です。

indicator test_indicator;
input period = 25;
draw line("test-1", histogram, red, 1),
begin
  line := sma(close ,period);
end.

Trend3

一応、全ての線種のサンプルを記述しておきます。

Trend

上から順番に、
red - default_style
blue - solid_line
yellow - dash_line
green - dot_line
cyan - dash_dot_line
magenta - dash_dot_dot_line
white - invisible
dark_cyan - points
dark_red - crosses
dark_yellow - histogram

となっています。

上手く使い分けてラインを描画してください^^。

| | コメント (0)

2008年3月11日 (火)

ChartStudio入門 (12) ファイル出力

ChartStudio入門(12)です。
※ChartStudioをもっていない方はDealbook360(サザインベストメント)を入手してください。
※GFTで公開されている新バージョン(2.10.927.21)を利用しています。

今回は新バージョン(2.10.927.21)で追加されているファイル出力の関数をご紹介します。残念ながらファイル入力はできないため、出力のみの機能です。

それではまず、それぞれの関数説明から。

■openfile
概要:ファイルをオープンする。オープンに成功すると(1)番目の引数にファイルポインタが返ります。
入力引数:(1) ファイルポインタ(file), (2) ファイルパス(string), (3) オープンモード(app, trunc)
出力結果:なし

オープンモード
app・・・追加書き込みモードです。ファイルがなければ新規作成します。
trunc・・・新規書き込みモードです。ファイルがあれば再生成します。

■printf
概要:ファイルに指定した文字列を書き込む。事前にopenfileでファイルをオープンしておく必要があります。
入力引数:(1) ファイルポインタ(file), (2) 文字列(string)
出力結果:なし

文字列以外の型を文字列に変換するには、次の関数を使用します。
str, numbertostring, booltostring, seriestostring

■closefile
概要:ファイルをクローズする。クローズ後はファイルポインタは利用できません。
入力引数:(1) ファイルポインタ(file)
出力結果:なし

さて、それではファイル出力するサンプルを以下に記述します。

indicator test_ind;
vars f(file);
begin
  openfile(f, "C:\\temp\\aaa.txt", app);
  printf(f, "hello world !!");
  closefile(f);
end.

openfile関数ではパスは自由に指定することができますが、各フォルダの区切り文字は\ではなく、\\と二重に記述する必要があるので注意してください。おそらく文字列中という事で、\\の最初の\がエスケープ文字となっているのだと思います。

上記を実行するとC:\temp\aaa.txtというファイルが作成され、チャートの足が更新されるたびに1行づつ増えていきます。

hello world !!
hello world !!
hello world !!
hello world !!

・・

このようにファイル出力ができるようになると、様々な情報(例えばシステムのエントリータイミングなど)をファイルに書きだして、それを別のアプリケーションが参照するという事ができます。つまり外部のアプリケーションと連携ができますね。

実際のところ、どのような使い道があるかはわかりませんが、拡張性が高まるのは事実だと思います。
是非、有効活用してください^^。

| | コメント (2)

2008年2月27日 (水)

ChartStudio入門 (11) トレンドラインの角度を求める

ChartStudio入門(11)です。
※ChartStudioをもっていない方はDealbook360(サザインベストメント)を入手してください。

前回の数学関数(記事はこちら)を使ったサンプルを紹介したいと思います。

割と良く聞くのが、移動平均線などのトレンドラインの角度を求めたいというような需要です。それでは角度を計算して見ましょうか。角度を求めるにはatan()関数を利用します。

まずatan()関数について簡単に説明しておきます。

三角関数のうちtan(タンジェント)の逆関数がatan(アークタンジェント)になります。次の図を見てください。

Atan

緑色の三角形の底辺がx、高さがy、角度をθとしたとき、tanθ=y/x が成り立ちます。これに対する逆関数tan−1(y/x)=θとして表されます。ここでtan−1というのは、アークタンジェント、つまりatanの事です。

θ=atan(y/x)

yの数と、xの数がわかれば、θ(角度)を求める事ができるという事です。ただし、ここでθは単位がラジアン(-π/2~π/2)ですので注意してください。

さて、それでは次のような移動平均線(トレンドライン)に当てはめて考えてみましょう。

Trend

θを求めたいと思います。xはチャートが表示しているタイムフレームの時間です。例えば1時間足なら1時間となります。yは価格差です。例えば始点の時点が100.00で、終点が100.10であったなら、yは0.10となります。

ここで一つ重大な落とし穴があります。x(時間)とy(価格)の単位が異なっているからです。これでは角度を求める事なんてできませんね・・。では単位を揃えましょう。

xはタイムフレームの時間と書きましたが、これを価格に合わせます。といっても時間->価格になんて変換することはできませんので、チャートを見てxの長さを価格で目視算出する必要があります。上記の例でいくと、yが0.10なら、だたい同じくらいとして、xも0.10で計算するというように半ば強引な変換が必要なんですね。

さて賢明な方ならこの時点で気づいたかと思いますが、xを目視で算出している以上、実際のシステムにはあまり役には立ちません。なぜならチャートを拡大、縮小すればxの長さは変わるからです。角度を求めるというのは一見簡単そうですが、実はチャートにおいて角度というものは表示している状況によって変わるものなので、算出することは難しいのです。

とりあえず、ここでは拡大・縮小などを使わずに決められた縮尺で、かつ決められたタイムフレームで限定して使うという前提で計算したいと思います。次は移動平均線の角度を表示するインディケータです。

indicator test-1;
input period = 25;
draw line("test-1");
vars pos(number),ss(series);
begin
  ss := sma(close, period);
  for pos := (front(close) + period + 1) to back(close) do begin
    line[pos] := atan((ss[pos] - ss[pos-1]) / 0.10) * (180 / 3.14);
  end;
end.

atanを使って角度を求めています。ssは単純移動平均線でposとpos-1(現在バーと、一つ前のバー)の差分をy、0.1がxとしています。また、atan()で求めるのはラジアンですので、180/πをかけて角度(-180°~180°)に変換しています。

なお、xの長さを0.1と固定していますので、xがレートの0.1と同じ長さになるようにチャートの拡大、縮小でサイズを合わせてください。私はドル円のチャートで1時間足を基準に作成しました。

チャートに適用したイメージは次のようになります。

Test_ind

チャートの下ウィンドウに表示されているのが移動平均線の角度です。-30°から30°くらいまでトレンドに合わせて変化している様子が見て取れます。角度が急な箇所がトレンドの勢いがもっとも強いところになっています。

このような角度を利用したシステムもできるかもしれませんね。ただしチャートの表示は固定で使う必要がありますが・・(^^;

| | コメント (0)

2008年2月22日 (金)

ChartStudioヘルプ日本語訳公開

サザインベストメントで提供されているDealBook360は、本家GFTのDealBook360より若干古いバージョンになります。

GFT版 バージョン2.10.927.21

サザ版 バージョン2.8.918.12.1

どうやらATSを利用して自動売買させるには、GFT版の方が良いそうです(知らなかった・・)。どのように違うのかというのが、こちらのページに記載されています。またGFT版の日本語マニュアルも提供されています。

Chart Studioヘルプ 日本語版

ひとつ気になったのは新しいバージョンで組み込まれている入力/出力関数。ファイルを読み込んだり、書き込んだりできると思うのですが、使い方はよくわかりません。もしファイルの入出力ができるのなら、かなりプログラミングの幅が広がりそうな気がするのですが・・。

ただし一つ注意点としては、今まで動作していたシステムが、新しいバージョンで動作しなくなる可能性があるそうです。上手く、下位互換をサポートできていないみたいですね。

また新しいバージョンを入れて見て色々と動作検証してみたいと思います^^。

| | コメント (4)

2008年2月11日 (月)

CTL言語マニュアル 無料配布

2月7日よりCTL言語(DealBook360自動売買プログラム言語)のマニュアルがATS総合ポータルサイト(サザインベストメント)から配布されています。

Ctl

マニュアルは電子書籍ですので、PDFとして配布されています。240ページ近くあるのですが、サザインベストメントに口座を開設していると、無料で読むことができます。うれしいですね^^。

ざっと一通り見て見たのですが、ChartStudio(CTL開発環境)を使ってプログラムを1から作成する方法がわかりやすく解説されており、まさに初心者の方にうってつけの内容ではないかと思います。

CTL言語の細かい仕様や、動きなど、私ですら「目からウロコ」な内容もありました。読んでよかったです(^^;

それと、ところどころにでてくるコラム「ちょっとひといきシステムトレード徹底攻略」も読んでおいて損はないですね。シストレの心構えみたいなものが記載されてます。個人的にもこのコラムを読んで新しい発見がありました。

マリュアルの配布サイトはこちら>ATS総合ポータルサイト

☆☆ご注意:マニュアルの不備により、今現在は無料配布は停止中のようです。今しばらくお待ちください。☆☆

入手するには口座開設が必要です>サザインベストメント

| | コメント (0)

2008年1月26日 (土)

ChartStudio入門 (10) 数学関数一覧

ChartStudio入門(10)です。
※ChartStudioをもっていない方はDealbook360(サザインベストメント)を入手してください。

今回は数学関数をまとめてみました。

数学関数はシステムによっては多用すると思います。例えば、atan関数を使って直線の傾きを求めることもできますし、使い方次第で色々なアルゴリズムができると思います。(用例については次回に触れたいと思います。)

■abs
概要:絶対値を求める
入力引数: (1)数値
出力結果: 絶対値
内容:指定した数値の絶対値を返す

■max
概要:最大値を求める
入力引数: (1)数値1、(2)数値2
出力結果: 最大値
内容:指定した二つの数値1、2のうち、大きい数値を返す

■min
概要:最小値を求める
入力引数: (1)数値1、(2)数値2
出力結果: 最小値
内容:指定した二つの数値1、2のうち、小さい数値を返す

■sin
概要:正弦(サイン)を求める
入力引数: (1)数値
出力結果: 正弦値
内容:指定した数値の正弦(サイン)を返す

■cos
概要:余弦(コサイン)を求める
入力引数: (1)数値
出力結果: 余弦値
内容:指定した数値の余弦(コサイン)を返す

■tan
概要:正接(タンジェント)を求める
入力引数: (1)数値
出力結果: 正接値
内容:指定した数値の正接(タンジェント)を返す

■atan
概要:逆正接 (アークタンジェント)を求める
入力引数: (1)数値
出力結果: 逆正接
内容:指定した数値の逆正接 (アークタンジェント)を返す

■sqrt
概要:平方根を求める
入力引数: (1)数値
出力結果: 平方根
内容:指定した数値の平方根(√)を返す

■pow
概要:べき乗を求める
入力引数: (1)数値、(2)べき乗
出力結果: べき乗
内容:指定した数値のべき乗を返す

■exp
概要:指数関数を求める
入力引数: (1)数値
出力結果: 指数関数
内容:指定した数値の指数関数 (e を底とする数式のべき乗) を返す

■ln
概要:自然対数を求める
入力引数: (1)数値
出力結果: 自然対数
内容:指定した数値の自然対数(定数 e (2.71828182845904) を底とする対数)を返す

■log
概要:対数を求める
入力引数: (1)数値
出力結果: 対数
内容:指定した数値の対数(10を底とする対数)を返す

■round
概要:正数値に丸める
入力引数: (1)数値
出力結果: 正数値
内容:指定された数値を少数点0桁を切り捨てた数値を返す(平たくいえば整数値に丸める)

■int
概要:整数部を求める
入力引数: (1)数値
出力結果: 正数部
内容:指定された数値の整数部を返す

■frac
概要:少数部を求める
入力引数: (1)数値
出力結果: 少数部
内容:指定された数値の少数部を返す

| | コメント (3)

2007年12月28日 (金)

DealBookWebリリース

12/27よりサザインベストメントからDealBookWebがリリースされました。

Dealbookweb2

いわゆるWeb上で操作ができるDealBookトレーディングソフトの簡易版という位置づけなのですが、これがけっこう良く出来ています^^。

Web版という事で、複雑な機能などが省略されているため、非常にシンプルになっています。必要最小限の通貨ペアの表示(自分で選択可能)、チャートやポジションの表示も見やすく整理され、注文も簡単に行うことができるようになっています。

正直なところ、DealBook360自体は起動に時間がかかるし、取り扱われる通貨ペアが多すぎて注文を行うにも大変だと思ってたのですが(特に125種類もある通貨ペアのプルダウンを選択するのは大変でした・・・)、このWeb版なら簡単に注文を行う事が出来ます。

まさに、simple is best ! ですね。

また、通貨ペアやチャートの設定などはある程度自由に編集ができるのでカスタマイズ性もあります。一つ残念なのは、設定は自分のパソコンに保存されているようで、外出先など別のPCから表示すると再設定する必要があるということでしょうか。できれば設定はWebサーバに残して、どの端末からアクセスしても同じ設定で表示して欲しかったですね(^^;。

もちろん複雑なインディケータを表示させたり、完全自動売買を行うためにはDealBook360などの本格的なトレーディングソフトが必要ですが、日常的にはこちらのWeb版で十分です。重宝しそうですw。GoodJob!

>>サザインベストメントで、書籍プレゼントも実施中!

| | コメント (2)

2007年12月 3日 (月)

ChartStudio入門 (9) movmax, movmin

ChartStudio入門(9)です。
※ChartStudioをもっていない方はDealbook360(サザインベストメント)を入手してください。

今回は良く利用する最大値、最小値を求めるための関数、movmaxとmovmin関数を説明したいと思います。

※実はこの関数はヘルプでは「Returns index of maximum」と記載されていて、最大を表す値が格納された配列のインデックス番号が戻りそうなのですが、しかし実際はインデックス番号ではなく最大値、最小値そのものが戻ります。ご利用時は、ご注意ください。

それではまず、それぞれの関数説明から。

movmax
概要:配列から最大値を取得する
入力引数: (1) 元になる配列, (2) 開始位置, (3) 期間
出力結果: 最大値

movmin
概要:配列から最小値を取得する
入力引数: (1) 元になる配列, (2) 開始位置, (3) 期間
出力結果: 最小値

この関数の引数は、開始位置から過去に向かって期間を指定するのですが、少しわかりにくいかもしれません。図にして見ましたのでこちらで確認して見てください。開始位置をx=5、期間をn=5としています。

Maxmin

サンプルプログラム
※「過去20日間(高値)の最大値」を描画します。

indicator test_ind;
input period = 20;
draw line("test-1");
vars pos(number);
begin
  for pos := (front(high) + period - 1) to back(high) do begin
    line[pos] :=  movmax(high, pos, period);
  end;
end.

Chart

いかがでしょうか。最大値、最小値はよく使うと思いますので、是非マスターしてください^^。それではまた次回をお楽しみに。

| | コメント (9)

2007年11月21日 (水)

自動売買システム専用サイト公開

11/19よりATS(自動売買システム)専用サイトサザインベストメント)という凄いサイトが公開されました。

ATS総合ポータルサイト

※ありがたい事に、「関連ブログ」として当ブログもトップページにリンク頂いています^^

さてコンテンツの内容ですが、DealBook360のATS(自動売買システム)に特化したものとなっています。ATSを知らない方でも、わかりやすく整理されているので、一度除いて見てはいかがでしょうか。

・ATSとは?
・ATSの使い方

またATSはCTL言語というプログラミング言語を用いて開発するのですが、CTL言語についても詳しく解説があります。

・CTL学習コンテンツ

それと個人的に特に目を引いたのが、困ったときのサポート体制です。

・FAQ
・サポート

FAQではDealBook360でよくあるトラブルなどがまとめて掲載されていますので、システムを作成する方は事前に目を通しておくことをお勧めします。

また、サポートではサザインベストメントの口座を開設している人限定ですが、なんと専門の業者に問い合わせることもできます。今まではFX業者に技術的な事を問い合わせても、まともな回答は得られない事が多かった事を考えると、このサポート体制は本当に凄い事だと思います。他のプラットフォーム(MetaTraderや、Visual Trader)にはない優位性ですね。

あとサイトを見ていると気がつくと思うのですが、CTLマニュアル販売、ストラテジー販売も予定されているようです。今後に期待がもてそうです^^。

興味がありましたらどうぞ。>>ATS総合ポータルサイト

サザさんとのタイアップ企画もこちらでやってます。>>書籍プレゼント

| | コメント (0)

2007年11月 3日 (土)

ChartStudio入門 (8) displace, makeseries

ChartStudio入門(8)です。
※ChartStudioをもっていない方はDealbook360(サザインベストメント)を入手してください。

今回は配列を操作するための基本、displaceとmakeseriesの関数を説明したいと思います。

まずdisplaceですが、この関数は「既存の配列を指定の数だけシフトした新しい配列を作成する」ことができます。たとえば、一目均衡表の遅行スパンなどは終値を26日シフト(遅らせる)したものですが、そのような場合に利用できます。(下記図はクリックすると拡大します)

Displace

次にmakeseriesですが、この関数は「指定した値で埋められた新しい配列」を作成することができます。たとえば、水平直線を引きたい場合などに利用できます。(下記図は一応イメージです・・(^^;)

Makeseries

実際は、displace関数を使うことはあまりないかもしれません。条件判定するときはわざわざシフトされた配列を作るまでもなく、配列のインデックス(配列番号)をずらせば事足りるからです。逆に、お勧めしたいのはmakeseries関数のほうです。この関数は直線を引くだけでなく、使い方次第では非常に有効な使い方ができます(詳細は後述します)。

それではまず、それぞれの関数説明から。

displace
概要:配列を指定の数だけシフトする
入力引数: (1) 元になる配列, (2) シフトする数(正なら未来方向へ、負なら過去方向)
出力結果: シフト後の配列

makeseries
概要:配列の開始インデックスから終了インデックスまでを指定の数値で埋める
入力引数: (1) 開始インデックス, (2) 終了インデックス, (3) 数値
出力結果: 作成された配列

サンプルプログラム
※「終値の+10シフト線、終値の-15シフト線、最新の終値の水平線」を描画します。
indicator test_ind;
draw line1("line-1"), line2("line-2"), line3("line-3");
begin
  line1:=displace(close, +10);
  line2:=displace(close, -15);
  line3:=makeseries(front(close), back(close), close[back(close)]);
end.

さて最後になりましたが、makeseries関数は直線を引くためだけにあるのではなく、次のような使い方することで有効利用できますので紹介しておきます。

以前「配列の使い方」という記事で書いたのですが、「配列と数値の掛け算/割り算」はできるが、「配列と数値の足し算/割り算」はできないと書きました。しかし、インディケータによっては、配列に一定値を足したい/引きたいときがあります。

例えば、終値線に対して±1円(ドル円の場合)の線を引きたいときなどです。

「line1:=close+1」のように書きたいところですが、これは上記の制約によりエラーになります。このようなときにmakeseries関数を次のように使うと、非常にシンプルに実現する事ができます。

indicator test_ind2;
draw line1("line-1"), line2("line-2");
vars value(series);
begin
  value:=makeseries(front(close), back(close), 1);
  line1:=close+value;
  line2:=close-value;
end.

Plusminus_2 

いかがでしょうか。かなりスマートに記述できると思います。是非、有効活用してください^^。

| | コメント (2)

2007年10月31日 (水)

サザ推薦ブロガー

先日、当ブログがサザインベストメントさんの「推薦ブロガー」として紹介されました。

>>サザ推薦ブロガー

最近書いているChartStudioのATS(自動発注システム)関連の入門記事を評価頂いたようで、他のそうそうたるメンバーに混ぜて頂いて光栄な限りですww。

※ChartStudio関連の記事は左にあるカテゴリー「ChartStudio」をご覧ください。

この推薦ブロガーは少しおもしろい企画になっていて、各ブロガーの記事のRSSを取得して、サザのホームページ上でも同じ記事が掲載されると言う仕組みになっています。

最新の記事だけですが、画像やリンクもそのままホームページに載りますので、つまりサザさんのホームページを見ていれば、当ブログや他の方のブログの記事も読めて一石二鳥と言うわけです^^。

ところで今回、推奨ブロガーに掲載されるにあたり、なんと本ブログのバナーを作りました。最初のページにあると思うのですが、「完全自動売買」みたいな文字がデカデカとのっているやつです(笑)。

しかも、うっすらと本人の写真まで載せてしまいました。わかるようでわからないと思いますが、これは恥ずかしいですね・・・(^^;

さて話が少しそれましたが、ChartStudioのATS機能も更なる改良が予定されているようなので、個人的にも今後に大いに期待が持てるシステムだと思っています。当ブログでは今後もどんどんChartStudioの記事を充実させていこうと思っていますので、乞うご期待ください。

| | コメント (0)

2007年10月24日 (水)

ChartStudio入門 (7) CrossUp , CrossDown

ChartStudio入門(7)です。
※ChartStudioをもっていない方はDealbook360(サザインベストメント)を入手してください。

今回は使用頻度の非常に多いcrossupとcrossdownの関数を説明したいと思います。
Cross Upは、二つのラインが上昇傾向を持って交差する事を判定します。逆に、Cross Downのほうは、下降傾向を持って交差する事を判定します。

もっと簡単に書いてしまうと、Cross Upはゴールデンクロス、Cross Downはデッドクロスを判定すると言ったほうが良いでしょうか。絵で書くと次のようになります。

CrossUP(赤が短期線、青が長期線)

Crossup

CrossDown(赤が短期線、青が長期線)

Crossdown

それぞれの関数仕様は以下です。

crossup
入力引数: (1) 短期線, (2) 長期線
出力結果: 短期線が長期線に対して上方向に交差したならtrue、交差していないならfalse

crossdown
入力引数: (1) 短期線, (2) 長期線
出力結果: 短期線が長期線に対して下方向に交差したならtrue、交差していないならfalse

サンプルプログラム
strategy sample_macd;
input lot = 1;
begin
  MACD();
  if crossup(MACD.line, MACD.line_signal) then buy(lot);
  if crossdown(MACD.line, MACD.line_signal) then sell(lot);
end.

また、それぞれの判定ですが、最新値よりも1個前の足と2個前の足を使って判定しているようです。つまりMQL言語的(MT4)に記述すると次のようになります。

bool crossup(double first[], double second[]) {
  if (first[2] < second[2] && second[1] <= first[1]) {
    return true;
  }
  return false;
}

bool crossdown(double first[], double second[]) {
  if (first[2] > second[2] && second[1] >= first[1]) {
    return true;
  }
  return false;
}

※=判定の位置はもしかすると間違っているかもしれません。

MT4で記述するとけっこう複雑なcrossup,crossdownも、CTLなら簡単にかけてしまうことがわかります。

| | コメント (5)

2007年10月 6日 (土)

ChartStudio入門 (6) インディケータ関数の仕様確認方法

ChartStudio入門(6)です。
※ChartStudioをもっていない方はDealbook360(サザインベストメント)を入手してください。

今回はシステムで提供されているインディケータ関数の仕様確認の仕方です。

稀にですがヘルプに乗っているサンプルプログラムが利用しているインディケータ関数が誤っており動作しない場合があります。このようなときに関数の仕様を確認できると修正できるようになります。

たとえばヘルプには次のような、MACDのゴールデンクロス、デットクロスで自動売買を行うストラテジーがサンプルとして記載されています。

Sample

<ソースコード抜粋>
strategy sample_macd;
input lots = 1;
begin
  MACD();
  if crossup  (MACD.res, MACD.signal) then buy(lots);
  if crossdown(MACD.res, MACD.signal) then sell(lots);
end.
 

sample_macdプログラムは上記のようになっていますが、実はこのままコンパイルをするとエラーになってしまいます。

Error: line "res" does not exist
Error: type of parameter 1 is invalid, expected type is series
Error: line "signal" does not exist
Error: type of parameter 2 is invalid, expected type is series

エラー内容は「res、signalという変数が存在しない」というものです。これがなぜでるかというと、MACDインディケータの仕様が違うためのようです。おそらくヘルプを作成した時点のMACD関数が若干古く、最新のMACD関数と上手く整合が取れないのだと思います。

さて、それでは最新のMACD関数の仕様を見て見ましょう。実はChartStudioでは各種インディケータの関数はソースコードが公開されていますので、仕様を簡単に確認することができるのです。

「SystemModule」タブを開いて「MACD」を探します。「MACD」をダブルクリックしてプログラムを開くとソースコードを見ることが出来ます。

Macd_sample

次のようになっていると思います。

<プログラム抜粋>
indicator MACD;
input price = close,
  first_period  = 12,
  second_period = 26,
  signal_period = 9;
draw line("MACD"), line_signal("MACD sig"), line_histogram("MACD hgm", Histogram);
begin
  line := ema(price, first_period) - ema(price, second_period);
  line_signal := ema(line, signal_period);
  line_histogram := line - line_signal;
end.

注意してみてほしいのがdrawで定義されている箇所です。drawで定義された変数がMACDインディケータの出力、つまりインディケータの線に対応するのですが、この変数を外部のストラテジーから呼び出すことができるのです。
よく見ていただくとわかると思いますが、変数名はlineline_signalline_histogramとなっています。

さきほどのストラテジーから呼び出していた変数は、ressignalでしたね。ここで不一致がおきていますので、最新のMACDに合わせて次のように修正してください。これでコンパイルが通るようになると思います。

<プログラム抜粋>
strategy sample_macd;
input lots = 1;
begin
  MACD();
  if crossup  (MACD.line, MACD.line_signal) then buy(lots);
  if crossdown(MACD.line, MACD.line_signal) then sell(lots);
end
.

このように非常に簡単にインディケータの仕様を確認することができますので、何か困った事があったらインディケータ関数のソースコードを解読してみると良いかと思います。

また、これらの関数はサンプルとしても非常に参考になると思います。プログラムの幅が広がりますので、一度眺めて見てはいかがでしょうか。

| | コメント (0)

2007年9月 4日 (火)

ChartStudio入門 (5) 繰り返しの記述方法

ChartStudio入門(5)です。
※ChartStudioをもっていない方はDealbook360(サザインベストメント)を入手してください。

今回はプログラムで良く使われる繰り返しについて説明したいと思います。

繰り返しというのは、処理を繰り返すことです。たとえば配列のコピーなどは、配列の1つ1つの要素をコピーすると言う動作を繰り返します。

繰り返しにはfor文とwhile文があり、それぞれ説明いたします。

■for文

まずはfor文のサンプルから追って見ましょう。for文の場合は「××から○○」のように予め値域が決まっている場合の繰り返しに有効です。

vars i(number),sum(number);
begin
  sum := 0;
  for i := 1 to 10 do
    sum := sum + i;
end.

上記を説明すると、「iという変数が1から数えて10になるまで、sumの計算式を繰り返す」ということになります。つまりこの式では、sumの値は1から始まり、1->3->6->10->15->21->28->36->45->55と、最後はsumの値が55になります。

また、次のようにdowntoを使えば、「iという変数が10から数えて1になるまで、sumの計算式を繰り返す」というようにiの変数をデクリメントすることもできます。

vars i(number),sum(number);
begin
  sum := 0;
  for i := 10 downto 1 do
    sum := sum + i;
end.

この場合はsumの値は10から始まり、10->19->27->34->40->45->49->52->54->55と、最後はsumの値が55になります。

■while文

次にwhile文のサンプルを見てましょう。while文の場合は値域が決まっていない場合の繰り返しに有効です。

vars a(number);
begin
 
a:= 0;
  while a < 100 do begin
    a := a + 1;
    if a = 10 then
      continue
;
    if a = 50 then
      break
;
  end;
end.

上記を説明すると、「aという変数が100より小さい場合に(つまりaが0から数えて99になるまで)繰り返す」ということになります。

途中のcontinueは、その後の処理をスルーして、次のループに進む事を意味します。また、途中のbreakは、while文の処理を抜けることを意味します。

以上で、繰り返しの説明を終わります。
この辺りは他の言語とかを知ってる方であれば簡単に理解できると思います。

それでは、また次回をお楽しみに^^。

| | コメント (4)

2007年8月24日 (金)

ChartStudio入門 (4) 条件の記述方法

ChartStudio入門(4)です。
※ChartStudioをもっていない方はDealbook360(サザインベストメント)を入手してください。

今回はシステム構築でロジカルな部分、条件分岐について説明したいと思います。

条件分岐というのは、
(1)移動平均の乖離率が+2%以上の場合に、売る。
(2)MACDの値が20%以下の場合に、買う。

といったように、「~場合に」という部分の事です。ある条件に一致したときに、どうするかを記述します。

条件分岐には、if文を使います。

begin
  if
(a <= 2) and (b >= 10) then
    buy(1)
  else
    sell(1);
end.

上記を説明すると、「aが2以下、かつbが10以上の場合に買う。それ以外の場合に売る。」というロジックを記述しています。 

上記のように、if文は「ifthenelse」といったブロックで記述することができます。

ちなみに次のように必要なければ、elseはなくても構いません。

begin
  if
(a <= 2) and (b >= 10) then
    buy(1);
end.

また、もしif文の後の実行文(buyの箇所)が1命令であればこのままで良いですが、次のように2命令になるとbeginendブロックで囲む必要があります。

begin
  if
(a <= 2) and (b >= 10) then
    begin
      buy(1);
      c := 100;
    end
  else
    sell(1);
end.

こうなってくるとちょっとややこしく見えるかもしれませんね^^。

ただ一つ非常に残念なのは、else ifが無いことです。else if を使うと、ifの条件に一致しない別の条件パターンを表現できるのですが、CTL言語では表現できません。else ifを実現するためには、if文をネスト(if文の中にif文を記述する)しかないので、プログラムが煩雑になります。

それでは長くなってきたので今回はこのへんで。また次回をお楽しみにw。

| | コメント (4)

2007年8月20日 (月)

ChartStudioでトレードサイン

9月11日に、ChartStudioのオンラインセミナーがサザインベストメントで開催されます。

第2回ChartStudio有効活用セミナー「ChartStudioでトレードサイン」

このセミナーでは、既存もしくは自作のテクニカル分析ツールを用いて、チャート上にトレードシグナルを表示させてシストレできる環境を構築するそうです

なかなかおもしろそうですねw。DealBookで完全自動売買を目指している人は必見です。

実は第1回「ChartStudioでカスタマイズ」の回が8月14日にあり、私も参加しようと思って応募していたのですが、残念ながら夏休みの帰省と重なって見逃してしまいました・・(^^;

※ちなみに過去のセミナー資料は、サザさんのH.Pで公開されています。もし同じように見逃した方がおられたら、一度除いて見てはいかがでしょうか?

第2回も期待大ですね。次は是非参加したいと思います。

それと、もう一つ。こちらはサザ会員様限定ですが、9月から「ロブ・ブッカー」のトレードシグナル配信が始まりますね。通常は有料とのことなので、どのようなシグナルが配信されるのでしょうか。こちらも楽しみですw。

皆さんも、もしよろしければどうぞ。>サザインベストメント

| | コメント (0)

2007年8月10日 (金)

ChartStudio入門 (3) 配列の使い方

ChartStudio入門(3)です。
※ChartStudioをもっていない方はDealbook360(サザインベストメント)を入手してください。

前回では四本値の使い方を説明しましたが、四本値を初めとする配列について説明をしておきたいと思います。

配列には、2パターンの使い方があります。

(1)配列の各要素を扱う
(2)配列をまとめて1つの変数として扱う

まず配列の各要素を扱いたい場合は、xxx[1]、xxx[2]としてアクセスします。次の処理はhigh配列のすべての要素を一つずつline配列にコピーしています。

  for i := front(high) to back(high) do begin
    line[i] :=  high[i];
  end;

front関数を用いてチャートで表示される最過去(左端)の配列番号を取得、またback関数を用いてチャートで表示される最新(右端)の配列番号を取得して、for文で最過去から最新までループさせています。

※ちなみに調べて見たのですが配列の最過去(つまり配列のスタート)は1(high[1])から開始されるようです。

次に配列をまとめて一つの変数として扱う場合は次のようになります。これは上記のサンプルと同じ動作をします。

  line := high;

ずいぶんとシンプルになりました。ただこのように扱うと変数が配列なのかどうかが分かりにくくなりますので注意が必要です。

また、配列は数値と演算することができます。たとえば次のように、

  line := high * 1.05;

と記述するとhigh配列のすべての要素に1.05をかけたものがline配列に格納されます。このように配列(複数系)変数と数値(単数形)変数を演算することができます。

演算子によって扱えるパターンが違うため、どのような組み合わせが演算可能かまとめておきます。

数値 * 数値 = 数値
数値 * 配列 = 配列
配列 * 数値 = 配列

数値 / 数値 = 数値
配列 / 数値 = 配列

数値 + 数値 = 数値
配列 + 配列 = 配列

数値 - 数値 = 数値
配列 - 配列 = 配列

たとえば、
line := high * 1.05;
はOKですが、
line := high + 1.05;
はNGです。

この辺りは良く理解しないとはまりますので気をつけてください。

ではまた次回をお楽しみにw。

| | コメント (12)

2007年7月14日 (土)

ATS(自動発注システム)の仕組み

Dealbook360の自動発注システム(ATS)機能ですが、サザインベストメントからATSの仕組みについての紹介がありました。

ATS(自動発注システム)仕組みのご紹介

要約すると、DealBook360の自動発注システムでは

1. 自動売買機能

2. バックテスト機能

3. レポーティング機能

が備わっています。完全自動売買のシステムができるだけでなく、バックテストやレポート機能でシステムの検証を実施することができます。

同ページにそれぞれの詳細な説明が記載されたマニュアルも公開されていますので、是非ご覧ください^^。

それぞれの機能の使い方や、標準で添付されている全てのストラテジー(売買システム)の概要ものっていますし、わかりやすくまとめられているので読みやすいと思います。

Dealbook360の入手はこちらから>>サザインベストメント

| | コメント (3)

2007年7月 7日 (土)

ChartStudio入門 (2) 四本値の使い方

ChartStudio入門(2)です。
※ChartStudioをもっていない方はDealbook360(サザインベストメント)を入手してください。

今回は四本値(始値、終値、高値、安値)の使い方です。

プログラム上で四本値を使用するには、それぞれ予め決められた次の変数を使います。

始値 ・・・ open
終値 ・・・ close
高値 ・・・ high
安値 ・・・ low

この変数をつかって簡単なインディケータプログラムを書いてみます。

indicator Exercise_2;
draw line1("open_line"), line2("close_line"), line3("high_line"), line4("low_line");
begin
  line1 := open;
  line2 := close;
  line3 := high;
  line4 := low;
end
.

これは四本値を4つのラインで表示するものですが、ChartStudioではこんなに簡単に記述する事ができるんですねw。

Ex2_1

このインディケータのプログラムはこちらからダウンロードできます。「exercise-2.ctl」をダウンロード
(利用の仕方はこちらの記事を参考にしてください)

ただし、気をつけなければいけないのが、これらの変数は実は配列変数だということです。配列変数の仕組みを知って置かなければ、結構ハマリます(^^;。配列変数については次回説明したいと思います。

自動発注システム(ATS)機能を使った完全自動売買はこちらから。
>Dealbook360(サザインベストメント

| | コメント (4)

2007年6月29日 (金)

ChartStudio入門 (1) プログラムの種類

突然始まりました^^。ChartStudio入門と題しまして、Dealbook360(サザインベストメント)の自動発注システム(ATS)機能を使った完全自動売買システム構築までのノウハウを連載したいと思います。

第一回はChartStudioで作成できるプログラムの種類です。プログラムは付属のChartStudioを使いますが、作れるプログラムは3種類。それぞれ以下のような特徴があります。

(1)Function

関数です。他のプログラムから呼び出すことができる部品のことです。ChartStudioでは標準で多くの関数が定義されていますが、自作の関数をつくるときに利用します。

[フォーマット]
Function 関数名
input 入力パラメータ
result 結果
vars 変数
bgein~end ソースコード

(2)Indicator

インディケータ。チャート上に線などを表示して、自作のインディケータを作成することができます。

[フォーマット]
indicator インディケータ名
input 入力パラメータ
draw 線
vars 変数
bgein~end ソースコード

(3)Strategy

自動売買プログラム。自動発注システム(ATS)機能を利用して、自動売買を行うプログラムを作成する事ができます。

[フォーマット]
strategy プログラム名
input 入力パラメータ
vars 変数
bgein~end ソースコード

これら(1)~(3)を適材適所で使いこなして、システムを構築していきます。

なお、それぞれの依存関係ですが、次のようになっています。

・FunctionはIndicatorから呼び出すことができます。
・FuncitonはStrategyから呼び出すことができます。
・IndictorはStrategyから呼び出すことができます。

それではまた次回をお楽しみに。
自動発注システム(ATS)機能を使った完全自動売買はこちらから。>Dealbook360(サザインベストメント

| | コメント (7)

2007年6月 9日 (土)

ATS 注文関数の種類

Dealbook360(サザインベストメント)の自動発注システム(ATS)機能では、完全自動売買を行うための注文を執行する関数が用意されています。

たとえばインディケータなどを使って売買条件が成立した場合、これらの注文関数を呼び出すことにより自動売買を実現するわけです。

次に注文関数にまとめておきますので、参考にしてください^^。

buy(lots)

成り行き買い注文を執行します。
戻り値はなし。引数にはロット数(数値)を指定します。


sell(lots)

成り行き売り注文を執行します。
戻り値はなし。引数にはロット数(数値)を指定します。

exitlong()



全ての買いポジションを決済します。
戻り値はなし。引数もありません。
なお、関数はこのプログラムで構築したポジションのみに影響します。

exitshort()



全ての売りポジションを決済します。
戻り値はなし。引数もありません。
なお、関数はこのプログラムで構築したポジションのみに影響します。

limit_buy(lots, price)

買いポジションに対するリミット値を指定します。
戻り値はなし。引数にはロット数(数値)、リミット値(数値)を指定します。

limit_sell(lots, price)

売りポジションに対するリミット値を指定します。
戻り値はなし。引数にはロット数(数値)、リミット値(数値)を指定します。 

stop_buy(lots, price)

買いポジションに対するストップ値を指定します。
戻り値はなし。引数にはロット数(数値)、リミット値(数値)を指定します。

stop_sell(lots, price)

売りポジションに対するストップ値を指定します。
戻り値はなし。引数にはロット数(数値)、リミット値(数値)を指定します。

関数自体は非常にシンプルですね。必要最小限の引数によって注文が執行できるようになっているので、簡単に扱えると思います。

また、リミット値やストップ値を指定する関数はVTTraderのプログラムには無いので、VTTraderよりも売買注文処理に関してはより幅広いシステム構築が可能になります。

Dealbook360の入手はこちらから>>サザインベストメント

| | コメント (4)

2007年6月 6日 (水)

DealBook360 ATS機能の使い方

Dealbook360(サザインベストメント)の自動発注システム(ATS)機能を先週から試しているのですが、なかなか使えそうです。

現在はデモ口座を使ってのテストですが、完全自動売買を行うことができました^^。

Chart

システムの作り方を簡単にまとめると、

1.DealBook360付属のChartStudio(開発ソフト)を起動します。

2.ChartStudioでCTL(Common Technical Analysis Language)と呼ばれるプログラミング言語を用いて、システムを作成します。ChartStudioでは、オリジナルのインディケータや、自動発注可能なトレーディングシステムを作る事ができます。

3.作成したプログラムをctlという拡張子で保存し、「Verify Module」メニューでプログラムの文法をチェックします。チェックで問題がなければ、「Install Module」メニューでDealBook360にインストールを行います。

4.DealBook360のチャート上で右クリックメニューから「売買シグナル」を選択し、システムを適用します。このとき、売買シグナルモードは「自動売買」を選ぶ必要があります。

5.うまく起動できれば、チャート画面の下に「!」マークが表示されますので、これで自動売買がスタートしています(なぜ、「!」なのか、、良くわかりませんが・・笑)。

チャートを良く見てもらうとわかると思うのですが、緑色の矢印と、赤色の矢印が出ています。緑色が「買い」注文、赤色が「売り」注文を表しています。

少しいじっただけですが、メリット、デメリットは色々ありそうですね。その辺りは、今後少しずつ記事にしていきたいと思います。それではww。

Dealbook360の入手はこちらから>>サザインベストメント

| | コメント (4)

2007年5月22日 (火)

DealBook360で完全自動売買

サザインベストメントではこれまで標準ではDealBookFX2というツールで取引を行っていたのですが、新たにDealBook360というツールで取引できるようになりました。本日5/22正式リリースだそうです。

DealBook360では次のような新機能が追加されています。
・為替予測システムA.I.(Foresight-A.I.)が利用可能。
・完全なシステムトレーディングが可能となる自動発注システム(ATS)機能を搭載。
・取引報告書にて日々のスワップが確認できる。
・取引明細報告書で閲覧できる期間が広がった。

もちろん、特筆すべきは2項目。

「完全自動売買」ができるようになったという事です。

独自の自動発注システム(ATS)機能が搭載されているようで、同胞のChartStudioというソフトでトレーディングシステムの構築が可能なようです。

実際にどのような売買システムが構築可能なのか、これから調べてみたいと思います。MetaTrader4を超えるツールとなりえるか?乞うご期待^^。

DealBook360のダウンロードはこちら。>サザインベストメント

| | コメント (2)

2006年3月24日 (金)

ChartStudioで自動売買

この間、米GFT社の「DealBook FX 2」というトレーディングソフトについてくる「Chart Studio」という付属ソフトについてご紹介しました。前回の記事はこちら

Chartstudio

この「Chart Studio」というソフトでは、Common Technical Analysis Language (CTL)という独自のプログラミング言語を使ってプログラミングすることができるのですが、どうやら完全自動売買はさせる事ができないようです。

自作のインディケータを作る事が主目的のようです。また若干、売買のサインを示す関数が用意されていますが、これを使ってもポジションは構築しません。画面上に売買サインが表示されるだけですので、そのサインを元に自分でポジションを構築する必要があります。残念・・。

なお、売買のサインを表示する関数は以下のようなものがあります。一応のせておきます。

  • buy() ・・・ 買いサインを表示する。画面上には「↑」が表示されます。
  • exitlong() ・・・ 買い終了サインを表示する。画面上には「EL」が表示されます。
  • sell() ・・・ 売りサインを表示する。画面上には「↓」が表示されます。
  • exitshort() ・・・ 売り終了サインを表示する。画面上には「ESh」が表示されます。

システムに標準で付いていた「売買シグナル」を適用した画面はこのようになります。

Chart_1

いやぁ、ほんと残念ですね。このソフトでも自動売買ができるとなると、色々な可能性が広がったのですが・・。ただ、標準で10個の「売買シグナル」プログラムがついていますので、参考にはなるかと思います。そのあたりも紹介できたらと思います。

GFTのIB業者である「サザインベストメント」さんでの口座開設はこちらから。

★★★参考になりましたら、応援お願いします!

| | コメント (0)

2006年3月20日 (月)

GFT系「ChartStudio」の紹介

以前、コメント欄で須藤さんに教えていただいたのですが、米GFT社の「DealBook FX 2」というトレーディングソフトには、「Chart Studio」という付属ソフトが付いてきます。

この「Chart Studio」というソフトでは、Common Technical Analysis Language (CTL)という独自のプログラミング言語を使ってプログラミングすることができるようです。画面はこのようになります。

Chartstudio

実は、これまで私はGFTのIB業者である「サザインベストメント(株)」で取引はしていたのですが、このソフトがあることに気づきませんでした(^^;)。(須藤さんに教えてもらったとき、ちょっと焦りました・・)

ただこの「Chart Studio」というソフトは、「独自のチャートインディケータを作成できます」といいう謳い文句なので、インディケータは作成できるが、自動売買させることができるか?という点までは今のところ未確認です。

一応、ヘルプとかを少し見てみた感じでは、buyやsellといった実際にポジションを構築できそうな関数がありましたので、自動売買ができそうな気はしているのですが・・。このあたりについては、もうすこし調べてご報告したいと思います。

★★★今日もポチっとよろしくお願いします!★★★

| | コメント (4)