2018年10月9日火曜日

WindowsのBATファイルでワイルドカード展開されずに困った件

Windows10からFreeBSDへ、定期的にファイルを移動する必要があった。
開発者モードならsshサーバが動くので、FreeBSD側からBATファイルを叩けばと思ったら、どうも外からはつながらないのであきらめた(ファイアウォールは開いているのだが)。
ふとsshクライアントも提供されているのに気がついて、じゃぁWindows側でBATファイルを起動すれば、これまでよりは楽になる。と思ったら、BATファイルでワイルドカードが展開されなくて困った。
そういえば、MS-DOSの頃から、ワイルドカードは起動されたコマンド側で展開するのだったねぇ。
提供されているsshクライアントは、そういったWindows事情の反映などされていないようで、余計な変更してないのは好意的に受け取るけど、BATからだとすごく使いにくいことがわかった。

2018年8月2日木曜日

MT4のEAのファワードがバックテストより良くなるケース

MT4のEAでポートフォリオを検討している。
一般に実運用(≒フォワード)はバックテストより悪くなるのだが、
逆にバックテストの方が悪くなるケースに出会ったので書いておく。

結論を先に書いておくと、急激なレート変動に対して、
実運用ではスプレッドが開くためEAはエントリーしないが、
バックテストではそれが無いためエントリーしてロスカットになることがあるため、
バックテストの方が悪くなる場合があるということだと考える。
但し、フォワードはデモ口座のものなので、本当にスプレッドが広がっていたかには
疑問の余地が残る。

2016年7月29日、日本時間の朝7時頃と12時過ぎに、USDJPYが大きく動いた
(後者は日銀の追加金融緩和策発表によるもの)。
どちらも5分足1本で2.5-3円幅の値動きで、とあるEAのバックテストで、
この値動きに対して複数回のエントリーがあり、盛大なロスカットになっていた。

同EAは同日のフォワードテストも公開されており、そちらを見ると12時過ぎの
方で1回のみエントリーしてストップロスとなっただけで、バックテストで
240pips損失のところ、フォワードでは80pipsの損失のみとなっていた。

フォワード、つまりデモ口座で1回だけのエントリーとなった原因がスプレッドかどうか、
確認のしようがないのだが、バックテスト結果もたまには精査が必要なのだと
知らされたのであった。

2018/8/11追記:
2016/1/29の日本時間11時過ぎにも、日銀金融政策決定会合がらみで大きな値動きがあって、同EAのバックテストで大きなマイナスを出している。

2018年6月24日日曜日

5周133分。ゆっくり走ったが4周目後半から歩き混じりで遅くなった。

2018年6月17日日曜日

MT4でEAのバックテスト

MT4でEAのバックテスト実施手順概要を書いておく。

[表示]=>[ストラテジーテスター]
ストラテジーテスターの各項目に指定
  エキスパートアドバイザを選択してテスト対象EAを指定
  通過ペア
  期間(時間足)
  モデル(全ティックの場合は1分足が必要になる)
  スプレッド(数字で入力可能)
  期間を指定(必要ならチェックして指定)
  最適化(必要ならチェック)
  ビジュアルモード(チェックボックスが見当たらない、テスト状況がチャートで表示されるらしい)
  エキスパート設定
  通過ペアのプロパティ(設定できない?)
  チャートを開く(バックテスト後に売買ポイントを確認できる)
  エキスパート編集(テスト対象を編集したい場合)
スタートボタンでテスト開始

DLLを使うEAの場合は、MT4側でDLL使用を許可する必要がある。
[ツール]=>[オプション]の[エキスパートアドバイザ]タブでDLLの使用を許可する。
設定変更後にMT4の再起動が必要。

2018年5月27日日曜日

MT4のCPU負荷を下げる設定メモ

検索すると出てくるMT4のCPU負荷を下げる設定をメモしておく。
1. 気配値表示をやめる
    [表示]→[気配値表示]でON/OFF
2. ヒストリおよびチャートの最大バー数を減らす。チャートの方のみ2000くらいあれば良いようだが、念のためヒストリ、チャートとも5000にしておく。
    [ツール]→[オプション]の[チャート]タブの一番下
3. ニュースの受信を止める
    [ツール]→[オプション]の[サーバー]タブで、[ニュースを有効にする]のチェックを外す
4. 音声を無効にする
    [ツール]→[オプション]の[音声設定]タブで、[有効にする]のチェックを外す
5. 削除済みチャートを保存しない(効果あるのか?)
    [ツール]→[オプション]の[チャート]タブの[再表示用に削除済チャートを保存]のチェックを外す

2018年5月19日土曜日

MT4のEAでデモ口座とリアル口座の結果が異なる一例

FX(外国為替証拠金取引)でMT4のEAを動かし始めた。
デモ口座とリアル口座で取引結果が一致しないという話は見かけていたが、手元で実例に出会ったので記録しておく。

ちょっと考えれば当たり前なのだが、指標発表等で相場が急変動する場合に、デモ口座では逆指し値が指定通りに執行されるが、リアル口座ではスリップする場合があるのが、不一致の原因の一つになる。
 2018/5/10 14:03:42、USDJPY買い109.548で、109.541に逆指し値が入っていたが、同日15:30:03に109.424で決済となった。
デモ口座では買い109.543、逆指し値109.540、109.524で決済となっている。デモ口座でも少しのスリップあるが、リアルの11.7pipsと比べれば微々たるもの。
なお、急な動きの原因は、日本時間21:30米国の消費者物価指数および新規失業保険申請件数の発表によるものと思われる。

2018年5月16日水曜日

パス名にEUCコードと、おそらく変な文字が含まれるtarアーカイブが展開できなかった件

昔から現在でも、パス名に日本語が必要な場合はEUCコードを使ってきた。
少し前から、古いバージョンのFreeBSDで作成したtarアーカイブが展開できず困っていのだが、paxで解決したので書いておく。
このtarアーカイブの中にはEUCコードをパス名に含むものがあり、それらを展開する段になるとcan't statなどと警告が出ていた。展開されたものも、ファイル名が化けており困る結果。pkgのgtarでもうまくいかない。
結局、パス名に関して余計なことをしないpaxを使ったら狙いどおりに展開できた。
# gzcat archive.tar.gz | pax -x
最近のFreeBSDのtarは、manによればFreeBSD 5.4で新規に開発されたもののようだが、LANGを見たりして文字コードを意識する風に見える。その辺でうまく行かないところがあったのか?と想像するが、真相はわからない。便利なこともあるのだろうけど、パス名に関しては何もしない方がありがたい気がした。

2018年5月6日日曜日

5周126分。昼のインスタントカフェオレの影響か、序〜中盤は調子よかったが、最後の半周弱で歩きまじりになった。カフェイン控えてはや2ヶ月以上。少量でも影響が大きいか。

2018年4月28日土曜日

YahooBB ADSLモデムの設定画面が出なくて苦労した件

あまりこんなところではまる人はいない気がするけど。
YahooBBのADSLモデムで設定画面が出なくて手間取ったので。
どうもパソコンと直結しないとアクセスできない仕掛けが入っていそうでした。
1Gのスイッチ経由でどうやっても設定画面にアクセスできず、数時間も悩んだ末に
PCとイーサケーブルで直結したら、あっさりとアクセスできたのでした。

2018年4月15日日曜日

Windowsのペイントで画像を狙ったサイズに印刷する

画像を希望のサイズで印刷するのは、OfficeのWordまたはExcelでできるのだけれど、持っていないので探したら、ペイントでも出来ると判明。ページ設定で余白を調整して狙ったサイズに印刷させる。ただ、なぜか計算より大きめに印刷されたので、一度印刷してみて調整が必要なのかもしれない。
今回は横25mm縦30mmで印刷したかったので、用紙をハガキにして余白を左20mm右65mm上90mm下28mmとした。ハガキは横100mm縦148mmなので、上下は計算通り(148-90-28=30)なのだが左右は100-20-65=15で、25mmより10mmも狭く指定したら結果的には希望の25mm幅で印刷される結果となった。謎。
なお、拡大縮小は合わせるにチェックを入れる。調整だと何ページにも渡って分割されて印刷されてしまうので。

2018年2月28日水曜日

FreeBSDでalcドライバのTSOに苦しめられた

FreeBSD 11.1-RELEASEで動かしているPCの母板を入れ替えてから一週間ほど、外部からアクセスでデータ転送途中のタイムアウトになって苦しんでいたが、ようやく、alcドライバのTSO(TCP segmentation offload)機能をOFFにしたら解決した(ifconfig alc0 -tso)。
外部からはWindows10とAndroidからアクセスするのだが、Androidの方は特に問題なく、Windows10の方だけ、しかもalc0が送出側になる場合かつ、大き目データの場合のみ転送がストールするという現象になっていた。
tcpdumpで見ると、いくつかTCPセグメントを送出した後で、Windows10からのAckに対して次のセグメントの送出が遅れだして、ついには1分ほどたってからの送出になるに至って、Windows10側がタイムアウトするというやりとりになっていた。
Web検索してもヒントは見つからず途方にくれていたのだが、ふとalc(4)のmanを見たらTSOをサポートしていると記述があって、OFFにしたらすっきり解決したのであった。よかったよかった。

2018年1月20日土曜日

BrotherのMFC-650CDプリンターをFreeBSDから使う

誰かの役に立つとも思えないのだが、覚え書きの意味でも書いておく。
BrotherのMFC650-CDのプリンターをFreeBSDから使う方法について調べて、どうにか印刷できるようになった。
ghostscriptでもいけたかもしれないが、なぜか常用の環境ではデバイスを使えなかったので、
Linux用のドライバで動かしてみた。Linux用のドライバも、日本語サイトにはダウンロードのリンクが
見当たらず、英語のサイトからの入手となった。

ドライバは、MFC-650の場合はMFC-660用が使えた。最初はMFC-640用のものをつかったのだが、
生成されたイメージを送りつけても無視されて悩んだ。北米向けなのだと思うが、自分のプリンターの型番に
近いものを試して見つけることになる。

ドライバのrpmには、プリンター用イメージ生成プログラム(と、もしかするとshared object)、
それらの設定ファイル、PostScriptやPDF、テキストファイルからppmrawへ変換するスクリプト、
lprのフィルタとして登録するスクリプトなどが入っている。

展開したら、つじつまの合うように配置して、ppmrawへの変換スクリプト
(psconvertij2)のexpおよびsedを、それぞれgexpおよびgsedに書き換えれば良い。
(coreutilsとgsedパッケージが必要)
lprのフィルタ(filtermfc660cn)は書き換えるのが面倒だったので、決め打ちの
スクリプトを書いて使っている。(以下)

#! /bin/sh
BASE=/usr/local/Brother/Printer/mfc660cn
sh $BASE/lpd/psconvertij2 $BASE/inf/paperinfij2 $BASE/inf/brmfc660cnrc | $BASE/lpd/brmfc660cnfilter -pi $BASE/inf/paperinfij2 -rc $BASE/inf/brmfc660cnrc

ドライバのrpmを/で展開すると、/usr/local/Brother/と、/usr/bin/(および/usr/lib/)にファイルが配置
されるので、/usr/local/Brother/はそのまま使い、/usr/bin/と/usr/lib/に出てきたコマンドおよび
ライブラリは/compat/linux/へ移す。(ライブラリは無い場合もあるようだ)

あとは、上記のような直がきスクリプト、もしくは添付されているフィルタースクリプト(filtermfc660cn)を
修正して、/etc/printcapに登録すれば利用できる。用紙サイズなど印刷パラメータは、上記スクリプトの
中の-piオプションで指定しているファイルに記述されている。パラメータ値は、Linux用のコンフィグレーション
プログラム(brprintconf_mfc660cn)を実行すると出力されるヘルプで確認できる。


 以上