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

2007年10月31日 (水)

サザ推薦ブロガー

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

>>サザ推薦ブロガー

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

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

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

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

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

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

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

| | コメント (0)

2007年10月29日 (月)

GMOで完全自動売買

10月26日からGMOインターネット証券株式会社で、Webサービスを使った取引ができるようになりました。WebサービスというのはXML形式を使ってデータ交換をすることで拡張性の高いWeb連携を実現する手段です。Web2.0のさきがけみたいな技術でしょうか。

簡単に言うと、通常はプログラムから呼び出せるAPIというのは自分のパソコンにインストールされているライブラリなりDLLなりに限定されるのですが、Webサービスという技術を利用すれば、Web上で公開されているサーバに対してAPIを呼び出すような感覚でプログラムを実行させることができるのです。

自分のプログラムからWebサービスを利用して発注できるようになるため、完全自動売買システムの構築ができるということです。

ちなみにWebサービスは汎用的なため、多くのプログラミング言語でプログラムを作成することができます(その気になればJavascriptでも可能なはず・・)。自分の得意な言語で自由にアルゴリズムを作成してトレーディングのプログラムを作成できます。

さてこのWebサービスの仕様ですが、一般には公開されていないみたいで、利用できるのはGMOインターネット証券株式会社の取引口座を持っている方に限定されています。

私自身、このWebサービスにかなり興味がありますので、口座を開設してみようと思っています。もしよさそうなシステムであればまた記事にしたいと思います。乞うご期待。

>>GMOインターネット証券株式会社

| | コメント (6)

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月18日 (木)

エフエックス札幌営業停止

先日、エフエックス札幌からメールが届きました。

メールの一部を引用させて頂きます。

>弊社は現在債務超過の状態にあり、債務超過解消の目処が立っていないことから、お客様の損益を確定させるべく本日ポジションの強制手仕舞いをさせて頂きます。

>ご出金につきましては、ご希望に添えない状態になっておりますので、今後につきましては、改めてご連絡をさせて頂きます。

ええーー!?かなり唖然となりました。

ちょっと良くわからなかったので電話して問い合わせてみました。どうやら債務超過で現在営業を停止しているようです。再開のメドはたっておらず現在はポジション等を整理しているとのことでした。入金したお金は戻るのかと聞いたところ、現段階ではわからず、また追って連絡しますとの事でした。
(この確認した事項は若干私自身の解釈が入っているかもしれません。事実は直接確認される事をお勧めします。)

取引画面にログインしようと試みたのですが、ログインはできない状況。最終的なポジションも確認できませんでした。

これが倒産というやつなのでしょうか?(実際はまだ倒産ではないらしいのですが、時間の問題・・??)

エフエックス札幌は1000通貨から多くの通貨ペアが取引できたので個人的には重宝していたのですが、、まさかこのような状況に陥るとは・・

1000通貨単位狙いで口座開設していたため、逆に言えば取引額は小額だったのが不幸中の幸いでしたが、それでももし入金している証拠金が返金されないとなると、少なくとも今年の利益は吹っ飛ぶかもしれません。コツコツとやってきたのに悲しいですね・・

ほんとに、こんな事ってあるんですね。いや、正確にはあるとは思っていましたが、実際そういう場面に出くわすと驚きを隠せません。

FXを始めた頃の当初は倒産等のリスクに備えて色々検討したりもしましたが、慣れてしまった今となってはそれほどFX会社そのもののリスクに対して鈍感になっていたのかもしれません。

これを教訓にして、これからは顧客資産をちゃんと保全管理しているFX会社を選びたいものです。手数料が安いとか、サービスが良いとか、そういう事も確かに大事ですが、もっと大事なこともあると言う事なんですね。

皆さんもFX会社は慎重に選びましょう。

| | コメント (11)

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