« 2007年7月 | トップページ | 2007年9月 »

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月 | トップページ | 2007年9月 »