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月17日

うっかりしてたら・・・

ブログランキングでとうとう50位以内に入ってしまいました。

まだこれといって成果出してないのにいいんですかね?

まさかこんなにちょろ(ry

ひょっとしてこのカテゴリって過疎(ry

みなさんの応援のおかげです。

ありがとうございました。




でもこのへんでいいです。気楽なので。w
posted by (;D)笑男 ◆LeBIz0ZWfs at 15:55| Comment(0) | TrackBack(0) | 為替・FX・MT4 | このブログの読者になる | 更新情報をチェックする

レンジとトレンド

最近考えてるのは、レンジとトレンドの相関です。
トレンドの強さを表すADXやボラティリティを表すATRを応用するアイデアはあるんですが、もっと根本のことを考える必要があると思うんです。

10Pips抜きたい!って考える人に都合のいいレンジと、50Pipsを目標としたい人が乗りたいトレンドって、それぞれどう定義したらいいでしょうか?

というわけで、以前Winnerというインジケータを作ってみました。

目標Pipsを設定すると、過去に遡ってどのポジションが現在の足で目標を達成したかを逆検索するインジケータです。

目標を20Pipsに設定して1分足で見ると、相場がおとなしいときは200とか数字が出るんですよ。
つまり200分前にポジっててやっと20Pipsゲットできているということです。50pips目標だと1000分とか。
また、この増減はダイナミックに変化し、また変化の度合いは一定しないので予測ができません。

目標を10・20・30と増やしていくと、時間が指数関数的に増えていく感じです。目標を2倍にしたら時間は1.7の2乗かかる・・・・とか。時間に対する値幅はベキ乗分布に従うわけです。
そして、一回で狙うPips数の目標が多いほどエントリーチャンスが少ないはずです。そんなイメージです。

Exitタイミングもインジケータに頼るシステムは、こういう時も自動的にExitしてしまうので、結果として取れるPips数が増減するわけですが、そのシステムはあるレンジのトレンドが終わったと認識しているわけです。

別の言い方をすれば、そのシステムは、ある定義された範囲内に統計的に一番多く現れるレンジトレンドに対してエントリーしていることになります。が、発想を変えると、トレンドは目標とするPips数によって定義される範囲がいつも変化しているわけです。

レンジブレイクが成功を収めやすいのは、レンジの壊れた瞬間に狙いを定めているから、ということになりますね。
しかし、いままでのレンジブレイクはやはり先に範囲を決めてそこにレンジが収まってる間はエントリーしないことになってます。
先にレンジを設定してしまっている点で、先のシステムと同じです。

以前にレンジブレイクのレンジをつぎつぎとバトンタッチしていくシステムを構想したことがあったんですが、うまく継承していくことができないケースが多くて無理をすると損失を出してしまうわけですね。

下層レンジのあげた利益が上層レンジのLCに丸々含まれてしまう場合、下層レンジのエントリーポイントはなんだったのかって話です。

しかし、レンジの考え方を柔軟にすれば、場合によって継承され、場合によって決済する判断がよりスムースになると思うんですが・・・

どうですかね?w
posted by (;D)笑男 ◆LeBIz0ZWfs at 15:21| Comment(0) | TrackBack(0) | 為替・FX・MT4 | このブログの読者になる | 更新情報をチェックする

2009年02月15日

MSSGA改善会議

さて、急ピッチで進むMSSGAのバックテストですが、現時点でこれはいいーっ!って結果が出てきていません。
一時的にうまくいっても、必ず賞味期限が切れて、そしてその後にいつまでも変わりの手法が現れてこない結果がほとんどなんです。
焼きなましを繰り返してもダメだと最適化問題のそとにはみ出してることが考えられます。

さて、そこでさらに改善をしていく必要があるんですが、ざっと考えてエントリー・イグジットを別々に扱う、さらにTP・LCも別々に扱うということが考えられます。
また、売りと買いを別々に扱う、というのも考えられますね。

しかしそれよりも、ある程度勝つ確証のあるストラテジを盛り込むってのがあると思います。

EAの作者って2種類あると思うのですが、有名なテクニカル手法やインジケータを使って統計的な手法でコツコツとエッジを探していくタイプと、独創的なインジケータを作るのが好きでその検証のためにEAに組み込んでるタイプ。

わたし後者なんですよ。

自分でもワケのわかんないレアインジケータやオリジナルインジケータを数え切れないほど作ってます。
・チョピネス
・フラクタル
・Winner
・VC
検証をしないでいきなり作っちゃうんですよね。
だから検証に基づいたエッジの探し方のスキルがぜんぜん足りないんですよ。
GAに組み込んであるMA、RSI、レンジブレイク、ボリンジャーなどでも、上手にフィルタリングしたりして右肩上がりなEAは作れるハズだと思うんです。それなのにGAに行き着いたのはカーブフィッティングから逃れたいってのが大きいんですが、フォワードテストできちんと結果を出してるほかのEAって統計的な手法を上手に使ってると思うんですよね。

そもそもGAで使ってるテクニカルのパラメータもそれぞれ10箇くらいしか用意してませんから、抜け穴だらけなんじゃないでしょうか・・・

どのくらいの間隔で使えばいいかのチューニングセンスがあればもう少しまともな形になっていくんじゃないかなーって思います。

今日もぼーっと考えてたらまた独創的なインジケータのアイデアが出てきてしまって・・・あかんwあかんぞwww
posted by (;D)笑男 ◆LeBIz0ZWfs at 16:43| Comment(0) | TrackBack(1) | 為替・FX・MT4 | このブログの読者になる | 更新情報をチェックする

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) | 日記 | このブログの読者になる | 更新情報をチェックする

広告


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

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

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


×

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