2013年11月25日 (月)

豊嶋先生とは別の提案。MT4とMT5の使い方。

豊嶋先生の著書

    題名など

「FXメタトレーダー4&5一挙両得プログラミング」

が出たことによって少しMT5を触ってみようという層が増えたと思います。

しかし、この本でのべられた使い方はMT4と同じような使い方をMT5でもしようです。

それはもったいないというか、使い方として少しずれているように感じます。

時代がかわりMT5採用業者が増え、いろいろな問題が解消された時その使い方が役に立つでしょう、しかしまだ早いというのが率直な感想です。

実際MT5ではMT4に比べて実にいい部分がなんこかあり、その部分のみを利用するのが得策です。

そしてどうしようもない部分もたくさんあります、そこら辺はMT4かExcelで代用します。

これは、今までMT4やってきたことを良い部分のみMT5でまかなうそういう使い方の提案です。

ではMT5のどこが優れているか。

  • マルチ通貨対応で他の通貨の値動きで売り買いをバックテストできる。
  • そもそも速度が高速である、設計からいろいろなことを犠牲にして高速化をはかっている。CPUやメモリの制限もなくやろうと思えばネットワーク上の他人の使ってないCPを使って最適化できる。
  • 時間枠に囚われない、6分足なども使用できる。
  • デバッガとプロファイラが使える。
  • 最適化に自分が考えた方法で探索できる。

どうしようもない部分。

  • ヒストリカルデータの編集ができない上にもともとのデータがひどい。具体的にはデータ自体が大して揃ってない上に持って無い足をそれより大きい時間枠(時間足や日足)で勝手にまかなう。そもそもデータ自体の信頼性も低い。
  • ポジションに関係した処理が雑でこのままでは使用できない。
  • 両建てができない。
  • そもそも国内のFX業者が採用して無い。

とまあ、ここまで見て思うことは。ライブでの使用は避けて限定した状況でのみのバックテスト及び最適化ではいいことずくめです。

例えば、15分~1時間足の過去3年間で複数通貨の値動きで売買するシステムを検証するときにこれほど向いているソフトは他に無いです。

限定的な状況でMT5を使いバックテストを重ねて、

使えそうなシステムを生み出せたらようやくフォワードテストをMT4のライブで行い

実運用もMT4の口座でやるのが現状一番いいMT5の使い方であるように思います。

| | コメント (0) | トラックバック (0)
|

2013年11月15日 (金)

「FXメタトレーダー4&5一挙両得プログラミング」初見での感想。

    題名など

「FXメタトレーダー4&5一挙両得プログラミング」

ただで貰える事になって昨日届いて今日一日で全部読んで今感想を書いているところです。

その節はありがとうございまっす。

ということで初めますが、まずこれはこの本だけでは成立してないのではないのかという疑問があります。

ということでFXメタトレーダー入門を手元に置いておくべきだと思います。

根本的に主軸はオリジナルライブラリーを使ったEAの作り方になります、

このオリジナルライブラリーが非常に良く出来ていてそれ故つまづきにくく。

理解していなくても実装できてしまう可能性があります。

コンセプトからして余り手を煩わせずにMQL4からMQL5への移行なのですから当たり前なのですが、ガッツリ腰を据えてMQL5を説明するわけではないです。

まあ、逆に言えばものすごく実用的な物です。

それに引き換え入門と実践ではとてもそのままでは駄目だろうという物で、

これはこれで自分で考える能力になっていたと思います。

この本はMQLを多く説明するというより非常にざっくり説明してオリジナルライブラリーの説明書というように感じます、

しかし誤解のないように言っておくとそれだけでも価格以上の価値があります。

自分はプレゼントでもらったわけですが、たとえそうでなくともこのオリジナルライブラリーはとにかくいいものです。

今現在鯖が落ちていてダウンロードできないみたいですが、

読み終わった今は早く手に入れていじってみたいという気持ちになってます。

そして、こんなの簡単な説明じゃ物足りないと感じるなら、オリジナルライブラリーを開いてどういう処理をしているか眺めるととても勉強になるはずです。

これ自体が良くも悪くもオリジナルライブラリーというとても良質な教材なのではないでしょうか。

最後に一つ注意点として自分はMQL5を半年ほど勉強して、MQL4より多くのMQL5プログラムを書いた人の感想なので余り多くの人に当てはまらない環境での感想だという事です。

| | コメント (0) | トラックバック (0)
|

2013年10月30日 (水)

インディケーターを作成してみよう。時間別平均その3(Period Price Average)

前回は24時間ずらしたら前日の時間に移動できるんじゃないかと

やってみて駄目なところまで行きました。

次に思いつく方法は一個一個ずらしていき、時間が同じなら足す方式。

ここで時間が同じならという条件部分をどう表現するかで悩みますが

実はこの部分はMQL5の構造体MqlDateTimeが用意されていますので簡単に実現できます。

というかぶっちゃげこれの説明のための一連のコラム(インジ作成ネタ)でもあります。

P2c

今回もスプリクトにして殴り書いて見ました。

まず最初に20行目MqlDateTimeとして配列time1[1]を宣言してから使います。

これは決まり事のようなものです。別に変数は配列でなくても宣言できます。

あと前回と違うのはCopyClose、limitの値に1ではなくPT分増やして、

時間枠に関係なく必ず0分の数値を採用するように仕様を変えています。



33行目、34行目の説明。

今の時間の何時、何分、何秒などの情報を宣言した構造体に入れ込んでます。

もう一個の方にはずらした時の情報を同じように構造体に入れ込んでこれを比べます。

条件文の部分の説明に行きます。35行目。

if(time1[0].hour==time1[1].hour && time1[0].min==0)T3=T1;

変数のあとに.hourで時間.minで分を取り出せます、このやり方だけ覚えて下さい。

今の時間がおなじでかつ0分だった場合にT3を変化させていきます。

T3が今の時間の0分に日付が変わっていくかデバッグさせてみてください。

うまく想定どうりの動きをしていると思います。

スプリクトですすめるのはこのへんでやめて実際にインジケーターに落とし込みます。

Init関数まで

S1

MQL4から5の主な変更点はInit()がOninit()。externがinputにそんなもんですかね。

S2

スタート関数はOnCalculate()になりました。

limitの扱いだけちょっと複雑ですが、それ以外はここまでの話でつまずくところはないと思います。

それではコンパイルしてチャートに表示させてみます。

Onc

はい見事に23時だけ値が小さすぎます。

前回の問題である週末の足の本数が足りないので数字が減ってしまってます、

さてこれを修正したら概ね良好なようです。

これをどうやって修正するかはいろいろな考えがあるでしょうが週末だけ1時間分過去にずらす方式でやってみようと思います。

S3_2

条件部分だけ加筆、77行目、今何曜日かの判定に.day_of_weekを使います。

0が日曜日1が月曜日、金曜日は5です。この条件では23時の計算の時だけ

金曜日の22時を使って平均を修正します。できたものがこれ。

Onc2

赤が修正後です、23時もうまく想定したとおりの動きです。

今回は金曜日の23時が必ず抜けるのでこういう修正ですみましたが、

いつもそうなるわけでもないしいつか金曜日の23時が出現するかもわからない点に注意が必要です。

しかしMqlDateTimeを使って見ることがこのコラムの本筋なのでこの辺で終わります。

追記:終わってみて気づきましたがNPが増えていくと金曜日を挟むたびにlimitの値を減らしとかないと意図しない足し算がなされますね。気が向いたら修正案を考えます。

| | コメント (0) | トラックバック (0)
|

2013年10月29日 (火)

インディケーターを作成してみよう。時間別平均その2(Period Price Average)

さてここでもう一度インジケーターの仕様のおさらいです。

作りたいインジケーターは今が10時なら、10時における当日を含む直近N日間の平均です。

Nが3日だった場合の計算式はこうです。

(Close(今日AM10)+Close(昨日AM10)+Close(一昨日AM10))/3

ここで躓く部分というか、キモの部分は

どうやって昨日AM10と一昨日AM10のCloseを持ってくるかです。

真っ先に思いつくのは1日が24時間なので24時間分シフトしつつ足す方法です、

早速思いついたものをやってみます。

MT5のエディタにはデバッグモードがついていますのでそれを使いながらやってみましょう。

最初にツール→オプションからデバッグ時に開く通貨と時間を指定します。

Debug

ここではEURUSDのH1でやってます。

Spzenbun

思いつくままに殴り書いた24時間分ずらすスプリクトです。

すごく簡単に説明しますと1時間足でやると24回、

30分足でやると48回N日分過去にずれ続けます。

T1のある28行目を右クリックしてトグルブレイクポイントを作成しておきます。

コンパイルの右に再生みたいなマークのスタートデバッグをぽちっとやります。

下段右にこれが出ます、変数名は自分でタイプするとその右に数値が出ます。

Basyo

コンパイルの右の停止ボタンの右にあるstep infoを完走するまで押し続けてみます。

1回 6時

1

2回 6時

2

3回 6時

3

4回 5時

4

はい4回目で見事に1時間目的地からズレてしまいました

どうやら休日をはさむと足の本数上どうしてもズレてしまうようです。

と、この講座ではMT5の新しい機能を紹介しつつありそうな失敗を含めて進めていきます。

まあ少し縦に長くなってきたので今回はこの辺でおしまい。

| | コメント (0) | トラックバック (0)
|

2013年8月 9日 (金)

インディケーターを作成してみよう。時間別平均その1(Period Price Average)

いきなりEAを作ってもいいのですが実際に想定した動きをするかを確かめるためにはインディケーターをチャートに落としこんで目視でのチェックになります。

要するにどのみちインディケーターは作る必要があるので、インディケーター→その数値をつかったEAといった順序で作成した後、バックテストなどに移ることになります。

もちろんすでにあるものを探してもいいですが、自分のアイデアを具現化したほうが本筋だと思います。

今回の一連のコラムではMQL5で時間ごとのpriceの平均値を求めるインディケーターを作りつつすごくアバウトに説明を入れていきます。

| | コメント (0) | トラックバック (0)
|

«FX、自動売買で最初にやること。