2009年09月10日

Google Map 画像を取得してみたよ

さて、GoogleStatickMapAPIラッパークラスが実装できたらあとはWebClientクラスとか使って画像をPictureBoxに表示できます。

こんな感じ

gmapapi001.gif

WebClientクラスはここが参考になります

http://www.atmarkit.co.jp/fdotnet/dotnettips/302wcget/wcget.html

さて、これでブラウザではなくアプリケーションからGoogleMapが使えるようになりました!!
posted by (;D)笑男 ◆LeBIz0ZWfs at 20:23| Comment(60) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

C#で Google Static Map API ラッパークラスを書いてみたよ

さて、Google Static Mapの仕様がわかったので、それをウィンドウズアプリケーションで利用するためにC#でラッパークラスを作ってみました。

以下コードですが、すべての動作確認はまだしてません。

おかしなところがあったらぜひコメントでご一報を。

拡張機能として、OptionToStringという関数を追加してあります。
これで必要なプロパティをセットしたら、URLオプションが簡単に作成されます。

namespace GoogleMapLapper
{
public class GoogleStatickMapParameters
{
// center (複数のマーカーが存在しない場合は必須) 地図のすべての端から等距離の位置にある地図の中心を定義します。このパラメータは、地球表面の一意の場所を特定するカンマで区切られた {緯度,経度} のペア (例: 「40.714728,-73.998672」) を取ります。詳細については、下記の緯度と経度を参照してください。
public double Latitude = 0;
public double Longitude = 0;
public string Center{
get
{
string s;
s = Latitude.ToString() + "," + Longitude.ToString();
return s;
}
}
// zoom(複数のマーカーが存在しない場合は必須)は地図の拡大レベルを決定する「ズーム レベル」を定義します。このパラメータは、目的の領域のズーム レベルに対応した数値を取ります。詳細については、下記のズーム レベルを参照してください。
// 0-21まで有効 実質は19まで
public int Zoom = 0;
// size(必須)は地図画像の矩形寸法を定義します。このパラメータは、valuexvalue の形式の文字列を取ります。1 つ目の値は横軸のピクセル数を示し、2 つ目の値は縦軸のピクセル数を示します。たとえば、500x400 は幅 500 ピクセル、高さ 400 ピクセルの地図を定義します。幅が 100 ピクセル以下の静的地図を作成すると、「Powered by Google」ロゴは自動的にサイズが縮小されます。
public int SizeX = 500;
public int SizeY = 500;
public string Size { get { return SizeX.ToString() + "x" + SizeY.ToString(); } }
// format(省略可)は作成される画像の形式を定義します。デフォルトでは、Static Maps API で GIF 画像が作成されます。GIF、JPEG、PNG などの形式が作成可能です。どの形式を使用するかは、どのように画像を掲示したいかによって異なります。JPEG は通常、圧縮率が大きく、GIF と PNG はよりよい画質となります。詳細については、画像の形式を参照してください。
public string Format = "GIF";
// maptype(省略可)は作成する地図のタイプを定義します。可能なマップ タイプ値には satellite、terrain、hybrid、mobile などがあります。詳細については、下記の Static Maps API マップ タイプ を参照してください。
public string MapType = "roadmap";
// markers(省略可)は指定された場所の画像に添付する 1 つ以上のマーカーを定義します。このパラメータは、パイプ記号 (|) で区切られたマーカー定義の文字列を取ります。地図に複数のマーカーを添付する場合、center パラメータとzoom パラメータを指定する必要はありません (通常は必須)。詳細については、下記の 静的マップ マーカー を参照してください。
// マーカー宣言のサンプル形式は {latitude},{longitude},{size}{color}{alphanumeric-character} です。特に、文字列のサイズ、色、英数字の値がカンマで区切られていない点に注意してください.

public List Markers;
public void SetMarker(double lat,double lon, string size,string color)
{
GMapMarker g = new GMapMarker();
g.Longitude = lon;
g.Latitude = lat;
if(size != ""){ g.Size = size;}
if (color != "") { g.Color = color; }
Markers.Add(g);
}
public string MarkersToString
{
get
{
if (Markers.Count == 0) { return ""; }
string s = "";
foreach (GMapMarker g in Markers)
{
if (s != "") { s = s + "|"; }
if (g.Latitude * g.Longitude != 0)
{
s = g.Latitude.ToString() + "," + g.Longitude.ToString();
}
s = s + ",";
s = s + g.Size + g.Color;
if (g.AlphanumericCharacter != "")
{
s = s + g.AlphanumericCharacter;
}
}
return s;
}
}

// path(省略可)は、指定された場所で画像にオーバーレイする、2 つ以上のポイントが接続した 1 本の経路を定義します。このパラメータは、パイプ記号 (|) で区切られたポイント定義の文字列を取ります。地図に経路を添付する場合、center パラメータとzoom パラメータを指定する必要はありません (通常は必須)。詳細については、下記の 静的マップ マーカー を参照してください。
public List Path;
public void SetPath(double lat,double lon)
{
GMapPath g = new GMapPath();
g.Latitude = lat;
g.Longitude = lon;

}
public string PathToString
{
get
{
if (Path.Count == 0)
{
return "";
}
string s = "";
foreach (GMapPath g in Path)
{
if (s != "") { s = s + "|"; }
if (g.Latitude * g.Longitude != 0)
{
s = g.Latitude.ToString() + "," + g.Longitude.ToString() + "|";
}
}
if (s.Length != 0)
{
s = s.Substring(0, s.Length - 1);
}
return s;
}
}
// span(省略可)は、緯度と経度の組み合わせで表現される地図画像の最小の「ビューポート」を定義します。静的地図サービスはこの値を受け取って適切なズーム レベルの地図を作成し、地図の中心点から提供される span 値をすべて組み入れます。作成された地図は、地図の矩形の大きさによって、含める緯度または経度の境界が大きくなる場合があります。zoom が指定された場合は、span は無視されます。
public GMapSpan Span = new GMapSpan();

// frame(省略可)は、作成された画像を青い枠線のフレームで囲むかどうかを指定します。このフレームの枠は 5 ピクセルで透明度が 55% の青い枠になります。
public string Frame = "";
// hl(省略可)はマップ タイルのラベルを表示する言語を定義します。このパラメータは限られた国でしかサポートされていません。リクエストされた言語がタイル セットのサポートができていない場合、そのタイル セットのデフォルト言語が使用されます。
public string Hl = "";
// key (必須) は、URL 要求が実行されるドメインに対する Maps API キーを指定します。Maps API キーをまだ取得していない場合は、こちらから取得してください。
public string Key = "";
// sensor (必須) は、静的マップを要求しているアプリケーションがユーザーの位置情報を取得するのにセンサーを用いているかを指定します。このパラメータは現在、すべての静的マップのリクエストに必須となっています。詳細については、下記のセンサーを参照してください。
public String Sensor = "false";


public string OptionToString
{
get
{
string s="";
if (Latitude * Longitude != 0)
{
s = "center=" + Center;
}
if (SizeX > 0 & SizeY > 0)
{
if (s.Length > 0) s = s + "&";
s = s + "size=" + Size;
}
if (Zoom > 0)
{
if (s.Length > 0) s = s + "&";

s = s + "zoom=" + Zoom.ToString();

}
if (Format != "")
{
if (s.Length > 0) s = s + "&";

s = s + "format=" + Format;

}
if (MapType != "")
{
if (s.Length > 0) s = s + "&";
s = s + "maptype=" + MapType;
}
if (Markers != null)
{
if (s.Length > 0) s = s + "&";
s = s + "markers=" + MarkersToString;
}
if (Path != null)
{
if (s.Length > 0) s = s + "&";
s = s + "path=" + PathToString;
}
if (Span.Latitude * Span.Longitude != 0)
{
if (s.Length > 0) s = s + "&";
s = s + "span=" + Span.Latitude.ToString() + "," + Span.Longitude.ToString();

}
if (Frame != "")
{
if (s.Length > 0) s = s + "&";
s = s + "frame=" + Frame;
}
if (Hl != "")
{
if (s.Length > 0) s = s + "&";
s = s + "hl=" + Hl;
}
if (Key != "")
{
if (s.Length > 0) s = s + "&";
s = s + "key=" + Key;
}
if (Sensor != "")
{
if (s.Length > 0) s = s + "&";
s = s + "sensor=" + Sensor;
}
return s;
}
}

}
public class GMapMarker
{
//{latitude} (必須) は、小数点以下 6 桁の精度を持つ緯度の値を指定します。
public double Latitude = 0;
//{longitude} (必須) は、小数点以下 6 桁の精度を持つ経度の値を指定します。
public double Longitude = 0;
//{size}(省略可)は {tiny, mid, small} のセットのマーカーのサイズを指定します。size パラメータが設定されていない場合、マーカーはデフォルト (標準) サイズで表示されます。
public string Size = "mid";
//{color}(省略可)は {black, brown, green, purple, yellow, blue, gray, orange, red, white} のセットから色を指定します。
public string Color = "red";
//{alphanumeric-character}(省略可)は {a〜z、0〜9} のセットから小文字の英数字を 1 文字指定します。alphanumeric-character パラメータが表示できるのは、デフォルトと mid サイズのマーカーだけに限られます。tiny と small のマーカーでは英数字を表示できません。
public string AlphanumericCharacter = "";
}
public class GMapPath
{
//{latitude} (必須) は、小数点以下 6 桁の精度を持つ緯度の値を指定します。
public double Latitude = 0;
//{longitude} (必須) は、小数点以下 6 桁の精度を持つ経度の値を指定します。
public double Longitude = 0;
}
public class GMapSpan
{
//{latitude} (必須) は、小数点以下 6 桁の精度を持つ緯度の値を指定します。
public double Latitude = 0;
//{longitude} (必須) は、小数点以下 6 桁の精度を持つ経度の値を指定します。
public double Longitude = 0;
}
}
posted by (;D)笑男 ◆LeBIz0ZWfs at 19:30| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

Google Static Map API をいわしてみる

さて、前回PocketPCでGPSを動かすテストをしてみてちゃんと動いたので、今回はいよいよGoogleのマップをいじってみます。

Google MapはリッチなJava Script UIが売りですが、地図の画像だけを提供するサービスもやってます。
それが、Google Static Map APIですね。

指定のURLに続けてパラメータを設定しておけば欲しい場所の地図の画像が表示されるわけです。

http://maps.google.com/staticmap

これがURLですね。
これに欲しい場所の緯度経度や地図のズームレベル、画像のサイズなどをパラメータで与えると

http://maps.google.com/staticmap?¢er=37.39102724317506,140.3939437866211&zoom=13&size=400x400&key=Your API Key
こういう具合になります。

最後のYour API Keyが前回取得したAPI IDですね。
Google Static Map APIを使うと仕様上バレバレになってしまうので実際にはやりとりはアプリケーションレベルでやるべきでしょう。
ただ、仮にAPI Keyをここに書いてもシーサーブログのURLをGoogle API IDに登録してないので、このままでは表示はできません。
ブログでGoogle MapにリンクするならAPIを使わなくてもGoogle MapでURLだけ取得する方法もありますしね。

詳しいことはこちら
http://code.google.com/intl/ja/apis/maps/documentation/staticmaps/

参考になったおもしろいサイトはこちら
http://labs.d-s-b.jp/static-gmap/
今回のURLもここで生成しました。
Google Mapでも地図をURLで取得できますが、Java Scriptが邪魔という方はここを利用して下さい。ただし、自分のAPI IDを取得してくださいね。そして自分のサイトをIDに登録しないと使えません。
posted by (;D)笑男 ◆LeBIz0ZWfs at 18:10| Comment(0) | TrackBack(1) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年08月24日

Gmapをいわしてみる

えー、ご無沙汰しております

存在証明がてらモチベーション維持のためのひとりごと垂れ流し再開したいと思います。

よろしくお願いします。

さて、最近仕事で使ってるwebマップシステムなんですが、D社と契約してたものがZ社に吸収されて、結果的にZ社の標準サービスをD社の破格の価格設定で利用させていただいておりました。
ところが、Z社がサービスリニューアルに伴う料金設定の統一で今までより更に安い価格設定で新サービスを提供、旧サービスは完全終了とアナウンスされました。
当然旧サービスで動いてた弊社のwebマップシステムも終了となります。

それをきっかけにweb地図サービスをいろいろと比較して新しいwebマップシステムを構築すっかー、でも一社で使うにはあまりにもリッチな仕様どうしようっかなー

のような葛藤と・・・正直言って会社で使うだけのwebマップシステム一から作るのめんどくせえw
けど、ついでにいろいろ遊ばせてもらえるならしゃないやったるかーということで、webマップシステムをいろいろいじることになりました。

で、やっぱりプラットフォームはGoogleMapでしょうと。
地図はどのみちZ社が出してるやつと同じだしー。
アメリカと直接契約すれば代理店の半額で使えて、Z社のシステムよりぜんぜんお得だし。
なによりも、技術情報が完全にオープンになっててソースコードもオープンになってるので、システム作る側としては文句の言いようのない環境です。

で、さっそくGOOGL API IDを取得していろいろいじってみてます。

そして、英知の泉インターネットでいろいろと検索して知識を集めた結果、なかなかおもしろいネタがありました。
よくまとまってて最終的に頼ったのがここ。
http://google-mania.net/webservice/googlemap#toc-google-mapstips

ちなみに、携帯版のgmap連動なんてのがこれからのトレンドだと思うのですが、残念ながら携帯gmapの世界はまだまだAPIも出そろってなくて、今は死ぬ気でゴリゴリやんないと満足のいくシステムにはなりそうもありません。
しかもキャリアごとに仕様がちがってキャーです。
その代り、いまからサービスの充実を見守りながらタイミング良くサービス投入することはできそうです。googleはキャリア対応してからリリースしてくれますからね。素敵すぎです。

PCのgmapと携帯gmapの中間を行くのがPoketPCやスマートフォンのgmap

これは丁度専用のツールが出回りはじめたところで、今まさにおもしろさ真っ盛りです。

わたしが持ってるのはイーモバのS21HTなんですが、これでgmapとGPS連動なんていろいろできそうで楽しいです。

そこで、VisualSutdio2005にWindowsMobile6SDKをインストールして、エミュレータインストールして、サンプルプログラムでとりあえずGPSを制御するソフトを動かしてみました。
つっても、サンプルをコンパイルしてデバッグモードでエミュを起動しただけですけどね。

参考になったサイトはここ
http://blog.livedoor.jp/akf0/archives/51356721.html
ここで必要な準備ができました。
ちょっとだけ悩んだのが、作ったプログラムをエミュレータにどうやってインストールするか?
ってところですが、上記URLをじっくり読むと共有フォルダ設定ってのがあって、これがエミュレータ上から見えるPCのフォルダを設定できるんですね。
ここでプロジェクトフォルダとかを設定しとけばOKです。
あとはエミュレータからエクスプローラを起動してインストールするだけ。
ダウンロードしたサンプルプログラムやもろもろ動かしたいのでC:\に設定しましたけどね。
ばっちりです。
ありがたいです。

form1.gif

あらできちゃった。PC上だからGPSもエミュレーションして数字が刻々と変っていきます。

簡単ですね。
GPSのエミュレーターは、fakeGPSってツールを使うんですが、こいつを探すのにあちこちぐぐりました。記事はあるんですが。ノーマルインストール状態ならここにあります。
C:\Program Files\Windows Mobile 6 SDK\Tools\GPS

さてここからgmapの地図とオーバーレイさせていくとどんなことができるでしょうか?
お楽しみに。

いろいろ参考になりつつ、記事そのものが楽しいものがありました。
http://tkhshrs.blog80.fc2.com/blog-category-3.html


だれか、なんかアイデアあったらぜひコメントへお願いします。

それでは。
posted by (;D)笑男 ◆LeBIz0ZWfs at 17:50| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年02月13日

絵図

たまには画像を貼ってみましょうか。

これは今日バックテストしているMSSGA6ユーロドルのチャートと収益曲線です。

chart080326-4 (2).gif

なんというおぞましさでしょうか。
投資結果として見れば言語道断、不細工そのものですが、なにか禍々しく荘厳ですらあります。
欲望が絡みつく相場のありようというか、まるで一葉の絵画のようです。

TesterGraph213.gif

こちらは一編の小説のようでもあります。
序章で盛り上がり、徐々にクライマックスに上り詰め、期待をさせ、残酷にもハッピーエンドに終わらないあたりは純文学的ですらありませんか?

このGAでは長生きするライフはとうとう現れて来ませんでした。
もしかしたら、これから生まれるのかも知れませんが、多くのライフが現れては消え、末期の印をチャートに刻んで行ったのです。

通常だと、こういう状態の場合、収益曲線はこのように維持されることはほとんどなく、ダラダラと損失を重ねて行くものですが、このチャートだけはなぜかのたうち回りながらいまだ原点を割ってすらいません。

これ、という手法を編み出さなくても利益が出ているというところがおもしろかったのでちょっと記録してみました。

GAにはひとつのジレンマがあります。
あまりにも地合にフィットしたライフが誕生すると、そのライフが長寿のあまり、GAは同じようなライフの遺伝子で満ちてしまい、地合がフィットしなくなったあと長きに渡って回復することができません。
ライフがコツコツと貯めたライフポイントはシステムが要求するポイントを遙かに上回るので、安々と上位から消えてくれずずっと損失を続けてしまうことも多々あります。
また、多くの場合、今度のようにスタート時点のちょっとした偶然のために長時間長生きするライフが見つからず、GAそのものが虚無の荒野をさまよい歩くだけのこともあります。
この場合はライフポイントが貯まる間がないので、GAのライフの多くは元本割れとなり、僅か数十Pipsを一回稼いだ生まれたばかりのライフばかりが上位を占めることになってしまいます。

それでも、運が良ければこのように収益を維持することもあるのですが、決して理想的な展開ではありません。

バックテストを最大限に利用して、例えば去年6月の相場を1回、7月の相場を2回、8月の相場を3回と同じGAに反復しながら相場を経験させ、フォワードテストに至るまでに十分に遺伝子に進化を与える方法を焼きなまし法と呼びます。

一回のテストで必ずしも正しい遺伝子が生まれるとは限らないわけですから、そんな強引な手法もあるわけです。

そもそも、GAの研究分野でもこのような投資シミュレーションは数々生み出されてきたはずで、わたしのような素人に簡単に儲かるシステムが見つかるとも思えなかったんですが、こんな奇妙なチャートを見ているとやがてこの地獄の底から何かが生まれてきそうな気がしないでもないわけです。

わたしのEAが情報商材になるとしたら、

Alpariの純粋で汚れのない1分足データを使い、熟練の職人が繰り返し繰り返し手作業で焼きなまし、通常の13倍の時間をかけてじっくりと培養し熟成した至高の遺伝子をふんだんに含んだ特製GA。
損失が発生した場合はもちろん、利益が出た場合でも、お試し期間中の返品には、お代をすべてお返しいたします。
さらに、毎月ごとに手塩にかけた新鮮な遺伝子情報を追加しながら、やがてあなたのオリジナルで最強のGAシステムに育てることも可能です。あなたが生んだ優秀な遺伝子の再販にマージンは一切頂きません。
FXの知識がなくても、オリジナルで強力なFX自動売買システムを自分だけで生み出すことができるこのチャンスを、ぜひ、お見逃しなく。

やずや、やずや。

あー、そうですね。ほんとうにこんなGAで投資疑似生命ライフを育成してみたいというお方にはシステムのバイナリファイルをお分けしてもいいかも知れません。
優秀なライフの情報を自動的にサーバーにアップロード・ダウンロードする仕様にしておいて分散型GA投資システムをみんなで構築するってのもいいですねえ。

もちろん、すべての遺伝子情報を使って投資できるのは最大投資元の一社に限りますけどね。(ファンド責任者の連絡請う)
posted by (;D)笑男 ◆LeBIz0ZWfs at 00:43| Comment(10) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年02月12日

GAライフに学ぶストラテジ

さて、テスト中のライフの売買特性をみながら実に巧妙な仕掛けで動作するものがたまに見つかり、それを見ているだけで一晩がすぎるってことがままあったりするのですが、中でおもしろいシステムを発見したのでご紹介します。

ライフ886

使うのはレンジブレイクとMAだけ。

対象通貨はユーロドル。

チャートは1分足。

■ルール
1M4MA、
1M8MA、
1M16MA
1M4本レンジブレイク、
1M8本レンジブレイク

上記のうち3つが買いサイン、4つが買いサイン1つが売りサイン
のとき、「売り」

買いサインが0になった場合、売りサインが2つ以上に増えた場合、
手仕舞い。

SLは100。

SLまでいくことはほとんどありません。たいてい5分以内に手仕舞いしてしまいます。
決済指し値を10pipsに置くとパフォーマンスが上がる地合と
下がる地合があります。

MAは常に買いか、売りのサインを出します。現在値がMAより上の場合買い、下の場合売りです。
レンジブレイクは中立のサインがほとんどで、ブレイクしている間だけシグナルを出します。

その結果、ブレイクした瞬間に逆張りし、移動平均が追いついた瞬間に決済する仕組みになるわけですね。
いわゆるタートルスープのような戦法ですが、たまにMAだけでもサインが出てしまうので回数は増えます。

実際の執行タイムラグを考えるとなかなか予定通りとれないのではないかと思いますが、多少広くした区間にしても使えるかもしれません。この場合はSLまで落ちてしまう可能性が高くなると思います。
GAのバックテストだとパフォーマンスが高い方法が自動的に抽選されてしまうので確かめようもないんです。

正直、スキャルはトレンド方向に順張りって先入観を持っていたんですが、みんながそう思ってれば逆もあり、ということでしょうか。

ああ、そうそう、多少改良してMetaQuotesの提供するデータでバックテストすると爆益になるストラテジです。ご注意ください。
posted by (;D)笑男 ◆LeBIz0ZWfs at 14:43| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

MSSGA7っておい!

はい、すみません。
ここのところ何をやってたかと申しますと、テストスピードを上げるためにどうも不必要っぽいシグナルを消して成績を比較するってことをやってました。
しかし、もともと起動時の乱数によってどんなストラテジが生まれるかわからないGAの性能を比較するなんてしょせん感覚の世界にすぎません。なんとなくよさげなシグナルを組み合わせて7つのGAシステムを作ってみました。

ものによっては今までよりパフォーマンスが落ちたりしてます。
ユーロドルに関してはそこそこの実用EAまであと少し、って感じです。中には1年で100倍いっちゃうのもいましたけど、約1年で使い物にならなくなり、現時点のチャートには合ってなさそうなので収益グラフを貼るのはやめときます。

あと、通貨によってやはり有効なタイムフレームがかなりブレるので、各通貨に狙いを絞ってGAのバリエーションを増やすべきだと思ってます。
ユーロドルは短いタイムフレームで比較的簡単にエッジをみつけられますが、ドル円になるだけで1分足はほぼ雑音で満たされて使い物になりませんでした。

尊敬する裁量トレーダーのぷるぐらまさんが5分足のMA200を使うとおっしゃってたのが実感でわかりますね。それより短い区間では判断できません。

ところで、前回更新時にブログランキングで50位なんてたわけたことを言ってしまいましたが、ほんとうに50位台になってしまいました。
現在は更新をさぼってて100位台以降まで下がってしまいましたが、まさかほんとになるとは夢にも思っていませんでした。

応援くださったみなさま、ありがとうございました。

応援されてることに気がつかなくてごめんなさい。

がんばって更新するようにいたします。
posted by (;D)笑男 ◆LeBIz0ZWfs at 13:28| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年01月31日

ライフ69いくらなんでも・・・・

これはないでしょう・・・・・

狙ってプログラムしてもこんなカーブフィッティングはそうそうできるもんじゃありません・・・

ライフ69おまえはいったい・・・

chart080326-4.gif

ちなみに黒が売り、赤が買いです。
偶然ってすごいですねぇとしか言いようがありません。
たぶんデータも壊れてて上下に長すぎ、価格が変動しないのでうまいぐあいに移動平均がど真ん中を突き刺していて、ライフ69はそれをシグナルに売り買いを繰り返しているようです。

ちなみに、資金は5日で1.8倍に増えました。

TesterGraph2.gif

いままでで、最高のパフォーマンスですが、前回よりいじったのは子孫の遺伝子のコピーのされ具合に若干の修正を入れたくらい・・・・

と思って注文をよく見たら発注しているのは売りがライフ325買いがライフ69でした。


恐ろしい子!


あ・・・思い出した。上位のライフがポジッてるとき含み損を抱えて長期居座って売買のチャンスを潰さないように、含み損をライフポイントに反映するようにしたので、下位のライフがポジるチャンスがわすかに上がったのがパフォーマンス改善の効果につながったようです。

ちなみに、前回書いた通り、この先、正確には2006年10月5日14時8分あたりからライフ69とその子孫が対応できない値動きに変化するので、彼らはこの後死滅する予定です。

ただ、現在のライフの数値と遺伝情報はそのままファイルに保存して、アメリカで動いてるリアルタイムのフォワードテストにいきなり投入することもできます。
そうですね、一定時間ごとにライフとゲノムをファイルに書き出すようにすればいちいちテストを止めなくてもそれができますね。
posted by (;D)笑男 ◆LeBIz0ZWfs at 01:15| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年01月30日

更にMSSGA

MSST2のその後ですが、バックテストの結果2年ほどは調子がいいのですが、調子が悪くなると大きくドローダウンしてしまいました。
タネを明かせば、仕掛けは完全に時間制御にのみ頼っていて、INの時間を15分おきに24時間分、OUTの時間を15分おきに24時間分それぞれ売りと買いですべての組み合わせで売買を行い、成績のよいINOUT時間と売り買いの別をランキングしてデモトレードしていたのでした。これはある自動売買プログラム選手権の2位か、3位にランキングしていたシステムが履歴からその手法がバレてしまい、多くの人々に利益をもたらした件を再現するプログラムだったのです。
たぶん、筋の介入タイミングなんかがキャッチされると効果があるのだろうと想像つきますので、価格帯と時間帯で詳しく調べていけば今後も有効かもしれませんね。

さて、MSSGAの続報です。
まず、収益グラフから見て頂きましょうか。これです。

graf.jpg

はい、すごいですね。
もちろん、一番いいところを切り取ってますから過剰に期待してはいけませんが、一番瞞されたのはわたしです。
なにしろ、2006年のユーロドル10月1日からのバックテストで最初の5日間こういうことになってしまったからです。何のチューニングもしていない初っぱなで、いきなりです。

そりゃ、びっくりしますわ。

最初のころはこんな売買をしています。

c1.jpg

まぁ、ヘタというか、同値撤退が多いですね。
これはわたしが作ったシステムの特性ですが、最初にランダムに生成されたライフもある程度のライフポイントを持っていて、最初のうちは損失が少ないライフが上位にランキングされてしまうからです。同値撤退繰り返していれば確かに損失は少ないです。
やがて、必ず大なり小なりのドローダウンに見舞われ意味不明の売買を繰り返すライフが大量に死亡します。わたしはこの時期を大絶滅と呼んでいます。
そして、カンブリア期のように多彩なライフが現れては消え、徐々に収益曲線は上昇しはじめます。わたしはこの時期を生命爆発と呼んでいます。
これはユーロドルのいろんな時期で動かしてみてもいい生命が生まれる全長としてよく見られる現象なんです。

やがて、継続して利益を出すライフが順次台頭してきて、そして伝説のライフ69が誕生します。

69.jpg

チャートの上段に表示される文字表示はライフのライフポイントランキングです。一番左に69というライフが1455というライフポイントを稼いで一位に来ていますね。最初に与えられるライフポイントが500なのを差し引いても実に1000Pipsを稼いでいることになります。PFは2前後です。すごいですね。こんなのが偶然出てくるんですから。

2行目から3行目は、この時点で上位2つのライフの売買シグナルにしたがって実際の売買を行っているので、その2つのライフのゲノム(遺伝子)が表示されています。最初の数文字が決済指し値(テイクプロフィット)と損切り指し値(ロスカット)を決定する遺伝子で途中に−1がありますので、8Pipsくらいのプロフィットを取るようになってます。
次のGTが閾値で5つ目までの数値の合計がシグナルの閾値になります。5つ目までで2つ1があるので、ライフ69はシグナルの合計が3にならないと売りも買いもしません。次がレンジブレイクで1分足12本の高値安値をブレイクしたら−1なので逆張りです。
MAは移動平均で、やはり1分足12本の移動平均を超えたら買い、くぐったら売りのサインを出します。RSIは5分足24本のRSI値70と30に対して順張り、ADXでは1時間足に対して逆張り、そしてボリンジャーの1分足24本のDIに対して逆張り、同じく30分足に対して順張り・・・・

こんな組み合わせです。はっきり言って、なにがしたいんだかわかりませんが、そんな69の売買はこうなります。

c2.jpg

移動平均とレンジブレイクの逆張りでポジションを取り、決済指し値の6Pipsで決済しているようですね。そして、シグナルが消えるまでそれを繰り返すのでツボにはまるとこんなに見事な結果になるのです。

また、3列目のライフ325を見てみるとライフ69にそっくりなのがわかります。ライフ325はライフ69の子孫なんですね。
このように、優秀な売買手法を獲得した遺伝子は保存され、バリエーションを増やしていくわけです。

ユーロドルに限れば、長寿命となるライフのほとんどはスキャルピングで、しかも、トレンドに逆向きのリバ取り手法が多く見られます。

このライフ69もおよそ10日でその寿命を終え、やがてながく混迷の時代がやってきます。この時期の画像は退屈なのでのせませんが、収益曲線は緩やかに下る感じですが、ドローダウンはそれほど大きくありません。

だいたい、毎日このあたりに来るとテストも1日以上経過して、テスト中に書き直したコードの結果を見るためにあえて同じ条件で再びテストを繰り返しています。

とは言っても、例えばランキング上位に居たライフが売り買いを実際に指示するフラグを立てたままランキングが下がった場合にそれでも売買をシグナルするのかどうか、とか、一度死んだライフを生成するために何割をmama(上位)の遺伝子のコピーにするか、どの程度ランダムなノイズを入れるか、といったチューニングであって、売買結果を意図したチューニングは一切していません。

同時にアメリカサーバーはMSST2の残念な結果を受けて、今はMSSGAのフォワードテストに入っていますが、テスト3日目で現在は若干のドローダウン、ちょうどタンパク質のスープの中でランダムな触媒反応が起こっているような時期です。

MSSGAは決して安定した収益曲線を継続させるものではないかも知れませんが、その都度つどでおもしろい手法のパターンを見せてくれるのが見ていて飽きません。

100のシグナルの部分は誰でもチューニングできるようにカスタムインジケータの配列を使ったソースコードを公開して、ベースプログラムの遺伝的アルゴリズムのみをEAとして配布してみんなで結果を共有してみたらおもしろいかも知れません。

また、ブログネタとしてもリアルタイムのフォワードテストで生まれるライフの売買手法はその都度で発表していきたいと思います。

そろそろブログ村に登録すべきかも知れませんねー。

それでは。
posted by (;D)笑男 ◆LeBIz0ZWfs at 22:19| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年01月24日

その名もMSSGA

はい、MSSシリーズもついにGAということです。
MSST2はどうなったんだって話ですが、コードの改良などを経て現在アメリカのサーバー上でバックテスト中です。
さほど大きなドローダウンもなく、2006年2月から2007年4月のおよそ1年2ヶ月で300%の利回りを達成しています。
レバは10倍で運用しています。
もうちょっとテストが進んだらまたご報告いたします。

さて。
GA(genetic algorithm)遺伝的アルゴリズムですね。
複数の売買ルールを同時に走らせて、成績上位のシグナルに従うMSSシリーズはコードの共通性からGAに改造できそうだな、というのはしばらく前から考えていたことなのですが、実業に手を出して赤字にあえいだり・・・ごにょごにょな間コーディングできていなかったのです。で、お正月の休みを利用して一気にやってしまおう・・・・と考えていながらただダラダラと正月を過ごしてしまいまして、ぐああああああああっと自己嫌悪に陥った勢いで1日でコードを書いてしまいました。
それから二日ほどデバッグ作業についやしまして、さらに一週間ほどロジックの追加などを経て現在に至ります。

簡単に仕組みを解説しますと、今回は約100の売買ルールを設定しました。レンジブレイク・MA・RSI・ADX・ボリバン・タイムゲートなどをパラメータを変えて合計で100ほどですね。

ただし、そのすべてのシグナルの組み合わせをMSSで走らせることは到底できません。
そこでGAというわけです。
100の売買ルールはすべて買いノーポジ売りの3つのサインを出します。プログラム的には1、0、−1の数字のどれかということです。
1M12MAより上なら1、同じなら0、下なら−1とか、テクニカル指標ごとにシグナルを出します。
メモリ上には0000100−1−1−10000のように配列で表現されます。

これに対して4000のライフ(生命)を用意して、1つのライフは100のゲノム(遺伝子)を持っていて、そのひとつひとつは100のシグナルに対応しています。
ライフのゲノムは、最初1,0,−1の乱数で初期化します。

1M12MAに対応したゲノムが1の場合、1M12MAのシグナルが1であれば1×1=1となり、ゲノムが−1の場合シグナル1に対して−1を出力します。シグナルが1でもゲノムが0だと0です。

シグナル
0000100−1−1−10000
ライフ1ゲノム
0100000−11−10000

の場合、結果は
00000001−110000
となり、ますね。上下を掛けるだけです。


このようにして、すべてのシグナルとゲノムをかけ算して、さらにそれを合計します。上の例では合計は1です。

100ものシグナルに対応して、組み合わせを無視してシグナルの合計だけで売買判断をするわけですが、シグナルの組み合わせごとにさらにANDやORで評価を繰り返すこともできます。が、こうなるとかなり複雑になって、短期間では一回もシグナルがでなくなる恐れがありますので、とりあえずシンプルに合計してみました。
したがって、必ずしもすべての条件が満たされた時だけシグナルが出るわけではなく、ある場合とある場合とある場合に、整合性もなく売り買いのシグナルが出ます。一つのライフの中に複数の応答系を持つことになります。

ただし、単純にゲノムの演算結果が0より大きければ買い、小さければ売りだけですと、売買回数も増えすぎますし、組み合わせの妙というのもまったく無視されてはもったいないです。
そこで、さらにゲノムの最初の領域はシグナルに対応してない部分があり、別の演算に使われます。

ゲノム1列目から5列目はやはり1か0か−1で初期化されていますが、シグナルを掛けずに単純にゲノムの値同士足されて、それが演算結果の閾値に利用されます。

例えば、シグナルに対応したゲノムの演算値の合計が1の場合、もしも閾値が5だと、売買判断はKeepBuyを出力します。買いポジはホールドし、売りポジの場合手じまいされ、ノーポジの場合ノーポジのままです。
シグナルが閾値を超えるとBuyNowを出力するわけです。
売りポジは直ちに決済され、ノーポジの場合買いポジを取り、すでに買いポジの場合はホールドします。

また、一部のゲノムは決済指値、ロスカットなどを決定する因子になります。

100の売買ルールすべての組み合わせを検証することは無理なので、ランダムな売買ルールの組み合わせと閾値で売買判断を行い、調子のいい組み合わせを捜すと。

そして、ここからがおもしろいのですが、一定のライフポイントを持って生まれたライフは1秒ごとにライフポイントを0.03くらい失っていきます。これは初期値で設定できるのですが、現在は30日間で150Pips消費するようになっていて、すべてのライフは最初に150ライフポイントを持って生まれます。
ライフの売買判断がうまく利益を出すとそのPipsがそのままライフポイントに加算されます。損を出すとその分ライフポイントは減ります。

30日間まったく売買を行わなかったり、30日に満たず150Pipsを消費したライフは死亡して、新しいライフに生まれ変わります。
この時、新しいライフはトップのライフと2位のライフから半分づつゲノムを交換したり、たまにノイズが入ったりして、新しいゲノムセットができてくるわけです。

このようにして、100の売買ルールのすべての組み合わせをバックテストで検証することなく、ライフが死んで生まれるたびに、正しいシグナルの処理をする組み合わせが残り、やがて最適ではないかも知れないがそこそこの解が得られるようになります。
その上、その解が通用しなくなったとしても即座に別の解が用意される・・・という仕組みになるのです。
実際、コーディング中何度も短期のバックテストを行いましたが、負けが込んで破産することは一度もありません。

長くなったのでいったん止めて、次回は画像付きで解説しますね。

それでは。
posted by (;D)笑男 ◆LeBIz0ZWfs at 00:19| Comment(2) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2008年04月04日

人として終了のお知らせ

ぐはっ・・・・

またやってしまいました・・・・

もう・・・戻れません ><。。。。。。。

HAZUKIDSKTOP.jpg
posted by (;D)笑男 ◆LeBIz0ZWfs at 10:38| Comment(11) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2008年03月05日

明日の日経を予想するスレ

16 名前:山師さん@トレード中[sage紳士@売り方] 投稿日:2008/03/04(火) 23:54:05 ID:7+nKwkpB0
売り方は「ただの売り方」である事に異を唱え 
そこから抜けようとあがく瞬間「ただ」であることをやめる

私は紳士になった時「ただの売り方」である事をやめた

泣き言も自分が小さい事を悲しむ事もやめた
 
それよりも努力する事にした

努力は恥だ 

だが悲しむよりはずっといい

己に自信が無いのなら腕を磨けばいい

「1+1」よりも簡単な数式だ

売り方は紳士に下がるのを待つ



語れ
posted by (;D)笑男 ◆LeBIz0ZWfs at 00:06| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2008年03月02日

ちょwww

昨日は葉月ちゃんのラジオでした。
葉月ちゃんありがとうございました。楽しかったです。
で、ラジオ中にブログ画像の掘り起こしをやったりしたわけですね。
気に入った画像をケータイの待ち受けに登録すると約束しちゃったわけです。

葉月ちゃんのブログから画像落としてやっちゃいました。
さーせん! さーせん!  ><。。。。

P1040424.JPG
P1040426.JPG

なんか人として終了のお知らせがちょっと聞こえたような?
posted by (;D)笑男 ◆LeBIz0ZWfs at 20:09| Comment(6) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2008年02月25日

女の子をえっちな気分にさせるために

エロビデオを見せるのはたいがい逆効果だそうです。

これはいつも行く飲み屋さんの女の子たちが全員一致して言ってました。

「ははは・・・そうなんだぁー」

と笑いながら、わたしの脳裏には、女の子にエロビデオ見せながら自分だけ興奮してしまっていた過去の映像がつぎつぎとよみがえり・・・
それで相手を興奮させたと思い込んでいたなんて・・・

40代では取り返しがつかなすぎです これ ><。。。。

恥ずかしいょ。。。

それ以上に、エロビデオで感じるエロさが女の子に伝わらないなんて・・・・人類に絶望しました。
posted by (;D)笑男 ◆LeBIz0ZWfs at 18:38| Comment(3) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2008年02月24日

売買履歴

売買履歴

今月の前半は日足の前日高値のレンジブレイクにチャレンジするところを順張りして
→失速
→ナンピン
→失速
→ナンピン
ただし、日足の前日安値を越えたら撤退というルールでやってみました。

うまくレンジをブレイクしてくれないので毎日のようにエントリー直後から含み損をかかえる結果になりましたが、日足が転換するまえに必ずリバウンドがあるのを信じてひたすら鬼ホールドしました。
日足の中の上下運動だけを抜く感じです。
ナンピンのおかげでエントリー位置の八割値戻しで益がでるわけです。

で、レンジブレイクに失敗したら即手仕舞いですが、たまにブレイクしちゃったときが難しいですね。
一度はほぼ頂点で売りぬけられて投資資金の16%くらいの益を出すことができました。
でもそのときはかなり動物的勘でやったので、ほんとうは天井を確認するべきだと思ったわけです。

で、次に天井を確認したらほとんど利益が残りませんでした。
買い下がりでポジを持っているときは、下げが浅くすぐにリバウンドしたときはナンピン玉の利が少ないのです。

含み損かかえてゲロ下げのときほど儲かる・・・

週末はまさに怒涛のゲロ下げでした。が、あまりに下げすぎると含み損がどんどん増えてココロが折れてしまいました。
見事に底で手仕舞いして少しですがドテンしてしまいました。

そしてやはり買値までもどってきてしまったんですね。
今度は売りナンピンを仕掛けるべきところで、すでにヨレヨレになって傍観していたらまたまたゲロ下げ。
気がついたらドテンした玉にわずかながら利が乗っています。

しかし、下方のレンジにはまだ遠く決済もできず傍観・・・

そして土曜の朝にナスダックとダウの超絶プラテンを見る羽目になってしまいました。
サブプライム関連の憶測が原因のようですが、それを確定するようなニュースが流れたり、さらに憶測を打ち消すような憶測が流れたりと情報が飛び交っています。

わたしのショートポジションはどうなるんでしょうね。

というわけで、売買履歴です。
長くなってしまったので、次回からはきちんとこまめに報告します。

10003482124
[10003481932] AUDJPY 決済
[買] 100,000 95.67
[95.64] 08/02/01 19:28
[08/02/05] 0 -3,000
10003483271 NZDJPY 新規
[買] 100,000 84.41 08/02/01 21:00 3,360 --
10003486064 NZDJPY 新規
[買] 100,000 83.83 08/02/01 23:12 3,360 --
10003502227
[10003486064] NZDJPY 決済
[売] 100,000 84.80
[83.83] 08/02/04 18:59
[08/02/07] 0 97,000
10003502228
[10003483271] NZDJPY 決済
[売] 100,000 84.80
[84.41] 08/02/04 18:59
[08/02/07] 0 39,000
10003506863 NZDJPY 新規
[売] 100,000 84.99 08/02/04 23:30 0 --
10003509484
[10003506863] NZDJPY 決済
[買] 100,000 84.92
[84.99] 08/02/05 01:28
[08/02/07] 0 7,000
10003523666 NZDJPY 新規
[買] 100,000 84.71 08/02/05 22:45 6,680 --
10003528367 NZDJPY 新規
[買] 100,000 83.84 08/02/06 00:05 6,680 --
10003566881
[10003528367] NZDJPY 決済
[売] 100,000 84.15
[83.84] 08/02/08 00:37
[08/02/12] 0 31,000
10003566882
[10003523666] NZDJPY 決済
[売] 100,000 84.15
[84.71] 08/02/08 00:37
[08/02/12] 0 -56,000
10003567551 AUDJPY 新規
[売] 100,000 95.23 08/02/08 01:09 -1,640 --
10003594208
[10003567551] AUDJPY 決済
[買] 100,000 96.76
[95.23] 08/02/11 15:35
[08/02/13] 0 -153,000
10003594213 AUDUSD 新規
[買] 100,000 0.9029 08/02/11 15:36 0 --
10003597162
[10003594213] AUDUSD 決済
[売] 100,000 0.9046
[0.9029] 08/02/11 19:59
[08/02/13] 0 18,139
10003598564 NZDJPY 新規
[買] 100,000 84.32 08/02/11 21:44 1,630 --
10003610440
[10003598564] NZDJPY 決済
[売] 100,000 84.50
[84.32] 08/02/12 17:55
[08/02/14] 0 18,000
10003617795 NZDJPY 新規
[買] 100,000 85.17 08/02/12 23:25 8,540 --
10003635840 NZDJPY 新規
[買] 100,000 84.84 08/02/13 22:42 6,840 --
10003651236
[10003635840] NZDJPY 決済
[売] 100,000 85.42
[84.84] 08/02/14 22:02
[08/02/19] 0 58,000
10003651237
[10003617795] NZDJPY 決済
[売] 100,000 85.42
[85.17] 08/02/14 22:02
[08/02/19] 0 25,000
10003651342 NZDJPY 新規
[売] 50,000 85.40 08/02/14 22:09 0 --
10003651709 EURUSD 新規
[買] 50,000 1.4630 08/02/14 22:27 0 --
10003651879
[10003651342] NZDJPY 決済
[買] 50,000 85.57
[85.40] 08/02/14 22:32
[08/02/19] 0 -8,500
10003651924
[10003651709] EURUSD 決済
[売] 50,000 1.4616
[1.4630] 08/02/14 22:32
[08/02/19] 0 -7,585
10003652916 NZDJPY 新規
[買] 100,000 85.63 08/02/14 23:02 1,710 --
10003687424
[10003652916] NZDJPY 決済
[売] 100,000 85.84
[85.63] 08/02/18 22:29
[08/02/20] 0 21,000
10003687456 AUDJPY 新規
[売] 50,000 98.59 08/02/18 22:31 0 --
10003688795
[10003687456] AUDJPY 決済
[買] 50,000 98.78
[98.59] 08/02/18 23:59
[08/02/20] 0 -9,500
10003688838 NZDJPY 新規
[買] 100,000 85.99 08/02/19 00:01 1,710 --
10003696036
[10003688838] NZDJPY 決済
[売] 100,000 85.91
[85.99] 08/02/19 16:04
[08/02/21] 0 -8,000
10003701034 NZDJPY 新規
[買] 50,000 85.90 08/02/19 20:35 0 --
10003702607
[10003701034] NZDJPY 決済
[売] 50,000 86.19
[85.90] 08/02/19 22:00
[08/02/21] 0 14,500
10003703412 NZDJPY 新規
[売] 50,000 86.32 08/02/19 22:31 0 --
10003704228
[10003703412] NZDJPY 決済
[買] 50,000 86.11
[86.32] 08/02/19 23:06
[08/02/21] 0 10,500
10003704268 NZDJPY 新規
[買] 100,000 86.12 08/02/19 23:08 1,720 --
10003707076 NZDJPY 新規
[買] 100,000 85.83 08/02/20 01:25 1,720 --
10003710740
[10003707076] NZDJPY 決済
[売] 100,000 85.98
[85.83] 08/02/20 09:39
[08/02/22] 0 15,000
10003710741
[10003704268] NZDJPY 決済
[売] 100,000 85.98
[86.12] 08/02/20 09:39
[08/02/22] 0 -14,000
10003710748 NZDJPY 新規
[売] 100,000 85.99 08/02/20 09:39 0 --
10003711510
[10003710748] NZDJPY 決済
[買] 100,000 85.90
[85.99] 08/02/20 11:01
[08/02/22] 0 9,000
10003711513 NZDJPY 新規
[買] 100,000 85.90 08/02/20 11:01 0 --
10003712091
[10003711513] NZDJPY 決済
[売] 100,000 86.03
[85.90] 08/02/20 11:53
[08/02/22] 0 13,000
10003712393 EURUSD 新規
[買] 50,000 1.4723 08/02/20 12:10 540 --
10003713655 NZDJPY 新規
[買] 100,000 85.80 08/02/20 13:51 5,160 --
10003722360 NZDJPY 新規
[買] 100,000 85.51 08/02/20 22:39 5,160 --
10003722393 EURUSD 新規
[買] 50,000 1.4633 08/02/20 22:39 540 --
10003729549
[10003722360] NZDJPY 決済
[売] 100,000 86.28
[85.51] 08/02/21 08:01
[08/02/25] 0 77,000
10003729550
[10003713655] NZDJPY 決済
[売] 100,000 86.28
[85.80] 08/02/21 08:01
[08/02/25] 0 48,000
10003729560
[10003722393] EURUSD 決済
[売] 50,000 1.4713
[1.4633] 08/02/21 08:02
[08/02/25] 0 43,216
10003729561
[10003712393] EURUSD 決済
[売] 50,000 1.4713
[1.4723] 08/02/21 08:02
[08/02/25] 0 -5,403
10003739515 NZDJPY 新規
[買] 50,000 86.52 08/02/21 22:22 0 --
10003740659
[10003739515] NZDJPY 決済
[売] 50,000 86.53
[86.52] 08/02/21 23:11
[08/02/25] 0 500
10003741578 NZDJPY 新規
[買] 50,000 86.65 08/02/21 23:58 865 --
10003741930 NZDJPY 新規
[買] 100,000 86.28 08/02/22 00:03 1,730 --
10003742414 GBPJPY 新規
[買] 50,000 211.07 08/02/22 00:11 1,335 --
10003743770 NZDJPY 新規
[買] 100,000 86.09 08/02/22 01:08 1,730 --
10003752551
[10003743770] NZDJPY 決済
[売] 100,000 86.00
[86.09] 08/02/22 17:04
[08/02/26] 0 -9,000
10003752552
[10003741930] NZDJPY 決済
[売] 100,000 86.00
[86.28] 08/02/22 17:04
[08/02/26] 0 -28,000
10003752553
[10003741578] NZDJPY 決済
[売] 50,000 86.00
[86.65] 08/02/22 17:04
[08/02/26] 0 -32,500
10003752565
[10003742414] GBPJPY 決済
[売] 50,000 210.61
[211.07] 08/02/22 17:05
[08/02/26] 0 -23,000
10003752802 GBPJPY 新規
[売] 100,000 210.65 08/02/22 17:14 0 --
posted by (;D)笑男 ◆LeBIz0ZWfs at 18:19| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

居眠り

今日は寒かったので暖房を強めにしてみました。

そしたらねみーこと。

見たら店長も寝てました。居眠り事務所です。

昨日は地元でセミナー開いたんですが、参加者はひとりだけでした。
主催者は泣きそうでした。
わたしはマンツーの方が自然体で話ができるのでよかったですね。
もちろん参加者は寝る間もありません。

火曜日は東京でわたしがセミナー受けないといけません。
こっちはたぶん寝るでしょう。
寝るために東京行くようなもんです。
posted by (;D)笑男 ◆LeBIz0ZWfs at 17:38| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2008年01月30日

落とし穴

ふと飲みたくなってマミーのニセモノみたいな乳製品を買ってみましたが・・・





さすがに一リットルは多すぎました。
posted by (;D)笑男 ◆LeBIz0ZWfs at 22:39| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2008年01月01日

ファイルアップローダの代わり

200808271028000.jpg

DVC00098.jpg

posted by (;D)笑男 ◆LeBIz0ZWfs at 00:00| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2007年12月29日

スカトロとの境界線

えー、ある公務員がみずからスカトロを白状したという酒席での笑い話がありまして、そこから発展した話。

たとえば、とってもかわいい女の子とエッチをしたとします。
その女の子のかわいいフリルのパンティを脱がせたらちょっぴりウンコがついていたとき
「あ、ウンコついてる恥ずかしいなぁ、なめちゃうよ」って女の子の恥ずかしがる姿を見ながらペロってやるのは、スカトロではない。

ウンコを発見した瞬間、女の子に内緒でこっそりなめたら、それはスカトロ。

この区分、どうですか?

ちなみに「そのウンコが乾いてるのかどうかでも違う」という意見もありました。
posted by (;D)笑男 ◆LeBIz0ZWfs at 15:56| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2007年11月24日

はじめまして

2chの市況1板の明日の日経平均を予想するスレにたまに出没してます。

使えないインジケータを自作して実践投入で損したり自虐的な投資方法が信条です。それはいかんじゃないか、とは思います。
posted by (;D)笑男 ◆LeBIz0ZWfs at 10:36| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。