みなさま、こんばんは。

いつもアクセス、ありがとうございます。

昨日に引き続きまして、本日は新しく登場したコースより

f:id:ouvea:20110227192850j:plain

f:id:ouvea:20160405214411g:plain

Todays PICKS☆ スリミング・痩身 Slimming

「HIFU(ハイフ)」は、High Intensity Focused Ultrasoundの略で、通称“ハイフ”と呼ばれています。

eturaku.jp

 

 

 

 

゚・*:.。. ☆.。.:*・゚

こちらでも、一流エステ・ビューティ えつらくの発信をキャッチできます。

Twitter 

twitter.com

https://www.facebook.com/eturaku.jp/

前回↓から約1年(!)、とりあえずFIX APIでレート取得が出来ました。

hhr.hatenablog.com

いやー、牛歩もいいところですね。

まぁ、実際のとろこはほとんど放置状態だったんですが。

たまにOANDAのドキュメント読んでFIX APIわかんねーって悶ていただけ…

しかし!

さるGWに一念発起しまして、OANDAのFIX APIを使っての自動売買プログラム作成を再開しました!

GWなら取引時間内での検証も出来ますしね。

これ結構重要で、放置の理由にFIX APIわからんということもあったのですが、むしろFXは平日しかレートが動いていないということの方が放置の原因だったり。

株も同じですが平日しか取引していないのはやっぱりやりづらいですね。

まぁ、株は平日の日中のみに対して、FXは平日であれば24時間取引しているので気合があればなんとかなるんですが…

僕にはその気合は無かった…

(´・ω・`)

それはさておき、GWにわりとガッツリ取り組んでから約二ヶ月、とりあえずレート取得のみですが一週間連続で安定稼動させることが出来ました。

前回同様、なかなか分かりづらい点が有ったので、そのことも含めてやったことを書き残そうかと思います。

先に作った物の概要。

  • Java 8
  • Maven
  • QuickFIX/J
    • FIXプロトコルのJavaフレームワーク(公式ページ的には a full featured messaging engine らしい)
  • CUIアプリケーション(ダウンロード)
# 実行例
$ java -jar 
    -Dpassword=$PASS 
    -Daccount=$ACCOUNT 
    -Dsymbols=USD/JPY,EUR/JPY 
    fix-prototype-1.5-SNAPSHOT.jar
  • 標準出力にレート
USD/JPY Mon May 29 09:22:23 JST 2017 111.239 0.008
USD/JPY Mon May 29 09:22:23 JST 2017 111.24 0.008
EUR/JPY Mon May 29 09:22:23 JST 2017 124.264 0.013
USD/JPY Mon May 29 09:22:23 JST 2017 111.242 0.008
USD/JPY Mon May 29 09:22:23 JST 2017 111.242 0.008
  • 標準エラー出力にアプリケーションログ
6 12, 2017 4:55:02 午前 com.example.FixApplication onMessage
重大: Notes on market data entry: Halted
6 13, 2017 9:32:02 午前 quickfix.Session disconnect
情報: [FIX.4.4:hogehoge->OANDA/RATES:testusr1-Session1] Disconnecting: Encountered END_OF_STREAM
6 13, 2017 9:32:03 午前 quickfix.mina.initiator.IoSessionInitiator$ConnectTask resetIoConnector
情報: [FIX.4.4:hogehoge->OANDA/RATES:testusr1-Session1] - reset IoConnector

以上。

ではでは、以下について記していこうと思います。

  • OANDAサンプル付属のcfg
    • DataDictionary
    • StartTimeとEndTime
    • その他
  • Tips
    • JMX
    • FileLogPath
    • cfgのシステムProperty展開機能

OANDAサンプル付属のcfg

OANDAにFIX APIの設定をしてもらう際、サンプルのJavaアプリケーションを貰えます。

そのサンプルには、FIXにおける設定ファイルに相当するcfgファイルが含まれており、そのcfgファイルに自身のアカウントとパスワードを記述することによってサンプルJavaアプリケーションを動作させることができます。
(詳細は前回記事を参照)

このcfgを自作のFIXアプリケーションでそのまま利用するとハマります…

UseDataDictionary

OANDAのサンプルFIXアプリケーション付属のcfgではUseDataDictionary=Nが指定されています。

にも関わらず、DataDictionary=FIX42.xmlが指定されています。

UseDataDictionary=Nだと意味がないはずなんですが…

それはさておき、QuickFIX/Jのドキュメントを読む感じではこの指定方法だとrepeating groupsが作用せずにうまく値が取得できないはずです。

実際、自分が作成したFIXアプリケーションではこの指定方法でrepeating groupsがうまく作用せずに値が取れない状況になり、随分とハマりました。

具体的にどうなるかというと、例えば↓のFIXメッセージはとある時点でのUSD/JPYのbitとofferですが、

8=FIX.4.4 9=211 35=W 34=4 49=OANDA 50=RATES 52=20170620-09:09:19.900
56=account-id 55=USD/JPY 262=1497949759660 268=2 269=0 270=111.612
271=3000000 272=20170620 273=09:09:17 269=1 270=111.62 271=3000000
272=20170620 273=09:09:17 10=165

(読みやすいように整形)

repeating groupsが効いていない状態では、bitの値しか取れません…

だがしかし、OANDAのサンプルFIXアプリケーションはうまく動作しているようです。

OANDAサンプルもQuickFIX/Jを使っているっぽいのですが…

謎です…

/(^o^)\

それはさておき、UseDataDictionary=Yにしなければならないということはわかったのですが、

DataDictionaryどこでゲットすんの?

ってなります。

これはわりとすぐに解決してQuickFIX/Jのリポジトリを漁ったら発見しました。

後は簡単。

src/main/resources/に発見したDataDictionaryファイル(FIX44.xml)を置いておけばmaven-resources-pluginがbuild時に良しなにやってくれます。

これでrepeating groupsが作用して、先ほどの例でのbitしか取れない問題が解決してbitとofferの値がきちんと取れるようになります。

めでたしめでたし。

と思いきや、続きがあります。

ふと、OANDAのサンプルFIXアプリケーションはどうなっているんだろう、と思い立って漁ってみたらquickfixj-all-1.4.0-oanda.jarなる意味深なjarを読み込んで実行していることを発見。

jarの中身を見てみると、ありましたFIX44.xml

QuickFIX/Jリポジトリにあるものと比べてみると結構diffがあり、ざっと見た感じquickfixj-all-1.4.0-oanda.jarにあったDataDictionaryのほうが良さそうだったのでこっちを使うことにしました。

我ながらよく気がついたなぁと思います(ドヤァァ

めでたしめでたし。

余談ですが、OANDAのサンプルFIXアプリケーションはやっぱりツッコミどころ満載だと思います。

実行可能jarが配置されているにもかかわらず、その中身らしきclassファイルが別途、置かれています。

何のために?

Javaのソースコードをそのまま置いてほしかったっす…

StartTimeとEndTime

自作のFIXアプリケーションを何日か連続稼働していると、必ず1日1回、決まった時間にセッションを貼り直している(再起動している)ログに気が付きました。

なんでだろなーっと思ってドキュメントを調べているとOANDAサンプルのcfgの指定方法だとdailyなアプリケーションの設定になっていることがわかりました。

その設定値が表題のStartTimeとEndTimeです。

この2つの設定のみだとアプリケーションはdailyでセッションを貼り直します。

歴史的経緯でしょうか。

少なくとも現在のOANDAは月曜朝のオープンから土曜朝のクローズまでダウンタイム無しで稼働しているようなのでweeklyの設定に変更しました。

これは簡単でStartDayとEndDayを追加して何曜日の何時オープンで何曜日の何時にクローズかを指定するだけです。

具体的には↓な感じ。

StartDay=sun
StartTime=19:55:00
EndDay=fri
EndTime=21:05:00

念のため、ゆとりを持たせて5分ずつ前後に挟んでいます。

が、運用実績的に1分もいらないかなぁという感想です。

めでたしめでたし。

その他

FIXプロトコルにもVersionがいくつかあるようで、OANDAのサンプルFIXアプリケーションでは4.2が指定されていたのですが、ドキュメントを読む限り4.4の方が勝手が良さそうなので4.4に変更しました。

ちなみに、前述の通り、OANDAのサンプルFIXアプリケーションには4.4のDataDictionaryが含まれています。

なして4.2指定なの…

Tips

いやー、いろいろとハマったのは辛かったんですが、そのかいあってか調べている過程でいろいろな機能を発見できました。

その中から使えるなーと思った機能は自作のFIXアプリケーションに取り込んでいます。

せっかくなので、それらを紹介しようと思います。

JMX

Javaあるあるのアレです。JConsoleとかでつなぐ奴。

これを有効化するといろいろと便利になる奴です。(問われる語彙力w

QuickFIX/JがJmxExporterクラスを用意してくれているので有効化はとっても簡単。

new JmxExporter().register(initiator);

これだけ。

そーすると何が嬉しいかというと、いろいろとあるんですが、おおきく以下の2つがあります。

  • (ヒープの利用状況などの)メトリクスの可視化
  • ログレベルの動的変更

それぞれについて記載します。

メトリクスの可視化

24時間365日とまでいかなくても、5日間連続稼動させると気になることがあります。

メモリリークとかGCとかGCとか。

JMX + JConsoleを使うと簡単にメトリクスを見れるので便利です。

5日間連続稼動を何回か繰り返し運用してみた感じだと大体↓な傾向が見れました。

  • Max80MBのヒープで動作
  • GCで0.5秒くらいSTW
    • 週1回発生
    • CPUがAtomなので…

ヒープ使用率やGCの時間などを監視&通知までできるとベストですが、ただでさえ牛歩なのでいったんはこれで満足としましょう(諦め大事

ただ、0.5秒のGCはなんとかしたいなぁ…

G1GCとか検証したいとは思います。

ログレベルの動的変更

アプリケーション起動時のログレベルはinfoです。

つーかロギングの設定を何もしていないのでデフォルトの動作なんですがw

まぁ、それはゆくゆくやるとして、 JConsoleを使うとアプリケーション起動後、つまり動作中に動的にログレベルを変更できます。

やり方は簡単で、JConsleのMBeansタブ→左のBeans一覧からjava.util.logging→Logging→Operations→setLoggerLevel(p1,p2)のp1にクラス名(例:com.example.FixApplication)、p2にログレベルを入れて実行するだけ。

ちなみにですが、QuickFIX/J関連も同様の手順でいろいろできます。

リセットとかHeartBeat送信とか。

FileLogPath

cfgの設定にFileLogPathという項目があります。

こいつにパスを指定するだけでイベントと送受信FIXメッセージを指定したパスにロギングしてくれます。

例えば、↓をcfgに記述すると、

[LOGGING]
FileLogPath=log/

↓なログファイルが生成されます。

$ tail -n5 log/FIX.4.4-hoge0011-OANDA_RATES-testusr2-Session1.event.log
20170625-09:20:25: Session FIX.4.4:hoge0011->OANDA/RATES:testusr2-Session1 schedule is daily, 00:00:00-UTC - 00:00:00-UTC
20170625-09:20:25: Created session: FIX.4.4:hoge0011->OANDA/RATES:testusr2-Session1
20170625-09:20:27: Initiated logon request
20170625-09:20:28: Logon contains ResetSeqNumFlag=Y, resetting sequence numbers to 1
20170625-09:20:28: Received logon
$ tail -n5 log/FIX.4.4-hoge0011-OANDA_RATES-testusr2-Session1.messages.log | tr "^A" " "
8=FIX.4.4 9=421 35=B 34=2 49=OANDA 50=RATES 52=20170625-09:20:28.497 56=hoge0011 33=4 58=version: 2.4.21 (fxTrade rates server 03 [3,130] 1498382428 163.49.210.211) 58=notice: Market Data Request now supports new MarketDepth and MDUpdateType settings 58=notice: halted pairs are now marked QuoteCondition=B Text=Halted 58=notice: please include the complete server version string in all support requests 148=OANDA FIX Server Information 10=213
8=FIX.4.4 9=158 35=V 34=2 49=hoge0011 52=20170625-09:20:28.553 56=OANDA 57=RATES 262=1498382428547 263=1 264=1 265=1 146=3 55=USD/JPY 55=EUR/JPY 55=EUR/USD 267=2 269=0 269=1 10=206
8=FIX.4.4 9=243 35=W 34=3 49=OANDA 50=RATES 52=20170625-09:20:28.801 56=hoge0011 55=USD/JPY 262=1498382428547 268=2 269=0 270=111.258 271=3000000 272=20170623 273=20:59:59 276=B 58=Halted 269=1 270=111.34 271=3000000 272=20170623 273=20:59:59 276=B 58=Halted 10=231
8=FIX.4.4 9=244 35=W 34=4 49=OANDA 50=RATES 52=20170625-09:20:28.801 56=hoge0011 55=EUR/USD 262=1498382428547 268=2 269=0 270=1.11922 271=3000000 272=20170623 273=20:59:59 276=B 58=Halted 269=1 270=1.11953 271=3000000 272=20170623 273=20:59:59 276=B 58=Halted 10=026
8=FIX.4.4 9=244 35=W 34=5 49=OANDA 50=RATES 52=20170625-09:20:28.801 56=hoge0011 55=EUR/JPY 262=1498382428547 268=2 269=0 270=124.515 271=3000000 272=20170623 273=20:59:59 276=B 58=Halted 269=1 270=124.606 271=3000000 272=20170623 273=20:59:59 276=B 58=Halted 10=035

とくにmessages.logはAcceptanceテスト用の入力データ(↓な感じらしい)に使えそうです。

I8=FIX.4.2␁35=A␁34=1␁49=TW␁52=<time>␁56=ISLD␁98=0␁108=30␁
E8=FIX.4.2␁9=57␁35=A␁34=1␁49=ISLD␁52=00000000-00:00:00␁56=TW␁98=0␁108=30␁10=0␁

ただし、全てのFIXメッセージをロギングするのでディスクを大量消費する点と、ログインパスワードもロギングされちゃうので扱いに注意です><

cfgのシステムProperty展開機能

cfgに↓のように記述するとJavaのシステムPropertyを展開することができます。

SenderCompID=${account}
# アカウントIDをhoge0011にして実行
$ java -jar -Daccount=hoge0011 fix-prototype-1.5-SNAPSHOT.jar

これ、とっても便利です。

なのにドキュメントに書いていないですorz

QuickFIX/Jのコード読んでいて違和感を感じて、デバッガでステップ実行してやっと気が付きました。

ドキュメントェ

これまた、我ながらよく気がついたなぁと思います(ドヤァァ

まとめ

ふぅ。疲れた。

FIXつらたん。

編集後記

上記以外にもMarketDataRequestでの値の取得方法がいまいちわからずGithubを検索したりと牛歩要因がほんとに多いなと思いました。

果たして完成する日は来るのか…

自動売買の道のりは長いンゴねぇ…

今後、特にやりたいことリストです。

  • Acceptance(受け入れ)テストの導入
    • 単体テストもまだですが…
    • これができると取引時間外の土日での開発が捗る(はず)
  • order(売買)実装
    • 何をトリガーとして売買するかが悩みどころ
    • とりあえず、単純に移動平均線に触れたことをトリガーにする

ちなみにですが、OANDAのルールがわりと大きく変更されています。

FIX使うにはプロコース必須になって、スプレッドが0.8銭になったり。

ぐぬぬ

OANDA Japan

無価値

2018/12/20

将来の夢はなかったので、

学生のときやりたいなと思ったことはほとんどできたし今もできているけど

 

それを継続していくのは難しいと感じている

 

自分にもっとセンスと才能と努力する習慣があれば

本の装丁をやったり

化粧品のパッケージデザインをしたかったなあ

 

挫折するほど強いなにかを持っていなかったし

学校の受験も失敗していないし

死ぬ程入りたいと思った会社もないし

そう思えるなにかを持てなかったことが人生の失敗だと思う


Netflix火花お題「夢と挫折」

Sponsored by Netflix

 

 

クラウンを買う人でピンクがいい!

って言う人がいるのかは・・不明(笑)

 

ただ、これだけ話題になっただけでも意味がありそうですけど。

 

f:id:AR30:20130901184020j:plain

 

かなり奇抜ですよね(笑)

 

価格は

四輪駆動で排気量2500ccのガソリンエンジン車は570万円

後輪駆動のハイブリッド車が600万円

 

だそうです。

 

2013年9月1日〜30日まで受け付けて、12月〜生産するとか。

 

 



トヨタ、ピンククラウンの価格を発表 - 芸能社会 - SANSPO.COM(サンスポ)

これまで画面の回転はホームボタンをダブルクリックして・・

Bluetoothの切り替えは設定アプリから・・と面倒でしたが

 

これからはコントロールセンターで簡単に切り替えられるようになりました。

 

これはiOS7の機能ですので

もしまだアップデートしてない人はまずそれをやってから。

 

 

スポンサーリンク

コントロールセンターには便利な機能がそろっています。

 

ホーム画面を下から上へスワイプすると

コントロールセンターが開きます。

 

f:id:AR30:20130928133954j:plain

 

上に並んでるボタン

左から

 

機内モード・WiFi・Bluetooth・おやすみモード・画面の回転

 

です。

 

これらがここで切り替え可能です。

 

コントロールセンターを閉じたいときは

上から下へスワイプしましょう。

 

スワイプとは、画面をなぞることですよ。

Ingressの時代から自身は「このゲーム、大通公園でXMP撃つだけのゲームになってるじゃん」と指摘してきたのだが、なんとポケモンGOも大通公園にべったり常駐する方が有利という様相である。

ポケストップ多い方がアイテムもポケモンもレベルも全部まかなえるという「田舎死ね」仕様はさすがにどん引きである。というかIngress時代よりさらに悪くなってないか

各方面で識者らしき人が「ポケモンGOとコラボすることで地域活性化できる」とか言っていたが自身は全然そう思わない。
それはIngress時代のNIAの仕事を見れば明らかだ。
イベがあるときはエサ目的に人がちょろっと集まるが終了すればあっという間にスッカランである。それではハナシにならないのである。

で、とりあえず自身であるが本来なら地下鉄の駅をのりつぶす予定だったのだが、レベル10までは大通公園に常駐することにした。地方を回るのはジムで勝てる算段ができてからである。

何でこんな仕様なのか本当に首をかしげてしまうのだが、まあ脚は疲れないかとなんとかメリットを見いだす自身なのであった。

20150724144619

2016年も今日でおしまいです。

今年は、いろいろと大きな出来事がありました。このブログの「掃除を習慣化する記録」を書籍に掲載していただいたり、戸建て住宅を購入して引っ越しをしたり、仕事をいつもより頑張ってみたり・・・。濃厚な1年でした。

 

掃除が苦手だった私の「掃除を習慣化する記録」を暮らしを、みがく (私のカントリー別冊 暮らしのおへそ実用シリーズ)で掲載していただける機会をいただき、とてもうれしい体験となりました。

【書籍掲載のお知らせ】主婦と生活社さんの「暮らしを、みがく」に掲載されました。 - ひつじ日和

 

また、賃貸マンションから戸建て住宅に引っ越しをし、環境が変わったことで断捨離のモチベーションに火が付き、一旦自分の中で終了していた断捨離を再開しているところです。

断捨離再開!新居の収納場所が少ないので、ものを減らしたい意欲に火がついています。 - ひつじ日和

 

環境が変わると、自分も変化していかなくてはならないですね。引っ越した戸建て住宅はコンパクトな作りなので、あまり収納スペースもありません。もっとモノを減らして、すっきりと暮らすことが来年の目標でもあります。

 

引っ越しが落ち着いてから、あまり更新できていなかったこのブログの更新も頑張りたいなと思って日々更新しています。来年も、誰かのお役に立てるようなブログにしていきたいと思っているので、これからも「ひつじ日和」をどうぞよろしくお願いいたします^^

 

スポンサーリンク

 

■こちらの記事もどうぞ

・大学時代の夢が、ほぼ全部叶っていることに気付きました。 - ひつじ日和

・モノが多いとストレスがたまる。だからモノを減らしたい。ただそれだけ。 - ひつじ日和

・体調が悪くなるとお金も時間ももったいない!お金は病気を予防するために使うべし。 - ひつじ日和

 

 ■お問い合わせはこちらから

お問い合わせ

 

スポンサーリンク

 

www.reddit.com

f:id:yunawakuwaku:20170304224343j:plain

こんばんは


レモン狩りをしました。自宅でね。

あ、庭にレモンの木があるんですよ。

(以前書きました。が、記事の貼り付けが出来ない…)

この冬は実の数が少なく、しかも小さいので収穫せずそのままにしていたら、いつの間にかそれなりの大きさになっていました〜〜よかった。

高枝切りばさみを使って作業したのですが、ずっと上を向いているので気分が悪くなるんです。休み休み作業しつつ全て収穫。消毒などの薬品は一切使用しないので、ススがついてたり形が悪かったりしますが、味は何の問題もありません。レモンそのものです。爽やかレモンをどうぞ。

f:id:yunawakuwaku:20170304192830j:plain

レモン狩りが終わって、少し本の整理をしようと思い本棚の奥の文庫本を懐かしく眺めていたら。

あら、三笠書房の本がたくさん。
ありましたよー竹内均サン翻訳の文庫本が。
懐かしい…。

古い本です。

『知的人生案内』著作 W・A・オールコット

初版は1984年。ワタシが買ったのは2000年ぐらいかなぁ?

こんな本ばかり読んでた学生時代ですが、
今振り返ると、ホントにあの頃理解してた?と疑問符が浮かびます。たぶん、色々頑張ってたと思うけど真剣だったかどうかは微妙だな(笑)

それでね、見つけたついでに久しぶりに読んでみたんですよ。

まぁー頭に入ること!ぶはははーーー。

「古代ローマの著述家プリニウス親子は、どちらもその知識の広さによって大変尊敬されていた。父親の方は旅先に書物と携帯用書き物机を必ず持って行ったというし、息子は乗り物に乗っているときも歩いているときも座っているときも、常に読書していたという。」

「しかし、だからといってそれだけのために尊敬してよいものだろうか。二人とも書物や哲学については知識があった。しかし、書物や書き物机は家に置き、外に出たときには周囲の物に対して目を開いていた方が、はるかに多くの実際的な知恵を身につけられたにちがいない。」

翻訳者の竹内サンもあとがきで、

「たとえば、ある国について知りたいときには、その国の有名なホテルのロビーに座って、そこへ出入りする人の服装や会話や態度に目や耳を傾けるのがよい。その国について書いたどの書物からも得られない真実が、そこから得られるはずである。」

と、書いています。

「理論よりもまず現実を観察せよ」

まさに、

事件は会議室で起きてるんじゃない!
現場で起きてるんだ!

ですよね?(笑)

***

ああ〜楽しかったー。

自分が怖いもの知らずな時代に読んだ本を、今、また読み返すなんて思ってもみなかったけれど、いいものですね。246ページありますが一気に読んでしまいました。満足満足。


◆今日のよかった

今夜はタコパー。またかい!
いやいや、書いたの一回だけど?

最後タコが足りなくなったのでチーズをプラスして野菜とチーズ焼きになったけれど、タコさんなくてもおっ慧な美味しさ!次回はもっと野菜多目で作ってみよう。ご馳走さまー。

◆今日のカレンダー

『一日延ばしは時の盗人である』

上田敏 1874〜1916 明治時代の翻訳家

ええええーーーこの人翻訳家なの〜?

偉人が言いたい事は大抵重なってます。同じ事言ってる人一杯います。

人は必ず死ぬのだから、「今」やらないと後悔するかもしれないですね。


明日も元気で


では、また明日

おやすみなさい