--.

スポンサーサイト  

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

↓↓ 新サイトはこちらです ↓↓
グリッドトレード.com
グリッドトレードシステムズ

←注目記事は左のメニューに移しました。良ければあわせてどうぞ。


↓↓ 気が向いたらポチっとお願いします ↓↓
にほんブログ村 為替ブログへ

--/--/-- --:-- [edit]

category: スポンサー広告

tb: --   cm: --

Sun.

インディケータの処理負荷低減  

最近公開したDashBoardをiCustomで実行して・・・
というサンプルを色々作って遊んでいました。

完成したサンプルEAをいざストラテジーテストに掛けたところ
処理時間が長過ぎる。。。
確かにまだ無駄の排除はしていませんでしたが、
それを考慮したとしても余りにも酷かったです。

ストラテジーテスト(バックテスト)を行うとき、
ひとまずコントロールポイントで大体動きを確認してから
全ティックで確認する・・・というプロセスを経ることが多いのですが、
コントロールポイントでのテストが全ティックと間違うほどの遅さでした。
いや、もっと長く掛かっていたかもしれないです。

ということで、たまには開発者らしく(?)
インディケータの処理時間低減方法を取り上げてみたいと思います。

今回はDashBoardの処理負荷低減を例に記載していきます。
(注)公開してあるものは、すでに負荷低減されているものです。

まず、当該インディケータの処理フローは以下の通りです。

処理負荷低減1

本インディケータに限らず、情報を画面に表示するツール系は
概ね似たような処理の流れかと思います。
チャートに展開して画面表示ツールとして使うときは
最初に(1)が実行されティックが発生する度に(2)~(4)が実行されます。
終了するときに(5)が実行されます。

正常に結果を得るだけであればこれで問題ないです。
が、この処理には非常に無駄な部分があります。それはどこでしょう?
1回きりの処理で考えると見えてこないのですが、
(2)~(4)の処理が「ティック発生ごと」に繰り返し行われる・・・
という部分に着目すると分かりやすいです。

答えは(3)の処理です。
(3)の処理は、過去の注文履歴を取得し、決済順にソートし、各項目を算出する処理です。
ティックごとに処理しても過去履歴が変わらなければ毎回同じ結果を返します。
意味ないですよね。

結果が変わる可能性があるのは、過去履歴が変わったら・・・です。
別の言い方をすれば何かの注文が決済されたら・・・です。
仮に3分に1回決済するスキャル系EAを稼働させていたとします。
ティックは1秒に1回しか発生しないという過程を置いたとしても、
3分の間に180回処理が実行されます。

本当に必要な処理は、「初めの1回」と「決済した後の1回」だけなので2/180
割合で言うと1%程度です。実に 99%近くが意味のない反復処理になります。
この無駄な99%が行われないようにします。
具体的には次のようなフローになります。

処理負荷低減2

これだけで重い(3)の処理が毎回実行されず、かなりスマートになりました。
本内容だけでも情報表示ツールとしての処理負荷は多大な軽減を果たすことができます。

さらに突き詰めるのであれば、画面描画も情報変更があった部分だけ再描画する
だとか、関数の実行回数が・・・などなどいくらでもあるのですが、
そこまでストイックにやるとコードの可読性が下がったりするので
このあたりはバランスを見てでしょうか。

長くなるので今回はひとまずここで区切りたいと思います。
インディケータの処理負荷低減ということで記載しましたが、基本的な考えはEAも同じです。
『必要なタイミングで、必要な処理だけを実行させる』これが基本です。


↓↓ 新サイトはこちらです ↓↓
グリッドトレード.com
グリッドトレードシステムズ

←注目記事は左のメニューに移しました。良ければあわせてどうぞ。


↓↓ 気が向いたらポチっとお願いします ↓↓
にほんブログ村 為替ブログへ

2015/06/28 00:49 [edit]

category: インディケーター・運用ツール

tb: 0   cm: 0

コメント

コメントの投稿

Secret

トラックバック

トラックバックURL
→http://multipleincome.blog.fc2.com/tb.php/152-15a25b95
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

アクセスカウンタ

自作EA&ツール

注目記事

カテゴリ

FX口座残高推移

最新記事

最新コメント

カレンダー

RSSリンクの表示

リンク

ブロとも申請フォーム

QRコード

▲Page top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。