2017年1月15日日曜日

通貨の強弱(Ku-chart)を使ったEAのバックテスト part1 前日高値・安値&1時間足ブレーク

通貨の強弱についての概念がKu-chartがでて一般的になってからしばらく立ちますが、一般的認識としては強弱は取引する通貨を選ぶときに失敗しないためのものとされているようです。

取引する通貨に失敗しなければ、トレンドがある場合は多くの値幅が取れますし、トレンドが崩れる場合は最小のリスクで取引ができます。こう言ってみると、強弱を見るだけで優位性があり、強弱に従うだけで勝てると思いもしてしまいそうですが、実際はそうではなく、強弱が優位性を発揮するタイミングというものがあるようです。というのは、様々な情報(雑誌やネットの情報、実際の見聞き等)を見て+一部のバックテストでTwoerも確認していることから判断しています。


今回から何度かにわたってTwoerが行ったバックテストの結果を踏まえて優位性の検証、検討をしていけたらなと思います。
そして今回は強弱を使った前日高値、安値のブレークに優位性があるかを紹介します。




強弱を使った前日高値、安値のブレークトレード

どういった仮説でこのトレードに優位性があると思ったか

仮説

  • メジャー通貨の強弱を見れば、為替通貨の大きな資金の動きについて把握しやすいだろう
  • 前日の高値、安値についてはほとんど全てと言っても過言ではないほどの人が見ているため意識されやすいボーダーラインであるだろう


まず、Twoerが実施する優位性の確認はなるべくシンプルなものにしています。こちらは、シンプルでないと一貫性を保つのが難しいと共に、検証が困難になってくるためです。大体3つより多くなってくると危険だと個人的に思っているので、3つより多くの指標を利用する際には、その指標それぞれについて単体で優位性を確認できるものに限定します。
トレードのルールは下記でバックテストを実施しています。
前提

  • 1時間足を利用し、終値のみを利用
  • 一日の基準はNY市場の終わりの時間を開始とする(夏:日本時間6時開始, 冬:7時)
  • 強弱の取得にはKu-chart-Maker2-Dayを利用


トレード開始のルール

  • 前日の高値を終値で上回っているor前日の安値を終値で下回っている
    and
  • 通貨強弱で最強のものを買い最弱を売る。

手仕舞いのルール

  • 前日の中央値(=[前日高値+前日安値]/2)
    前日の中央値まで戻ってしまった場合はニュートラルに戻ってしまいどちらに行くかわからなくなっていると仮定して手仕舞いとしています。

バックテストの結果

※ スプレットは一律sp10で実施しています。
※ 期間 2000/01/03 02:00 - 2014/12/11 23:59


より詳細に確認したい方向けに画像とmt4のリポートをzipでまとめて置きます。

StrengthAndBreakOut_mt6_sp10-reports.zip:
https://drive.google.com/open?id=0B0xWrUjaNTp-RTc0dHQxeFNjbjA

検証・検討

実施する前の予測としては強弱に強い優位性があると考えていたため、大半の通貨ペアでプラスになると思っていましたが実際は違いました。

右肩上がりの通貨ペア: 2ペア(EURJPY, EURCHF)
右肩下がりの通貨ペア: 8ペア
(USDCHF, NZDCAD, GBPJPY, GBPCHF, GBPCAD, AUDUSD, AUDNZD, AUDCAD)

右肩上がりのものが2ペアしかなく、スプレッドが低いにも関わらず安定してプラスにできるものが無く、買っている通貨ペアでもプロフィットファクタが低いことから、このストラテジでは強弱の優位性は発揮できないことがわかりました。

優位性が確認できなかったため実用できるレベルのEAには全然仕上がっていませんが、もし自分でも試したいという方がいれば、メッセージをTwitter(@tower_alt)ででも頂ければ差し上げます。ただし、本番では絶対に利用しないで下さい。

次回について

今回の結果を踏まえると、むしろ逆張りに優位性があるのでは?と考えられるので次回は強弱を使った最弱通貨同士逆張りトレードの検証結果をご紹介します。
もっと、マシなトレードルールあるんじゃないか、検証方法をもっとよくできると言ったご意見があればお待ちしておりますのでお気軽にご連絡下さい。

その他

そもそも、強弱無しでの1時間足前日高値・安値のブレークに優位性ってあるの?って思う方がいれば別途そちらも記事にして紹介したいと思います。
結論だけを一旦言ってしまうと、通貨ペアによってまちまちで一部の通貨だとこのブレークトレードでもプラスになっているものもあるのですが、一部だけなので普遍的な優位性とはなかなか思えてません。

2017年1月10日火曜日

簡易文字コード変換方法(文字化け時の対応方法)

昔よりは大分マシになったものの、現在もまだまだshift_jisが使われているwindowsがあるようで文字コードに悩んでいる方が多いかと思うので簡易な文字コード変換方法をご紹介します。


Mojibake

文字コード変換方法


  1. 「開くと文字化けしてしまうファイル」を「開くと文字化けしてしまうファイル.txt」に名前を変更
    例)「Ku-chart-Maker2-Day.mq4」を「Ku-chart-Maker2-Day.mq4.txt」に名前を変更
  2. 「開くと文字化けしてしまうファイル.txt」ファイルをブラウザで開く
    開き方は名前を「開くと文字化けしてしまうファイル.txt」を右クリックして「別のプログラムを選択」をクリックし、ブラウザを指定する
  3. 表示されたプログラムに文字化けが発生してなければ全てコピーして、エディタで新規ファイルを作成して貼り付けて保存

文字化けする場合には是非試してみて下さい。環境によっては上手く行かないケースもありますが、ブラウザさえあれば文字化けを簡単に解消できるので覚えておく価値はあるかと思います。世界がUTF-8で統一され切りますように・・・。

文字化けがなぜ発生するかは下記を参考にしてみて下さい。

文字化けは何故起こるのか? ~文字化けの仕組み~
http://michisugara.jp/archives/2015/mozibake.html

2017年1月6日金曜日

MT4で使える通貨の強弱確認用インディケータ紹介

前回の記事を作成してから自分が知らなかったインディケータをTwitter経由でしれたこともあって、もうちょっと発展したインディケータもあるんじゃないか?と思ったので良い機会として強弱インディケータについて軽く調べてまとめることにしました。

内容としては網羅的に紹介するのではなくTwoerが調べ飽きるまで調べたものを紹介します。
といいつつも、やはり似たようなものも多くすぐ飽きてしまったのであまり無いですw。少しKu-chartについて頑張ったくらいです。

あと、これだけではあまり見る価値も無いと思ったのでひとつTwoerがカスタマイズして利用している、チャート無しでパッと見で強弱の組み合わせ+前日高値安値のブレーク状態を確認できるツールも紹介しておきます。

FX用MT4版通貨強弱確認インディケータ(チャート版)

Ku-chart

  • Ku-chart-Maker2 基本的なKu-chartを表示するためのもので7通貨表示が可能。
    Twoerが機能は変わらずブローカーごとのsuffixに対応できるようにしつつ、軽くなったバージョンを作成したそちらを参照下さい。
  • Ku-chart-Maker2b 基本的なKu-chartを表示すると共にこのインディケータを利用することでKu-Powerをオフラインで確認することができる。mt4を再起動した際にもヒストリデータがリセットされないため、ロウソク足が消えません。
    詳細:Ku-chart-Maker2aの4本値を残す。
  • Ku-chart-MakerZ? Ku-chartの基準値を一日単位にしたものを表示することができる。ただ、少し探して名前が違うのか見つけられなかったのでTwoerが修正したものを置いておきます。

ダウンロード:Ku-chart-Maker2-Day

強弱についての画像がタイムラインなので流れてきた時に色がKu-chartと同じだとわかるので、妙な親近感を覚えたりもしますよねw

indexes_v7L

海外製強弱インディケータです。こちらはパラメータの設定で基準時間を簡単に変更できるのが良いかと思います。


CCFp

こちらも海外製の強弱インディケータです。他のと比較して目立った特徴もないですが、こちらも様々な人が編集したバージョンがネットの海に存在しています。ラインのクロスでアラートがなるといったのもあります。

old CCFp & alerts



基本的には上記のものでしょうか。上記以外にも他の人が機能を付け加えたりしてるものもあるかと思いますので、有用そうな機能のものがあれば追記したいので教えて頂ければ幸いです。

Indexes_v7Lみたいに縦線入れておけば、縦線をダブルクリックで移動したら軸をパラメータ変えずに変更って簡単にできそうなきがする。。。これは気が向いたらかな・・・


FX用MT4版通貨強弱確認インディケータ(文字版)

マルチディスプレイを使って7通貨同士の全ペア(28ペア)を表示させる+強弱インディケータを使って強弱の把握できるのは良いですが、個人的には前日の高値安値との位置関係と強弱情報+その他情報をまとめてみたいので、下記のインディケータを重宝しています。

Oasis 1000pips Dashboard

このインディケータを見つけた時、この情報量の多さに、「勝ったな」と思ってましたw
もちろん、そんな甘いものでも無いんですがね。。
ただ、この情報の見やすさは非常に気に入ったので、少ししたの方で紹介していますが、オリジナルで表示する情報を変えたものを作成して現在も使用しています。

このインディケータは名前の通り、1000pipsを取るためのインディケータです。紹介によると1周間で1000pipsだそうです。驚異的ですね。

このインディケータで表示している情報は下記です。

  • チャートにピボットのレジスタンスとサポートライン
  • 右側の上が各通貨でピボットに近いものを後どのくらいかも含めて表示
  • 右側の真ん中が15分・1時間の移動平均でどちらの方向か
  • 右側の下には各通貨の情報を左から
    • 「現在のピボットとの位置関係」
    • 「スプレッド」
    • 「強弱差」
    • 「当日の価格変動値」
    • 「標準偏差を使った価格変動範囲」

    ダウンロード:Oasis 1000pips Dashboard (何故か曲として認識されてますがDLできますw)
    https://drive.google.com/open?id=0B0xWrUjaNTp-cktkZWo0S2Mxcm8

Oasis 1000pips Dashboard(改)

個人的にピボットは環境によって値が変わってしまいますし、計算方法に多少の違いがあったりするので好みではありませんでした。なので前日の高値安値と現在の位置関係をその他欲しい情報のみを28通貨ペア分で表示できるように変更して使ってます。

こちらのインディケータで表示している情報は左から順に下記です。
  • 「15分足で前日高値・安値を超えたか」
  • 「1時間足で前日高値・安値を超えたか」
  • 「強弱差」
  • 「当日の価格変動値」
  • 「標準偏差を使った価格変動範囲」
  • 「15分足の移動平均の方向」
  • 「1時間足の移動平均の方向」
  • 「スプレッド」
  • 「利用可能ロット数」
  • 「当日のボリューム」
ダウンロード:Oasis 1000pips Dashboard HL (何故か曲として認識されてますがDLできますw)

何でもかんでも表示すればいいというものではありませんが、自分が各通貨で欲しいと思った情報はこんなところです。


当初は、強弱インジ網羅してやろうレベルのモチベーションで調査を開始したんですが、思いの外似たりよったりで調べる気が減少してしまいました。必要な情報が自分で追加できるので、ベーシックなやつが一番良いんですよねやっぱり。

ps.
suffix追加可能版を追加しました。

ダウンロード:Oasis 1000pips Dashboard HLv2
https://drive.google.com/open?id=0B0xWrUjaNTp-NmEwcmFTRS1SNFk

2017年1月3日火曜日

Ku-chartの高速化をmt4で

Twitterを見ていたらタイムラインに「Ku-chartの簡単な計算方法」という記事が流れてきたので持っていたKu-chart-Maker2に反映させて実行時間を比較してみました。

結論としては5〜10倍程度早くなったのでEAなどのバックテストに使うには嬉しい結果でした。

計算式については@fxst24さんが書いている記事をそのまま使ってるだけです。

@fxst24さんは旬な情報提供を心がけている?ためか記事が定期的に見なおされ非有用だと判断されたものは削除されるようなので将来にわたってこの記事が見えるかはわかりませんが一応リンクを載せておきます。他の記事も非常に参考になる情報が多く更新もあるので嬉しい限りです。

参考:「コラム:Ku-Chartの簡単な計算方法」
http://fxst24.blog.fc2.com/blog-entry-364.html

元サイト:「FXシステムトレード」
http://fxst24.blog.fc2.com/

変更元のファイルですが、EA使いなら誰もが知るであろうfaiさんの作成したものを元にしています。
faiさんが基本的には変更・再配布をしても良いとしている記事があったので、faiさんのプログラムを元に作成しています。

変更・再配布について記載されている記事
http://d.hatena.ne.jp/fai_fx/20090910

何か問題が有りましたら一報頂ければ対応します。

変更点

元のKu-chart-Maker2ではドルストレート以外の値を一旦全て求めたうえで、算出した値を使ってKu-powerを計算していますが、変更後の処理ではドルストレートの値のみを使用しています。そのため、GetValMとGetValDを利用する必要がなくなり計算量が大幅に減ります。

元のKu-power計算式

       EURAV[i]=( EURUSD+EURJPY+EURCHF+EURGBP+EURAUD+EURCAD+EURNZD)/Pairs + ZeroLevelShift;
       USDAV[i]=(-EURUSD+USDJPY+USDCHF-GBPUSD-AUDUSD+USDCAD-NZDUSD)/Pairs + ZeroLevelShift;
       JPYAV[i]=(-EURJPY-USDJPY-CHFJPY-GBPJPY-AUDJPY-CADJPY-NZDJPY)/Pairs + ZeroLevelShift;
       CHFAV[i]=(-EURCHF-USDCHF+CHFJPY-GBPCHF-AUDCHF-CADCHF-NZDCHF)/Pairs + ZeroLevelShift;
       GBPAV[i]=(-EURGBP+GBPUSD+GBPCHF+GBPJPY+GBPAUD+GBPCAD+GBPNZD)/Pairs + ZeroLevelShift;

変更後のKu-power計算式
 
      int a;      
      a = (EURUSD + GBPUSD + AUDUSD + NZDUSD - USDJPY - USDCHF - USDCAD) / Pairs;

       AUDAV[i]=(-EURAUD+AUDUSD+AUDJPY+AUDCHF-GBPAUD+AUDCAD+AUDNZD)/Pairs + ZeroLevelShift;
       CADAV[i]=(-EURCAD-USDCAD+CADJPY+CADCHF-GBPCAD-AUDCAD-NZDCAD)/Pairs + ZeroLevelShift;
       NZDAV[i]=(-EURNZD+NZDUSD+NZDJPY+NZDCHF-GBPNZD+NZDCAD-AUDNZD)/Pairs + ZeroLevelShift;
       EURAV[i]= EURUSD - a + ZeroLevelShift;
       USDAV[i]= -a + ZeroLevelShift;
       JPYAV[i]= -USDJPY - a + ZeroLevelShift;
       CHFAV[i]= -USDCHF - a + ZeroLevelShift;
       GBPAV[i]= GBPUSD - a + ZeroLevelShift;
       
       AUDAV[i]= AUDUSD - a + ZeroLevelShift;
       CADAV[i]= -USDCAD - a + ZeroLevelShift;
       NZDAV[i]= NZDUSD - a + ZeroLevelShift;



実行結果の比較

上が変更後のKu-chart-Maker2-Light
下が元のKu-chart-Maker2

です。厳密に言うと値が異なりますが、各通貨の強弱を見る分には問題なさそうです。



重ねてみると

実行時間の比較

簡単に何度か時間を表示してみたところ下記のような結果になりました。
実行回数は少ないので、もっとしっかりしたデータが欲しい場合は是非実施してみて下さい。

実行環境:
[OS] Ubuntu 16.04
[MT4] Version: 4.00 Build 1031 (Wineを利用してインストール)
[CPU] Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz
[Memory] 16GB

実施パラメータ

実行時間(10回程度実施)
Ku-chart-Maker2: 11~20 milliseconds
Ku-chart-Maker2-Light:72~100 milliseconds


ソースファイル
変更後ファイル:Ku-chart-Maker2-Light
https://drive.google.com/open?id=0B0xWrUjaNTp-U0gyMzlTQUlQSEk

実行結果やこのインディケータを使った投資の結果には責任は持てませんので予めご了承下さい。
バグがあったとしても、私の利用上で問題ない場合は修正しない可能性もあるのでその場合は各自で修正・変更してご利用下さい。

おわりに

今回は私も利用頻度が高いKu-chartについて速度をあげることができたので収穫が大きかったです。Ku-chartを使ってのEA作成もいくつか行っているので検証結果についてはこちらでも報告していきたいなと思っています。基本的に作成するものは私自身が優位性を感じるものについて検証するためのものとなっています。ですが情報交換等は積極的に行っていきたいのでこういったアイディアはどう?と言った共有できるような内容があればコメントなりダイレクトメッセージなりで連絡頂ければ幸いです。

twitterアカウント: https://twitter.com/Twoer_alt


2016年12月28日水曜日

このサイトについて

サイトの目的

サイトを更新していくにあたって下記のモチベーションを元にしていくつもりです(2016/12/28現在)

  • 自分の技術情報の整理

    基本的にスクリプト言語を利用したアプリケーション作成が趣味の為、ハマったことや有益だと感じたことについて載せていく

  • 自分の活動についての振り返り

    普段の活動で反省に使えそうだと思った情報について記載する

  • 発信することにより自分に情報が集まるきっかけづくり

    情報は発信する場所・人に集まりやすいと思っているため、情報を収集するだけでなく、発信していこうと思った

  • あわよくば広告収入

    広告を張るのであわよくば

載せる情報の種類

  • サーバ管理やアプリケーション開発に関連すること
  • FX・投資のトレード記録
  • 作成したもの自体について
  • 思い立ったことや学び・示唆するものがあったもの