name | dir | date | last-price | target | losscut | score |
---|---|---|---|---|---|---|
GBPJPY | SELL | 08/13 | 171.000 | 169.800 | 173.100 | 100% |
順調に下げているGBPJPYに
もう一段の下げ期待です
他の通貨に、目立ったシグナルは出ていません
name | dir | date | last-price | target | losscut | score |
---|---|---|---|---|---|---|
GBPJPY | SELL | 08/13 | 171.000 | 169.800 | 173.100 | 100% |
順調に下げているGBPJPYに
もう一段の下げ期待です
他の通貨に、目立ったシグナルは出ていません
問題のメモリリークは治ったものの
「memory still reachable」が数件残ってしまった
見ると、原因箇所は printf
それも単純に変数を表示しているだけのところ
下のコードの4行目と5行目のprintf
1 2 3 4 5 6 7 8 9 10 |
void print(void) { printf("%s ", (code1 + code2).c_str()); printf("%4d try %4d win", count, wincount); printf(" (%3.0f%%)" , (0 < count) ? ((float)wincount / (float)count * 100.0f) : 0.0f); printf(", profit %+7.2f " , profitBuy + profitSell); printf("(%+7.3f %+7.3f)" , profitBuy, profitSell); printf(", Ave %7.3f" , (0 == count ) ? 0.0f : (profitBuy + profitSell) / (money_t)count * curGain); printf(", score %8s" , score.c_str()); printf("\n"); } |
エラー扱いでもないし、計算自体に影響はないけれど
ゴミが残るのは気持ち悪い
Valgrindのバグかなぁ
と思って検索したところ
結構、困っている人が多い様子
Cygwinでの計算結果も、正常に戻ったことだし
Merbericksの対応は試験的、ということなので
これ以上追わないことに
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
/usr/local/bin/valgrind --dsymutil=yes --leak-check=full --show-leak-kinds=all ./Trade2SignalsSim -method 1 -dir ../data -period 30 --last `date +%Y%m%d` ==84263== Memcheck, a memory error detector ==84263== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. ==84263== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info ==84263== Command: ./Trade2SignalsSim -method 1 -dir ../data -period 30 --last 20140816 ==84263== ==84263== WARNING: Support on MacOS 10.8/10.9 is experimental and mostly broken. ==84263== WARNING: Expect incorrect results, assertions and crashes. ==84263== WARNING: In particular, Memcheck on 32-bit programs will fail to ==84263== WARNING: detect any errors associated with heap-allocated data. ==84263== ... snip(プログラム出力) ... ==84263== ==84263== HEAP SUMMARY: ==84263== in use at exit: 29,436 bytes in 380 blocks ==84263== total heap usage: 1,432,114 allocs, 1,431,734 frees, 379,615,028 bytes allocated ==84263== ==84263== 32 bytes in 1 blocks are still reachable in loss record 31 of 81 ==84263== at 0x6DEB: malloc (in /usr/local/Cellar/valgrind/3.9.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so) ==84263== by 0x248AB0: __Balloc_D2A (in /usr/lib/system/libsystem_c.dylib) ==84263== by 0x245BE3: __rv_alloc_D2A (in /usr/lib/system/libsystem_c.dylib) ==84263== by 0x245C04: __nrv_alloc_D2A (in /usr/lib/system/libsystem_c.dylib) ==84263== by 0x245EB1: __dtoa (in /usr/lib/system/libsystem_c.dylib) ==84263== by 0x26D8A9: __vfprintf (in /usr/lib/system/libsystem_c.dylib) ==84263== by 0x2942DA: __v2printf (in /usr/lib/system/libsystem_c.dylib) ==84263== by 0x2946AF: __xvprintf (in /usr/lib/system/libsystem_c.dylib) ==84263== by 0x26BB29: vfprintf_l (in /usr/lib/system/libsystem_c.dylib) ==84263== by 0x26996F: printf (in /usr/lib/system/libsystem_c.dylib) ==84263== by 0x10000551C: Trade::Profit::print() (Trade.h:93) ==84263== by 0x100003A94: main (vector:1417) ==84263== |
やたらとシグナルが出るようになったのは
プログラムのメモリリークが原因のよう
プログラム開発とテスト環境はMAC上で
シミュレーションとブログ書きはWindows7上のCygwinで行っていて
メモリリークはCygwinだけで起こっていた模様
MAC上では、Google Testを用いてgitにcommitするたび
テストはしていたし、
XCodeのInstrumentsではひっからなかった
念の為にValgrindで検査したところ
メモリリークかアクセスバイオレーションが起こりえる箇所を
二箇所発見
一箇所はすぐに解決して、Cygwinのシミュレーション結果も、
ほぼ問題なくなった
もう一箇所は、なかなか再現しなくて
問題をかかえたまま
気をつけていれば、Cygwinでの運用にも問題ないレベルにはなったけれど
気持ち悪いので再検査中
お盆休みの間に直さなきゃ
今日から新しい最適化プログラムを使っています
name | dir | date | last-price | target | losscut | score |
---|---|---|---|---|---|---|
GBPJPY | SELL | 08/13 | 171.000 | 169.800 | 173.200 | 100% |
8月13日、GBPJPYに売りシグナルが点灯しました
この1ヶ月、全体的に目立った動きがないのですが、
その中で利益を出しやすいのはGBPJPYでした
GBPJPYはずっと下落方向なのですが、どこまで下げるのか楽しみです
シグナルが出過ぎるので、最適化の方法を改修中
最適化の範囲を広くしすぎてしまったようです
通貨 | 売買方向 | ターゲット | ロスカット | 直近の的中率 |
---|---|---|---|---|
EURJPY | SELL | 129.200 | 138.800 | 100% |
AUDUSD | SELL | 0.914 | 0.944 | 100% |
EURUSD | SELL | 1.308 | 1.365 | 50% |
EURJPYとEURUSDの下落傾向が続いています。
EURJPYのターゲットが、129.2円と極端な数字が出てきて、驚きました。
普通に計算すると、134円後半~135円前半がターゲットです。
綺麗な下落の形になっていて、長期的なターゲットで132円後半も出ています。
軽めに売りを入れてみて良さそうです。
AUDUSDは、昨日一昨日は、計算の条件で結果が変わるような状況でした。
ただ、今日の計算結果は、かなりハッキリして来ています。
経済指標の予測もよくありませんし、何かのきっかけで急落もありえそうです。
が、高スワップ通貨の売りはしないルールなので、ひかえます。
GBPJPY の売りシグナルはターゲット未達で反転し、シグナルも消えました。
1.5円ほど下落はしているので、ターゲットが大きく出すぎていたようです。
プログラムの修正が必要そうです。
NZDUSDは元々的中率が低く、不発のままです。
通貨 | 売買方向 | ターゲット | ロスカット | 直近の的中率 |
---|---|---|---|---|
EURJPY | SELL | 129.200 | 138.800 | 100% |
GBPJPY | SELL | 169.950 | 173.700 | 100% |
EURUSD | SELL | 1.308 | 1.365 | 50% |
NZDUSD | SELL | 0.834 | 0.869 | 75% |
CADJPY とAUDUSDのシグナルが消えました。
現在、最適化の範囲を調整中なので、その影響です。
全体的には、円高とドル高の状況です。
ウクライナ、イスラエル、イラクと、地政学的リスクが頻発しているので
しばらく、この状況は続きそうです。
安心材料がでれば、円安とドル安に動くと思いますが
まだ時間がかかりそうです
通貨 | 売買方向 | ターゲット | ロスカット | 直近の的中率 |
---|---|---|---|---|
CADJPY | SELL | 91.700 | 94.700 | 100% |
EURJPY | SELL | 129.200 | 138.800 | 100% |
GBPJPY | SELL | 169.950 | 173.700 | 100% |
AUDUSD | SELL | 0.914 | 0.944 | 100% |
EURUSD | SELL | 1.308 | 1.365 | 50% |
NZDUSD | SELL | 0.834 | 0.869 | 75% |
全体的に円高、ドル高の傾向です。
スワップの高い通貨は売りをしないルールでいるので
手を出しにくいのです。
今朝に関しては、先週末の急落で、
すでにターゲットを達成して反発中の通貨も多いので、
全て見送りにしました。
通貨 | 売買方向 | ターゲット | ロスカット | 直近の的中率 |
---|---|---|---|---|
CADJPY | SELL | 86.400 | 94.000 | 100% |
GBPJPY | SELL | 169.950 | 173.700 | 100% |
AUDUSD | SELL | 0.870 | 0.948 | 100% |
EURUSD | SELL | 1.320 | 1.363 | 100% |
NZDUSD | SELL | 0.830 | 0.869 | 100% |
最近、精度が落ちてきたので、若干最適化アルゴリズムを修正しました。
また、最適化の範囲を広げて、より「直近の的中率」が上がるように修正しました。
昨日までは、昨年の為替データから最適化の範囲を決めていたのですが
この半年~2ヶ月の為替データに合わせて、調整した結果です。
代わりに、予測結果の値幅が細かくなりますが、仕方ありません。
しばらく、これで様子を見てみます。
仮に、このアルゴリズムの結果を2ヶ月運用できた場合の
(実際に発注するのは難しいですが)
勝敗の結果です
通貨 | シグナル回数 | 直近の的中率 | 最大利益(100pips) | 直近の勝敗 |
---|---|---|---|---|
USDJPY | 2 | 50% | -0.30 | LW |
AUDJPY | 5 | 100% | +2.35 | WWWWW |
CADJPY | 1 | 100% | +6.40 | W |
EURJPY | 2 | 100% | +0.60 | WW |
GBPJPY | 5 | 100% | +10.35 | WWWWW |
NZDJPY | 2 | 100% | +3.40 | WW |
HKDJPY | 1 | 100% | +1.50 | W |
ZARJPY | 10 | 80% | +0.58 | WWWWWWLLWW |
AUDUSD | 1 | 100% | +5.70 | W |
EURUSD | 2 | 100% | +3.50 | WW |
NZDUSD | 3 | 100% | +4.80 | WWW |
完全に運用できれば、
買いで 5pips、売りで34pipsの利益が出ていました。
しかし、シグナルの数が、二ヶ月の間としてはとても少ないです。
GBPJPY CADJPY AUDUSD NZDUSDあたりのシグナルの利幅が良かったようです。
また、USDJPYとZARJPYのシグナルは、あまりあてにしてはいけなかったことが分かります
通貨 | 売買方向 | ターゲット | ロスカット | 直近の的中率 |
---|---|---|---|---|
AUDJPY | SELL | 95.250 | 95.875 | 82% |
CADJPY | SELL | 92.200 | 94.700 | 100% |
GBPJPY | SELL | 170.900 | 173.800 | 100% |
EURUSD がターゲットに到達して、売りシグナルが消えました
代わりにGBPJPYの売りシグナルが点灯しました
ただ、BGPJPYは昨夜から早朝にかけて急落したあとの反発状況なので、仕掛けにくいです
この頃、商いが薄いせいか
予測の精度が落ちてきました
最適化アルゴリズムを見直す時期かもしれません