OmegaChartスレ ver.11

■ このスレッドは過去ログ倉庫に格納されています
2018/10/12(金) 16:06:42.77ID:xz6O6ruA0
会則
@OmegaChartはサポートを終了しています。
 ご自身でコンパイルできない方は、他のソフトを利用して下さい。
A連投で初歩的な質問をする人やクレクレ君は、立ち入り禁止。

●公式サイト
OmegaChart公式HP(閉鎖)
ttp://www.omegachart.org/
OmegaChart公式HPのアーカイブ(消滅)
ttp://web.archive.org/web/20131010105520/http://www.omegachart.org/
メーリングリスト(2014年5月28日で終了)
ttp://groups.yahoo.co.jp/group/omegachart/
作者Blog(サポート終了)
ttp://okajima.air-nifty.com/

●有志による維持活動
panacoran氏のサイト
ttp://sourceforge.jp/users/panacoran/pf/OmegaChart/wiki/FrontPage

●前スレ
OmegaChartスレ ver.10
https://egg.5ch.net/test/read.cgi/software/1488866170/
2019/01/19(土) 15:39:16.09ID:53uZSBuV0
>>181
それは仕様なんですよね。
株価5000円以上は小数点付き株価になる可能性がない→整数表示
株価5000円未満は小数点付き株価になる可能性がある→小数点付き表示
なので、4004昭和電工の20181109などではご指摘の通りになります。

小数点以下が、「.0」なら整数表示にすればいいじゃないっていう意見もあるかと思いますが、これをやると5000円未満の銘柄株価表示で小数整数混在表示になります。
4本値全部が「.0」なら整数表示でいいじゃないっていう意見もあるかと思いますが、これが出来れば今よりマシな感じになるかもしれませんね。
2019/01/19(土) 16:03:31.01ID:53uZSBuV0
>>182
変更はChartDrawing.csのみ。

ChartDrawing.cs のRetFormatStringを以下のように変更

private string RetFormatString(AbstractBrand br, Indicator ind, double val, TradeData td)//TradeDataを足す
{
switch ((PrimitiveIndicator)ind.LaneID)
{
case PrimitiveIndicator.Open:
case PrimitiveIndicator.High:
case PrimitiveIndicator.Low:
case PrimitiveIndicator.Close:
if(td!=null)//変更
if (!br.IsBuiltIn)//変更
if (td.Open % 1 == 0 && td.High % 1 == 0 && td.Low % 1 == 0 && td.Close % 1 == 0)//変更
return "F0";//変更
break;
}
return ind.GetFormatString(br);
}

同じくChartDrawing.csのDrawValueWindowから、RetFormatStringを呼び出すところを変更

ChartUtil.DrawText(hdc, vx, y, Util.FormatFixedLenValue(val, 9, RetFormatString(_brand, ind, val, td), ind.FormatModifier));//tdを足す
184名無しさん@お腹いっぱい。
垢版 |
2019/01/19(土) 18:18:38.72ID:fcGV5HZY0
>>182, 183
なるほど そうでしたか 聞いてみるものですね 早速にありがとうございました
185名無しさん@お腹いっぱい。
垢版 |
2019/01/19(土) 19:42:40.63ID:fcGV5HZY0
>>183
動作確認しました これだとストレス無くチャート表示できます ありがとうございました
2019/01/19(土) 23:13:53.58ID:1tpZMypG0
ツール > カスタマイズ > スクリーニング のタブで、自作のスクリーニングキットのパラメータを0から17まで入力窓を設定したところ、
本来は次のページに17窓を表示する所を、同一ページの16窓に続けて17窓を上部僅かに表示され設定の変更が出来ません。

自己環境だけなのかを確かめる為、新規にソースコードを二つ前の「9cd2e32」をビルドし、
新規の環境を用意して確かめましたが症状は変わりませんでした。
尚、VisualStudio2017環境に移行していないので最新の「4fee7d9」では確かめていません。

「CustomizeDialog.cs」の「private const int MAX_ITEMS = 16;」辺りまで探しましたが私には原因は判りませんでした。
どうか御助力お願いします。
187名無しさん@お腹いっぱい。
垢版 |
2019/01/20(日) 10:18:08.38ID:pLVU8KB60
ウィンドウのサイズは適当な大きさに変更してあるの
2019/01/20(日) 16:24:01.20ID:eWkJPNl20
>>186
default.omegaファイルなどで、インディケーターを定義しますが、今回はその話だと思います。

<indicator
target="praice"
count="17"
(後略)

このcountで指定した数が16よりもオーバーしたのでこのような状況になりました。
CustomizeDialog.cs の一番上あたり

private const int MAX_ITEMS = 16;//これを17へ変更

ついでにOmegaChartのカスタマイズ画面でナンバリングされた数字が2桁になると縦表示になってしまうのを訂正するには、
同じく、CustomaizeDialog.cs のInitIndicatorPage

この行を
AddLabel(page, (i+1).ToString(), tabIndex++, 152, top, 16)
このように変更
AddLabel(page, string.Format("{0,2}", i+1), tabIndex++, 152, top, 17);//17はMAX_ITEMSとは関係ない。ナンバリング数字の文字幅のこと

ちなみに、その幅17は適当に増やしたらうまく行ったというだけです。
2019/01/20(日) 17:36:26.28ID:GSx8OuWE0
助言ありがとうございます。取り急ぎ書き込みます。

>>187
何かしらの不具合が出るのが怖いのでデザイン関係には手をつけていません。

>>188
今、確認できないのですが「スクリーニング」関係なので「InitIndicatorPage」の項を変更して良いか判りませんが適用次第報告します。
2019/01/20(日) 20:24:38.70ID:eWkJPNl20
>>186
ちゃんとスクリーニングって書いてありますね。失礼しました。となると>>188はまったく関係なしです。
191名無しさん@お腹いっぱい。
垢版 |
2019/01/21(月) 07:31:27.74ID:p/zyFkh90
スクリーニングのタブが二つになるところが一つになってしかも入力に支障が出てるてことか それならおかしいね
192名無しさん@お腹いっぱい。
垢版 |
2019/01/21(月) 08:38:02.12ID:p/zyFkh90
現状では一つの拡張キットではパラメータが16個以上の表示はできずタブは増えない模様 但し入力はTABキーを使って何とか出来る18個目は表示されないので無理
正常に次のタブにパラメータを表示させたいなら拡張キットのパラメータを16以下にしてを分割すれば良い事は確認済み コードを修正する必要は無いと思いますがね
193172
垢版 |
2019/01/21(月) 18:47:53.50ID:NqkTsXDr0
>>176
自分の環境で発生したOptionファイルの不具合について原因を特定したわけでもなくいい加減な思いつきの印象の話でした。
失礼しました。

>>178 さんの指摘の、fibonacciライン機能の実装の有無に係わらず、相互のOptionファイルをメニューからリセットして全ての描画を非表示にして保存してみたところ。
自分の環境でも互いにOptionファイルは利用できました。

頂いたアドバイスの指摘のように、もしかしたら何か拡張キット関連の不具合だったかも知れません。
詳細は分かりませんでしたが、ひとまず自分の不都合は解消しました。
ありがとうございます。


>>178 さんの、掲載頂いたサンプルコードにつきまして。

Env.cs のInitEnv() 、、の指示にある修正箇所を探しましたが、

> }else{
> System.IO.File.Copy(option_file, option_backup, true);
> }

自分のコードにはこの該当箇所が見当たらず、これに似たような箇所としては、

}
else {
StreamReader reader = null;
try {

このような箇所があり、、この自分のコードと同様の参照ファイルとしては、
>>129 panacoran さん版のEnv.csのコードにも該当箇所は見当たらず。

掲載頂いたサンプルコードを試す方法が分かりません。
お手数ですが自分のコードにもサンプルコードを利用可能でしょうか。
2019/01/21(月) 20:43:17.49ID:URji+dGG0
186 & 189です。
返信が遅くなって済みません。
17個以上のパラメータ設定するには別キットを用意するしかないですか…。
私としては、ある程度の数に絞った銘柄を用意し、一回の手間で抽出したかったです。
助言ありがとうございました。
2019/01/21(月) 21:34:26.79ID:pZayCruh0
>>194
ちょっとよくわからないので教えてほしいのですが、スクリーニングにおいて「17個以上のパラメータ設定」というのは、
extensionフォルダ内の.omegaファイル内の記述で設定できます、
<param index="0" type="positiveInteger">
<param index="1" type="positiveInteger">
(中略)
<param index="16" type="positiveInteger">
このparamを17個作るという意味でしょうか?お困りの状況が想像できなくてですね。
お時間がありましたら、画像などでお困りの状況を示していただけたらありがたいです。
お忙しいようでしたら、スルーしていただいても構いません。
2019/01/21(月) 22:40:44.07ID:URji+dGG0
>>195さんへ 画像URLです。

ttps://folio.ink/xLx361
17個目の数値が上部僅かに表示されるのが判ると思います。
今回の目的は、17番目も他の1-16番目と同じように気軽に変更したいだけです。
2019/01/22(火) 07:49:45.82ID:mAC+M+6A0
>>196
そういう画面が出るんですね。初めて見ました。インディケーターが修正効くなら、このケースも修正できそうですね。
2019/01/22(火) 12:26:41.16ID:mAC+M+6A0
>>196
見てみました。

>>188の修正でOKです。
private const int MAX_ITEMS = 16;//これを17へ変更
2019/01/22(火) 22:19:11.12ID:Hl0NmGJF0
>>198さんへ 実行してみました。
「MAX_ITEMS」は縦の行数を表す値なんですね。気付きませんでした。
行数を超えた場合、次のタブに表示すると思い込んでいました。
取り敢えず解決する事が出来ました。御助力ありがとうございました。
200名無しさん@お腹いっぱい。
垢版 |
2019/01/25(金) 14:35:24.19ID:Zz3W4anP0
久しぶりにこちらを覗いたところ活況で驚きました。

さて、Options.confの書込み失敗の話題が出ていますね。
>>174
詳細は忘れましたが、以前自動バックアップとエラー時リストアを試みましたがうまく行きませんでした。
今回、改めてコードとエラーログを見直して一つの案を思いつきました。

error.logをみると、Env.csのメソッド「SaveEnv()」内でSaveTo(root)のエラーが記録されていました。
そこで、.SaveTo(root)が正常終了してからStreamWriterを初期化すればoptions.confファイルの消失を回避できるのではと思いました。

具体的には、以下の方法です。
//―――――――――――――――――
「Env.cs」「SaveEnv()」の
writer = new StreamWriter(option_file, false, Encoding.Default);
の位置を
new TextNodeWriter(writer).Write(root);
の直前に変更。
//―――――――――――――――――

終了時にエラーメッセージが出たとしても、ファイル初期化の前のエラーであればoptions.confは直前の状態のままで、0バイトファイルを作らないと思います。
残念ながら、初期化後のエラーでは0バイトファイルになるはずです。
2019/01/25(金) 15:06:57.65ID:RoQIZnBL0
>>200
これ、一番スマートな解決方法かもしれませんね。
202172
垢版 |
2019/01/26(土) 14:54:09.20ID:Jey5KV580
>>200 ご提案を試してみました。
>>172 のエラー状況を再現してみたところ、Optionファイルの消失を回避できました。
エラーメッセージを掲載してなかったですが、
「オブジェクト参照がオブジェクト インスタンスに設定されていません。」
自分は利用していてたまに見かけるこのメッセージが出るエラーです。
これが出る場合というのは、だいたい拡張キットに関するエラーでしょうか。

ともかく一つ煩わしさを軽減できて助かります。
ありがとうございます。
203名無しさん@お腹いっぱい。
垢版 |
2019/01/27(日) 08:16:05.56ID:0wmLgE6y0
オブジェクト参照が...のメッセージはインデックスファイル更新時に良く出ます
204名無しさん@お腹いっぱい。
垢版 |
2019/01/27(日) 09:48:52.48ID:2MFrcc2W0
>>202
オブジェクト参照のエラーは、何らかのオブジェクト変数がnull参照の時に出現します。
拡張キットだけが原因とは限らず、プログラマーの想定外でオブジェクトが未初期化あるいは破棄された状態でおこると思われます。
原因を特定するためには、エラーログの解析とエラーの再現が必要です(解決が難しいことも多いです)。


老婆心ながらエラーログの見方を説明して起きます。

//<<― error.log 注意:コードを大幅に変更しているので行番号はオリジナルと異なります
2015/06/01 9:18:48 : オブジェクト参照がオブジェクト インスタンスに設定されていません。
場所 Zanetti.Config.KeyConfig.SaveTo(StorageNode parent) 場所 c:....\KeyConfig.cs:行 121
場所 Zanetti.Config.Options.SaveTo(StorageNode parent) 場所 c:....\Options.cs:行 191
場所 Zanetti.Env.SaveEnv() 場所 c:....\Env.cs:行 326
2015/06/01 9:19:57 : オブジェクト参照がオブジェクト インスタンスに設定されていません。
場所 Zanetti.Config.BookmarkFolder.Save() 場所 c:....\Bookmark.cs:行 201
場所 Zanetti.Config.BookmarkFolder.Save() 場所 c:....\Bookmark.cs:行 197
場所 Zanetti.Config.Bookmark.SaveTo(StorageNode parent) 場所 c:....\Bookmark.cs:行 284
場所 Zanetti.Env.SaveEnv() 場所 c:....\Env.cs:行 327
//―>>
日時とエラーの次の行が直接エラーを起こした原因のコードで、次の行からはそのコードの呼び出し履歴です(行番号が表示されない場合もあるようです)。
VisualStudioの「呼び出し履歴」ウィンドウと同じと思います。

したがって、VisualStudioのデバッグ環境で最初の行のコードと場所付近でブレークポイントを作ってエラーが再現できれば、ローカルないしウォッチウィンドウで変数をチェックして原因を特定できる可能性があります。
2019/01/27(日) 15:50:02.77ID:7SGAV8if0
1銘柄だけ株価更新するサンプルコード。更新したい銘柄を選択してから、右クリックして「この銘柄の株価更新」を押下。

OmegaChart 1銘柄だけ更新 Command.cs 追加する部分には//☆UpdateOneBrand
https://osdn.net/users/omegachartuser/pastebin/6034
OmegaChart 1銘柄だけ更新 MainFrame.cs 追加する部分には//☆UpdateOneBrand
https://osdn.net/users/omegachartuser/pastebin/6035
OmegaChart 1銘柄だけ更新 UpdateOneBrand.cs 新規追加ファイル
https://osdn.net/users/omegachartuser/pastebin/6036

データ補完の仕様は以下の通り
・ヤフー時系列の20日分の株価のみが補完される候補
→つまり、20日分以上更新してない環境でこれを処理した場合はデータの歯抜けとなる
・既に存在する日付のデータは上書きしない
・日経平均、TOPIX、個別銘柄のみが対象
→それ以外の銘柄は処理しても何も起こらないが、ネットには情報取得に行ってしまう仕様
206名無しさん@お腹いっぱい。
垢版 |
2019/01/28(月) 06:22:03.52ID:fCkufFrs0
追加して下さった多くの便利な機能を利用させて頂いてます。
お手数ですが、いくつか質問があります。

フィボナッチ・リトレースメント描画機能について。
新規追加版の「//☆Fibonacci 20180816」こちらです。
「Fibonacci.cs」の、

//var fibo = new double[] { -2.618, -1.618, 0, .236, .382, .5, .618, .764, 1, 1.618, 2.618 };

この行です。拡張レベルなどにも対応して下さり、ありがとうございます。
その「マイナス」方向レベルの、-2.618, -1.618,、二つ。
チャート表示の表記として正しいですが、計算値としては大きな値となり。
修正しますと、-1.618, -.618,、ですが、チャート表示の表記としてズレるのが惜しいです。
本当に扱いやすく、よくできてて凄いです。
panacoranさんソースに、是非ともデフォで実装希望です。また、それは別で要望書きますが。

それと、また厚かましいですがご提案というか願望です。
これが難しい修正かどうか全く想像もつかずに好き勝手書きますが。
新規追加機能によってFibonacciラインを自由に引き直した場合、その自由なFibonacciラインの色が変化する仕様とし、色分けで視認性を向上可能でしょうか。
例えば、自動モードが赤色なら、自由モードは黄色に変化するなど。よろしくお願いします。

続きまして、、「KABU+から株価取得。ローカルファイル利用版。」
こちらを拝見して思うのは、OmegaChartが出力できるCSV形式の株価データです。これをOmegaChartへ取り込める機能へと応用が可能でしょうか。
出力したCSV形式ファイルを修正編集して、そのまま直に再度OmegaChartへ取り込めれば大変有り難いです。これは日付差分補充ではなく完全に上書き可能な機能を希望します。
株価10倍仕様、ノーマル仕様の両対応もお願いします。

今回は以上です、厚かましいお願いですが、よろしくお願いします。

>>204 参考になります。ありがとうございます。
207名無しさん@お腹いっぱい。
垢版 |
2019/01/28(月) 13:14:37.15ID:iyyuT7uz0
ちょっと迷惑じゃないかな
2019/01/28(月) 15:34:45.00ID:sP+lFw9t0
>>206
>>1の会則A
2019/01/28(月) 15:46:25.78ID:AfHTOl0r0
エラーが出るといろいろ大変なので、コード統合するとしても正直、最小限にしてほしい(フィボナッチなど使う予定もなさそうなので)
2019/01/28(月) 16:26:19.04ID:wmlteAk40
>>206
-2.618, -1.618の件。押し戻り測定はこの仕様で良かったと思いますが、ご指摘のケースは起点からどのくらい離れたかを計った方が良いということですかね。確かにエリオット波動のサイトなどを覗きますと、そういう表現になっていました。
フィボナッチ移動モードの色分けの件ですが、これは現仕様だと難しいですね。移動中は区別があるんですが、確定させた瞬間から区別がなくなってしまうため。
CSVの件ですが、これは比較的容易に実現可能だと思います。仰るような使い方は結構面白そうなので時間があったら仕様を考えてみたいと思います。

基本的に自分の書き殴ってるコードは、サンプルコードなのでご参考になれば幸いということでございます。
2019/01/28(月) 18:43:40.53ID:cvKeAoin0
データ更新の部分以外に多くのことを求めてもプログラムを書く人の負担になるしねえ
2019/01/29(火) 06:01:25.73ID:+BWeVILk0
2019/01/29(火) 06:02:31.15ID:+BWeVILk0
なぜか株価が置いてあるサイトの1月28日分が空白ページになっているようですがほかの人は閲覧できますでしょうか?
214名無しさん@お腹いっぱい。
垢版 |
2019/01/29(火) 06:59:46.77ID:7SH79JMv0
>>210  まず、ご迷惑をお掛けしまして、お詫びします。
長々と書きまして申し訳ございません。目を通して下さり、ありがとうございます。
またお世話になります。

まず、自分の説明力不足を痛感しますが。
あくまで一つ前のFibonacciライン機能の仕様を基準として自分の頭に置いてます。
以前の仕様では、この例と同じレベル数値を設定した場合、フィボナッチ拡張レベルはチャート描画において視覚的状態として「上下対照」の構造となっております。

こちらの新型フィボナッチ拡張レベルは。プラス方向へは、フォーカスレンジ値幅の2.618倍と1.618倍の距離を、上値を基準として離れた線を描画して。
マイナス方向へは、フォーカスレンジ値幅の3.618倍と2.618倍の距離を、下値を基準として離れた線を描画します。(コードの記述ではなく視覚的状態として)
このような視覚的に「上下非対照」の構造となる描画スタイルを意図しておられるなら、自分の考え違いです。

自分の質問は、以前の仕様の表示スタイルであれば、新規版のケースの-2.618が-3.618に該当し、-1.618が-2.618に該当しますというようなことです。
自分の知識では「3.618倍」という計算結果は誤りで、マイナス側のみそれぞれ1の減算が必要です。


Fibonacciラインの色分けの件と、CSVファイルの件ですが。何も分からず難題を申しました。
あくまで自分の意見を読んで下さったご感想などを伺いたいという、まずはその一心でして。
丁寧なご説明と一部のご賛同など、期待以上のご返答に感謝します。
残念ながら、自分が気に入ったサンプルコードを他者様へゴリ押しするかの記述が、作者様と他の皆さんへご迷惑をお掛けしました。以前にも似たようなことをやらかしたように思いますが、冒頭の通り、お詫びします。
自分の認識ではフィボナッチレベルは目安価格想定の一致頻度と精度の高い定番ツールの一つですが。
自分はコード編集に関して無知であり、コード肥大化の弊害懸念など皆さんの意見に従うが最善です。ご指摘に感謝します。
panacoranさんのソースに取り込んで頂く要望内容は、他者様から提案が出てこないようなら追々書きたいと思いますので、よろしくお願いします。

失礼しました。ありがとうございます。
2019/01/29(火) 12:18:03.23ID:X1zypTCo0
>>214
ということは、やはり(安値から高値方向に引いた場合)安値の起点から計るということと理解しました。違ったらごめんなさいね。

>>213
タクススケジューラで、FTPするモジュールがエラーになってました。今は、見えるはずです。
お知らせ、ありがとうございます。
2019/01/29(火) 18:53:05.02ID:WeIX5Szo0
>>215
なぜか株価が置いてあるサイトの件、ありがとうございます。
2019/01/29(火) 20:04:29.05ID:X1zypTCo0
>>215
フィボナッチ・リトレースメント機能のサンプルコード、戻りの反対、返しの測定値仕様修正。
値幅に対して、起点からいくらになったかを表示。例: 100円から200円までの値幅の場合、1,618%返し測定値が261円になるように変更。

OmegaChart Fibonacciリトレースメント Fibonacci.cs 新規追加 ※差し替え その6 修正ポイントには //☆Fibonacci 20190129
https://osdn.net/users/omegachartuser/pastebin/6039
変更点は569行目からの1つの関数内です。
218名無しさん@お腹いっぱい。
垢版 |
2019/01/30(水) 21:30:00.59ID:BkGItC3J0
OSDNのコピペ(Pastebin)はいつの間にかログインが必要になったのね。
1週間で削除される、匿名の投稿もできないのかな?
ヘルプでは以前と同じく、ログインと匿名とどちらもできるように書かれているけど。

アカウント作ってまでアップするかどうか悩む。
219名無しさん@お腹いっぱい。
垢版 |
2019/01/30(水) 21:43:45.47ID:qSiVpVpn0
>>217 Fibonacci.cs、ありがとうございます。バッチリ上下対照に戻りました。
以下は、利用上問題ありませんが些細なご報告です。
コード内のコメントアウトの位置ですが、もとは作者様デフォルト仕様で「.618、.5、.382」のシンプルモデルしたが、修正頂いた後は拡張レベルモデルのデフォルト仕様になってしまっております。
安値を起点として高値方向へ測定した場合には、起点となる安値が100で、終点となる高値が0の向きの表示序列となっております、修正以前や従来モデルとは起点と終点の表示序列が逆になってしまっております。
今のところは二点です、理解して使えば問題ありません。
>>214 の自分の説明文中の表記を間違えました、お詫びします。
220名無しさん@お腹いっぱい。
垢版 |
2019/01/30(水) 21:54:44.22ID:qSiVpVpn0
>>217 途切れました、続きです。

手動モードも良好です。ほぼフルカスタマイズ可能で、自動モードと手動モードで隙きがなく。平方根レベルを好む者にも応用自在。
例えば、値幅の進行方向へフィボナッチ拡張レベルを配置して、逆行方向へは逆進1.382倍レベルや均衡表計算値系統である半値整数倍拡張レベルなどを配置すると、表裏を使い分ける要領で目安想定種類の対応範囲が広がります。
フィボナッチは一般的測定方法だけでは足りません。
テクニックとしてこれを僅かにアレンジしたフィボナッチ「目安の下限」を描き足して、レベルの範囲想定的視点を持つことで測定精度の本領を発揮しますが。
その実態を知らなければ自分はフィボナッチと無縁でして、これが自動モードだけでは描けませんでした。
自動化は可能な単純な理屈です。測定する値幅の高値を一般的な上髭頂点から時間枠終値の最高値へ落すこと。
言い方によってはその程度の精度しかあてにならないというのが私見です。結果としてレベル目安は二重の線の間の範囲となります。
そして更に、このレベル想定範囲としての精度誤差を織り込むわけです。
仮に、ランダムに過去のある時点での過去5年間程度の株価レンジの変動ランキングを検索すると、だいたいOmegaChartに収録したどの時代でも上位1000銘柄ほどは250%以上のパフォーマンス、
3倍以上になったか3分の一以下になったりするようで、そんな相場のポテンシャルを踏まえ。
これをフィボナッチへ落し込み「0.236:1:4.236」の比率をカバー範囲とすると。
設定は、進行方向へ「4.236、2.618、1.618」、中心値幅の「1,0.764、0.618、0.5、0.382、0.236、0」賑やかになりますが、逆行方向には「-1.382、-1.5、-2、-2.5、-4」というのも一案かと。
検証は必要ですが面白いかも知れません。目安なんて大雑把ですが幅広く対応可能でしょう(テクニック必須)。

こんなこと自在に検索できるのもOmegaChartと皆さんのおかげです。こんなの知る限りの証券社ツールにありません、あればいいですけど。
自分はこの理屈の拡張キットで目安レベルのインジケータ表示してますが局面的なフィットが面倒でして。あくまで私見として、これをデフォ実装しないという考えは本当に無かったです。
お手数おかけしました、ありがとうございます。
2019/01/31(木) 02:25:15.15ID:fsYdMffn0
>>219
起点と終点の表示が逆になっているとの件ですが、どうも再現しなくて困りました。
https://static-cdn.osdn.net/thumb/g/5/695/800x600_0.png

自分が再現に使ったソースはこちらです。
panacoranさんの4fee7d9ソースをベースに、fibonacci.csを除く
https://egg.5ch.net/test/read.cgi/software/1488866170/860
これらのソースを取り込み、最後に、>>217のfibonacci.csの内容を取り込みました。

ちょっと困りましたね。
2019/02/02(土) 22:49:01.80ID:bLUD7kfm0
CSVファイルをドラッグドロップしてOmegaChartのデータ更新する機能のサンプルコード。
取り込むCSVの形式はOmegaChartに備わっているデータのエクスポート機能で出力されるものと同じ。
そのエクスポートされた全日数分書かれたCSVファイルを編集したものをドロップしてもいいし、
変更すべき1レコード、あるいは数レコードだけ書いてドロップするだけでも可能
OmegaChart側にない日付のレコードを書き入れた場合、新規追加される

注意点は以下
・エクスポートする際、「分割考慮」ボタンをオフにしないと修正株価のCSVファイルが出力されてしまう
 ⇒修正株価で上書きしてしまうと、正常なOmegaChart表示ができなくなります
 ⇒「分割考慮」ボタンは押されたときが分割を考慮してるときの状態。これを押されていない状態にしてCSV出力する
・CSVのファイル名が例えば「9984」だとしてもOmegaChart画面で開いている銘柄に書き込みに行く
・データの整合性、高安などが間違っていてもチェックなし
・OmegaChartのデータと変更が認められなければ何もしない。メッセージなし

万が一間違ってドロップしてしまった際のセーフティーネット
・ドロップ後、確認ダイアログ出力。銘柄名、変更箇所数が出力されるので確認する。キャンセルすれば何もしない
・.bakの1世代バックアップファイルを出力

OmegaChart ファイルをドロップしてデータ更新 Import.cs 新規追加ファイル
https://osdn.net/users/omegachartuser/pastebin/6047
OmegaChart ファイルをドロップしてデータ更新 MainFrame.cs 追加する部分には//☆DataImporter 20190202
https://osdn.net/users/omegachartuser/pastebin/6048
223名無しさん@お腹いっぱい。
垢版 |
2019/02/03(日) 08:44:38.45ID:s/fcJJHo0
>>222
この機能があればデータ補填に非常に役に立つ有用な機能ですね 早速試して見ました
個人的には信用売買残のデータがある場合とcsvの銘柄コードを識別しての更新にも対応して頂ければありがたいです
ともかくいつも有り難うございます
2019/02/03(日) 20:49:06.60ID:CFQv8C700
そういえば、OmegaChartに信用残を更新する標準機能ってありましたっけ? 
2019/02/03(日) 21:03:51.71ID:CQI3vTjI0
昔は、信用残のデータを取得していたのだけれども、現在に至るまでの過程で信用残のデータを取得できるサイトがなくなったとか、そういう話ではなかったかな
2019/02/03(日) 23:29:19.43ID:CFQv8C700
なるほど。

今、稼働している株価ダウンロード先で、信用データが手に入るのは、ヤフーファイナンスと有料だけどkabu.plusの2つかな。
OmegaChartのソースで、データ取り込みのときに使うclassは、NewDailyDataなんだけど、信用売、信用買の枠がそもそもないという、
当初からあまり重要視されていなかった項目要素に見えますね。
2019/02/04(月) 07:48:09.68ID:YHEqKedc0
信用残は週次データだからじゃないの。
2019/02/04(月) 08:40:40.50ID:Gy9BDI2f0
確かにそうなんですけど、dataフォルダ配下のファイルは日次ファイルなんですよね。
当時のMLを覗いたら、ケンミレで信用残が取れたみたいですが、2005年ぐらいに取れなくなって現在のような形骸化した項目になったみたいですね。
229名無しさん@お腹いっぱい。
垢版 |
2019/02/04(月) 10:55:34.00ID:gnnAt/s40
オメガのデータ形式は date,open,high,low,close,sold,buy の8個を'L8'形式でパックしてありますよね
今も信用残データをあそこから取ってますけど 多分223は信用残データを取れる様にして欲しいではなく
信用残データがあってもcsvファイルを読み込んで欲しいというのでは?
2019/02/04(月) 11:36:16.09ID:TBBYa2Qo0
まー、あんまりプログラムの書いてくれる人に負担を強いるのはよくないよ
2019/02/04(月) 11:37:58.84ID:TBBYa2Qo0
プログラムの→プログラムを
232名無しさん@お腹いっぱい。
垢版 |
2019/02/04(月) 21:19:33.54ID:7e6C6Tr00
信用残の話題ですが、興味半分に一つのヒントを投稿させてもらいます。

データ取得先として、Yahoo、トレステのスキャナーなどが考えられますが、元データであるJPXが公表する週次信用取引残高等
https://www.jpx.co.jp/markets/statistics-equities/margin/05.html
からデータを取得する方法も考えられます。

これは、pdfで公開されている為、C#で数値としてデータを取得するためにはpdfライブラリの利用が必要になります。
ライブラリの一つとしてiTextSharp(AGPLライセンス)があり、VSのNuGetからダウンロードとインストールが可能です。

これを利用した開発に興味がある方の為に、JPXからダウンロードしたpdfからテキスト出力するコンソールアプリを作ってみました。
コピペが使えないので次の投稿に書きますが、インデント等かなりみずらくてゴミかもしれません。
思いついて趣味の延長で書いてみたので大きな間違いがある可能性がありますので、あくまでも参考と考えてください。

使い方
1 VSでNetFramworkコンソールアプリを新規作成。
2 NugetからiTextSharpをインストール
 ツール - NuGetパッケージマネージャー - ソリューションのNuGetパッケージの管理
 左上の参照を選択して、検索ボックスにiTextSharpを入力して検索
 「iTextSharp」をクリックして右側のプロジェクトのチェックボックスをチェックしてインストール。
 ライセンス同意などの説明に従うとインストールされる。
3 JPXからsyumatsu2019012500.pdfファイルをダウンロードしてドキュメントフォルダにコピー
4 次の投稿のコードをコピペしてビルド(まだデバッグしない)
5 デバックで実行するとcsvファイルがマイドキュメントに出力される
注 コードは尾末に0が加えられた5桁コードです。

pdfのテキスト変換はセルの構造によっては数値の間に文字が入って意味不明になることもよくあります。
したがって、十分に確認していないので抜けまたは間違いあるかもしれませんし、信用性が劣る可能性も否定はできません。
自分は信用残を利用する予定はありませんが、興味ある方は自分で修正してOmegaChartに組み込むなりして利用してみてください。
iTextSharpの使い方はググると解決できると思います。
233名無しさん@お腹いっぱい。
垢版 |
2019/02/04(月) 21:23:45.94ID:7e6C6Tr00
>>232

using System;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
namespace ReadCredit
{
class Program
{
static void Main(string[] args)
{
string filename = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\syumatsu2019012500.pdf";
StringBuilder sb = new StringBuilder();
sb.AppendLine("記号,銘柄 種別,コード,新コード,売残計,前週比,貸残計,前週比,一般信用売,前週比,制度信用売,前週比,一般信用買,前週比,制度信用買,前週比");
using (PdfReader reader = new PdfReader(filename))
{
for (int i = 0; i < reader.NumberOfPages; i++)
{
string s = PdfTextExtractor.GetTextFromPage(reader, i + 1, new iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy());
string[] lines = s.Split('\n');
foreach (string line in lines)
{
string pattern = "(?<kigou>\\w{1})\\s{0,1}(?<name>.*?)(?<code5>\\d{5})\\s{0,1}(?<code_jp>JP\\d{10})\\s{0,1}(?<data>.*?)$";
Match m = Regex.Match(line.Replace(",", ""), pattern);
234名無しさん@お腹いっぱい。
垢版 |
2019/02/04(月) 21:26:52.84ID:7e6C6Tr00
>>233

if (m.Success)
{
sb.AppendFormat("{0},{1},{2},{3},{4}"
, m.Groups["kigou"], m.Groups["name"].Value, m.Groups["code5"].Value, m.Groups["code_jp"].Value
, m.Groups["data"].Value.Replace("▲ ", "-").Replace(" ", ","));
sb.AppendLine();
Console.WriteLine("{0}\t{1}\t{2}\t{3}"
, m.Groups["name"].Value, m.Groups["code5"].Value, m.Groups["code_jp"].Value, m.Groups["data"].Value);
}
}
}
}
//新証券コードの記載があるものだけ 市場計は正規表現パターン変更必要
File.WriteAllText(filename.Replace(".pdf", ".csv"), sb.ToString(), Encoding.Default);
Console.WriteLine("hit any key then quit");
Console.ReadKey();
}
}
}
235名無しさん@お腹いっぱい。
垢版 |
2019/02/04(月) 21:32:50.91ID:7e6C6Tr00
>>232
使い方4の 「まだデバッグしない」は誤記です。
コピペした後に一番最後の行の「}」を一度消して再入力リターンでインデントが復活するはずですから、
そのままデバッグしてOKです。
2019/02/05(火) 08:17:37.65ID:js4YsfOc0
PDF読み込みは以前非常に難儀した覚えが。iTextSharp、参考にさせていただきます。
237名無しさん@お腹いっぱい。
垢版 |
2019/02/05(火) 20:25:14.90ID:McfuNbfV0
>>221
お手数でした、失礼しました。
指摘を頂いた通り、自分も指定ファイルを用いて再現してみて悩んでおりましたが。UPして頂いた見本画像と自分の報告状態が、そもそも同じだったことに気がつくまでに数日を要しました。

見本画像に示された通り、安値を起点に高値へ描いた場合ですと。以前の自動モード仕様では起点安値メモリ==0、終点高値メモリ==100。
付随して、その他のメモリも入れ替わっており。画像の例ですと、高値の延長線方向が「+」メモリで、起点安値の下方が「-」メモリとして表示されるのが以前の従来仕様の表示スタイルです。
上記は全てチャート描画の見た目の状態「左側目盛り」のことです。これを好みに応じてスタイルを変更するには、以前の仕様のコード変更項目の修正では変化しなくなりましたね。
やはり自分の説明力不足でご迷惑をお掛けしました。
画像の例ですと「安値→高値へ測定した場合」なので以下のような左側メモリが考えられます。
> ↑(トレンド)値動き進行方向の場合
> 2.618
> 1.618
> 100 (終点)、ここは、例えばHiと書き換えても常に固定で好都合でした。
> 0.236   又は、0.764どちらでも
> 0.382   又は、0.618どちらでも
> 0.5
> 0.618   又は、0.382どちらでも
> 0.764   又は、0.236どちらでも
> 0 (始点)、ここは、例えばLoと書き換えても常に固定で好都合でした。
> -1.618
> -2.618
> ↓(トレンド)値動き逆行方向の場合
本当に何度もすみません。
2019/02/05(火) 21:39:34.26ID:js4YsfOc0
>>237
その問題ですが、マケスピのフィボナッチリトレースメントは、起点が0で終点が100です。Tradingviewは真逆で、起点が1で終点が0です。
自分的には、リトレースメントという名前からどのくらい戻ったかという意味合いになると思っています。起点までの戻り=全戻し=100%戻しというのがしっくりします。
しっくりくるか来ないかなので、ご自分でご自由に変えてくださいという話になります。時間が取れれば変更方法などをお伝えしたいとは思うのですが。
239名無しさん@お腹いっぱい。
垢版 |
2019/02/06(水) 12:04:54.10ID:0Cw+5GOE0
コードはちゃんと見ている様だし それくらいは自分でやるべきでは
2019/02/07(木) 17:09:06.04ID:LUWhv+JH0
さすがにクレクレが過ぎるような
2019/02/07(木) 18:09:44.75ID:+DY6hy9/0
>>238
フィボナッチ・リトレースメントの並びの件で、修正できたのでお知らせします。

フィボナッチ・リトレースメントの画面描画上の並びを変えたい場合は、新しく書いたfibonacci.csの539行目あたりのFibonacciDrawLines、
これにあるSORTINGの内容をtrueにすると、起点ラインが100%終点ラインが0%となり、falseにすると起点ラインが0%終点ラインが100%となります。
自分の理解が正しければ、>>237さんの期待した並びはfalseにするとなるはずです。ついでに気になっていたところも直しておきました。

OmegaChart Fibonacciリトレースメント Fibonacci.cs 新規追加 ※差し替え その7 修正ポイントには //☆Fibonacci 20190207
https://osdn.net/users/omegachartuser/pastebin/6056
2019/02/07(木) 20:30:41.07ID:+DY6hy9/0
>>241
ミスがあったので、取り消します。
2019/02/07(木) 22:25:50.06ID:+DY6hy9/0
>>241
差し替えました。説明は同様です。
https://osdn.net/users/omegachartuser/pastebin/6057

画面のフィボナッチ級数に%を付けたいという話もあったかと記憶していますが、564行目に変えたい人が選択できるようにしておきました。
244名無しさん@お腹いっぱい。
垢版 |
2019/02/10(日) 15:10:46.51ID:Hjdq8gfq0
無尽蔵データ読み込み時におけるデータ欠落について。

ファイル:Mujinzou.cs
クラス:internal class MujinzouDataSource : DailyDataSource
メソッド:private Hashtable FillData(int date)
行:93行(if(br!=null &&)の直前に以下の行を追加して無尽蔵のデータを更新してみてください。

//<<-- add for debug
if (br != null && !CheckMarket(br, Util.ParseInt(t[2], 0)) && !br.Obsolete) {
File.AppendAllText(Path.Combine(Env.GetAppDir(), "DownloadError.csv"),
string.Format("無尽蔵,市場不一致,{0},{1},{2},{3},{4}\r\n",
date, br.Code, br.Name, br.Market, line.Replace(",", "\t")), Encoding.Default);
}//-->>

index.txtと市場不一致のために取りこぼされた銘柄がcsvに出力されます。

また、取得先urlを"http://souba-data.com/k_data/"; + d2.ToString(@"yyyy/yy_MM/TyyMMdd")に変更(無尽蔵ページ過去データの取得先)すると複数市場への重複上場のデータがダウンロードされます。
このメソッドに前行のコードを新たな変数にセットして、前行で市場不一致であっても次の行で合致すれば成功と出力するようにコードを変更すれば、大幅に取りこぼしが減るようです。

しかし、これでもマザーズないしジャスダックと東証で市場の入力ミスがあるようで取りこぼしが発生します。
一つの案としては、url変更に加えて3番目の列ではなく最終列の市場名でチェックするようにロジック変更することでかなり防げるような気がしています。
あるいは、エラーの銘柄だけ他のデータソースをチェックしに行くという方法も考えられます。


無尽蔵の場合はデータ更新時間が短いのが利点ですが、このほかにも時々日経平均が更新されないことが原因かもしれませんが、たまにスクリーニング結果でペインが表示されない不具合が出現するような気がしています。
245名無しさん@お腹いっぱい。
垢版 |
2019/02/10(日) 20:21:45.88ID:Hjdq8gfq0
Edatalabもチェックしてみました。

ファイル:Edatalab.cs
クラス:internal class EdatalabDataSource : DailyDataSource
メソッド:private Dictionary<int, NewDailyData> FillData(int date)
行番号:74
continue;
を以下に変更
{
File.AppendAllText(Path.Combine(Env.GetAppDir(), "DownloadError.csv"),
string.Format("Edatalab,市場不一致,{0},{1},{2},{3},{4}\r\n",
date, br.Code, br.Name, br.Market, line.Replace(",", "_")), Encoding.Default);
continue;}

また、メソッド最後の「return;」の前に以下を追加するとindex.textとビルトインコードで更新されなかったコード一覧がエラーログに追加されます。

foreach (AbstractBrand brand in Env.BrandCollection.Values) {
if (brand.IsBuiltIn | brand.IsCommodity | brand.IsDomesticIndex | brand.IsForeignIndex |
brand.IsIndexFuture | brand.IsSectorIndex || !(brand as BasicBrand).Obsolete) {
if (!result.ContainsKey(brand.Code) && brand.Market != MarketType.Custom) {
File.AppendAllText(Path.Combine(Env.GetAppDir(), "DownloadError.csv"),
string.Format("Edatalab,追加不能,{0},{1},{2},{3}\r\n",
date, brand.Code, brand.Name, brand.Market), Encoding.Default); } } }


Edatalabにもコードの不一致が数件あり取りこぼしているようです。
Edatalabは東証、マザーズ、ジャスダックのみを対象にしているようですからマーケットチェックは必要ないような気がしました。
246名無しさん@お腹いっぱい。
垢版 |
2019/02/11(月) 06:46:08.29ID:Rx0pQac10
データの取りこぼしはどこでも少なからず起きている様です 銘柄の特定が出来ればその対処に役立ちます
今は別スクリプトを利用したりブックマークに取り込み 1銘柄だけの更新機能を利用させて頂いていまが
CSVファイルを使った更新等々色々改善が期待できるところがありそうです
2019/02/11(月) 11:51:21.64ID:oenGpzRU0
>>222
CSVファイルをドラッグドロップしてOmegaChartのデータ更新する機能のサンプルコード。
2つの仕様変更を盛り込んでみました。

・信用残データが残る仕様に変更。信用残の項目は、書き込み対象にも比較対象にもならないのは従来通り。
・ドロップするCSVファイル名が数字4桁だったら、その数字の銘柄データとして扱う。存在しないコードだったら表示画面の銘柄として扱う。
2019/02/11(月) 11:53:08.60ID:oenGpzRU0
>>247
2019.2.11の修正で変更が必要になるのはData.csとImport.cs。MainFrame.csは変更なし。

OmegaChart ファイルをドロップしてデータ更新 Data.cs 追加する部分には//☆DataImporter 20190211
https://osdn.net/users/omegachartuser/pastebin/6061
OmegaChart ファイルをドロップしてデータ更新 Import.cs 差し替えその1 新規追加ファイル
https://osdn.net/users/omegachartuser/pastebin/6062
2019/02/11(月) 13:37:44.39ID:8XbzMaxo0
>>244 無尽蔵はそもそも銘柄の市場が間違っているところがちょこちょこありませんか?

>>248 どうもありがとうございます。
250名無しさん@お腹いっぱい。
垢版 |
2019/02/12(火) 06:30:34.38ID:f6NvhC/k0
>> 247, 248
223 << です 当方の勝手な要望を聞いて頂き有り難うございます
ただ相当な御迷惑をお掛けした様子が窺えます 安易な書き込みには気をつけます
251名無しさん@お腹いっぱい。
垢版 |
2019/02/12(火) 21:54:56.67ID:MyBX68rD0
>>244
無尽蔵データの当日株価と過去株価についてもう少し詳しく調べるコンソールアプリを作成してみました。

d_dataの方が当日、k_dataの方が過去株価のようです。
OmegaChartで取得する当日株価の方が市場、0データ、銘柄の重複を含め間違いが多いような気がします。
また、過去株価でも市場と無尽蔵独自の市場コードや銘柄名などで間違いがあるようですが、市場名のフィールドに関しては1部と2部あるいは2部とマザーズの間違いがほとんどのようでした。

データインポートには過去株価の方が良さそうに思えますが、コード変更が多くなってしまうでしょう。
index.txtを更新せずに市場変更があった場合には、データダウンロードで市場チェックをしていると取りこぼしの原因になると考えられます。
信頼性に欠ける面はありますから、素直に他のデータソースを使えということになりますかね。
Edatalabを市場チェックせずに利用するのが一番早くて簡単かもしれません。

ちなみに、ヤフーがデータソースの場合は優先市場の取得で市場チェックしていないのでindex.txtにあるコードは更新されるようです。
ところで、昔のヤフー時系列は前日分までだったと記憶していたのですが今見てみたら今日のデータも追加されているのですね。


検証したコンソールアプリを次に参考として投稿しておきます。
適当に日付を変更して、Omegaのディレクトリを変更する必要があります。
新規作成したコンソールアプリのメインメソッドに貼り付けてください。
zipファイルをHttpClientでStream取得して直接読み込むため、System.IO.Commpressionの参照が必要です。
252名無しさん@お腹いっぱい。
垢版 |
2019/02/12(火) 21:58:37.03ID:MyBX68rD0
//>>251 Mujinzou.cs 1
//新規にコンソールアプリを作成、要参照追加 System.IO.Compressionの参照追加して以下をメインにコピペ
//dateを適当に変更して実行 *ウンロードできなければエラーとなる
DateTime date = DateTime.Parse("2019/2/12");
string[] urls = new string[] {
"http://souba-data.com/d_data/"; + date.ToString(@"yyyy\d/yy_MM\d/TyyMMdd") + ".zip",
"http://souba-data.com/k_data/"; + date.ToString(@"yyyy/yy_MM/TyyMMdd") + ".zip" };
string[] sources = new string[2] { null, null };
using (System.Net.Http.HttpClient client = new System.Net.Http.HttpClient()) {
for (int i=0;i<2;i++) {
using (var zipStream = client.GetStreamAsync(urls[i]).Result) {
using (System.IO.Compression.ZipArchive archive = new System.IO.Compression.ZipArchive(zipStream)) {
using (System.IO.StreamReader reader = new System.IO.StreamReader(archive.Entries[0].Open(),
System.Text.Encoding.Default)) {
sources[i] = reader.ReadToEnd();
System.IO.File.WriteAllText((i == 0 ? "t" : "k") + archive.Entries[0].Name, sources[i], Encoding.Default);
} } } } }
Dictionary<int, string[]> dicIndexMarket = new Dictionary<int, string[]>();
string indexfile = @"Z:\data\trade\OmegaChart\index.txt";
string[] lines = System.IO.File.ReadAllLines(indexfile, Encoding.Default);
foreach (string line in lines) {
string[] cols = line.Split(',');
if (cols.Contains("OBS"))
continue;
if (int.TryParse(cols[0], out int code)) {
dicIndexMarket.Add(code, new string[]{cols[1], cols[2],
cols[2].Replace("T1","東証1部").Replace("T2","東証2部").Replace("J","JAQ").Replace("M","東証マ") });
} }
253名無しさん@お腹いっぱい。
垢版 |
2019/02/12(火) 22:05:53.80ID:MyBX68rD0
//>>251 Mujinzou.cs 2
SortedDictionary<int, string> dic = new SortedDictionary<int, string>();
lines = sources[0].Replace("\r", "").Split('\n');
foreach (string line in lines) {
if (line.Trim() == "") continue;
string[] cols = line.Split(',');
int code = int.Parse(cols[1]);
if (dic.ContainsKey(code)) {
Console.WriteLine("当日株価データに重複して存在しています {0}", code);
Console.WriteLine(" 新 :{0}", line);
Console.WriteLine(" 既存:{0}", dic[code]);
continue; }
dic.Add(code, line); }
Console.WriteLine("\r\nindex.txtのOBS以外で銘柄当日株価に銘柄コードが見当たらないもの");
foreach (int code in dicIndexMarket.Keys) {
if (!dic.ContainsKey(code))
Console.WriteLine(" {0} {1} {2}", code, dicIndexMarket[code][1], dicIndexMarket[code][0]); }
Console.WriteLine("\r\nindex.txtに存在しない当日株価の銘柄");
foreach (var pair in dic) {
if (pair.Key > 1300 && !dicIndexMarket.ContainsKey(pair.Key))
Console.WriteLine(" {0}", pair.Value); }
lines = sources[1].Replace("\r", "").Split('\n');
Dictionary<int, List<string[]>> dicPast = new Dictionary<int, List<string[]>>();
for (int i = 0; i < lines.Length; i++) {
if (lines[i].Trim() == "") continue;
string[] cols = lines[i].Split(',');
int code = int.Parse(cols[01]);
if (dicPast.ContainsKey(code)) {
List<string[]> list = dicPast[code];
list.Add(cols);
dicPast[code] = list; }
else dicPast.Add(code, new List<string[]> { cols }); }
254名無しさん@お腹いっぱい。
垢版 |
2019/02/12(火) 22:08:52.25ID:MyBX68rD0
//>>251 Mujinzou.cs 3
Console.WriteLine("\r\nindex.txtと市場が異なる当日株価の銘柄");
foreach (var pair in dic) {
string[] cols = pair.Value.Split(',');
if (dicIndexMarket.ContainsKey(pair.Key) && cols[9] != dicIndexMarket[pair.Key][2]) {
StringBuilder sb2 = new StringBuilder();
if (!dicPast.ContainsKey(pair.Key))
sb2.Append("該当銘柄なし");
else {
foreach (string[] cols2 in dicPast[pair.Key]) {
if (cols2[9] == dicIndexMarket[pair.Key][2]) {
sb2.Clear();
sb2.Append("[一致]");
sb2.Append(string.Join(",", cols2));
break; }
else
sb2.Append(cols2[9] + ","); } }
if (!sb2.ToString().Contains("[一致]")) {
sb2.Remove(sb2.Length - 1, 1);
sb2.Append("(一致せず)"); }
Console.WriteLine(" {0} omega[{1,-2}] 当日株価:({3}){2} \t過去:{4}\t{5}",
pair.Key, dicIndexMarket[pair.Key][1], cols[9], cols[2], sb2.ToString(), dicIndexMarket[pair.Key][0]); } }
Console.WriteLine("\r\n過去株価に存在するが当日株価には存在しない銘柄コード");
for (int i = 0; i < lines.Length; i++) {
if (lines[i].Trim() == "") continue;
int code = int.Parse(lines[i].Split(',')[1]);
if (!dic.ContainsKey(code))
Console.WriteLine(" {0}", lines[i]); }
255名無しさん@お腹いっぱい。
垢版 |
2019/02/12(火) 22:09:45.24ID:MyBX68rD0
//>>251 Mujinzou.cs 4
Console.WriteLine("\r\n過去株価と当日株価の内容が異なるもの");
int prevcode = 0;
StringBuilder sb = new StringBuilder();
for (int i=0;i<lines.Length;i++) {
if (lines[i].Trim() == "")
continue;
int code = int.Parse(lines[i].Split(',')[1]);
if (!dic.ContainsKey(code))
continue;
if (code != prevcode) {
if (sb.Length > 0 && !sb.ToString().Contains("当日株価に一致"))
Console.WriteLine(sb.ToString());
sb.Clear(); }
//過去株価では名証が名古となっている
if (lines[i].Replace(",名古",",名証") != dic[code]) {
if (code != prevcode) {
sb.AppendFormat(" 当日株価:{0}\r\n", dic[code]);
sb.AppendFormat(" 過去株価:{0}\r\n", lines[i]); }
else
sb.AppendFormat(" 過去株価:{0}\r\n", lines[i]); }
else if(code == prevcode) {
sb.AppendFormat(" 過去株価:{0} 当日株価に一致", lines[i]); }
prevcode = code; }
Console.WriteLine("hit any key then quit");
Console.ReadKey();
256名無しさん@お腹いっぱい。
垢版 |
2019/02/13(水) 07:47:39.40ID:tmp3OF8z0
>>251 2/12の無尽蔵当日(OmegaChartがダウンロードする)ファイルで4本値が間違っているもの一覧
いずれも過去ファイルには出来高ありますが、当日には出来高なしで要注意。

 当日:2019/2/12,9793,11,9793 ダイセキ,0,0,0,0,0,東証1部
 過去:2019/2/12,9793,31,9793 ダイセキ,0,0,0,0,0,名古1部
 過去:2019/2/12,9793,11,9793 ダイセキ,2578,2636,2576,2624,96700,東証1部

 当日:2019/2/12,9900,11,9900 サガミ,0,0,0,0,0,東証1部
 過去:2019/2/12,9900,31,9900 サガミ,0,0,0,0,0,名古1部
 過去:2019/2/12,9900,11,9900 サガミ,1325,1334,1318,1324,36000,東証1部

 当日:2019/2/12,9956,11,9956 バロー,0,0,0,0,0,東証1部
 過去:2019/2/12,9956,31,9956 バロー,0,0,0,0,0,名古1部
 過去:2019/2/12,9956,11,9956 バロー,2656,2749,2635,2748,244300,東証1部

 当日:2019/2/12,9966,11,9966 藤久,0,0,0,0,0,東証1部
 過去:2019/2/12,9966,31,9966 藤久,0,0,0,0,0,名古1部
 過去:2019/2/12,9966,11,9966 藤久,743,747,742,743,2200,東証1部

 当日:2019/2/12,9969,12,9969 ショクブン,0,0,0,0,0,東証2部
 過去:2019/2/12,9969,32,9969 ショクブン,0,0,0,0,0,名証セ
 過去:2019/2/12,9969,12,9969 ショクブン,227,235,220,233,119300,東証2部

 当日:2019/2/12,9982,11,9982 タキヒヨー,0,0,0,0,0,東証1部
 過去:2019/2/12,9982,31,9982 タキヒヨー,0,0,0,0,0,名古2部
 過去:2019/2/12,9982,11,9982 タキヒヨー,1771,1793,1764,1787,8900,東証1部

 当日:2019/2/12,9987,11,9987 スズケン,0,0,0,0,0,東証1部
 過去:2019/2/12,9987,31,9987 スズケン,0,0,0,0,0,名古2部
 過去:2019/2/12,9987,11,9987 スズケン,5650,5860,5620,5830,367700,東証1部
2019/02/13(水) 12:03:56.19ID:5n4hjP030
どうもありがとうございます。
258名無しさん@お腹いっぱい。
垢版 |
2019/02/13(水) 19:35:35.81ID:tmp3OF8z0
>>245
1月以降を見た限りではEdataLabには市場番号の間違い以外にも、一部データに抜けがありました。
しかし、この抜けはよく見てみると取引のなかった銘柄がファイルに含まない仕様が原因と思われました。
これ以外はBrandCollectionに存在する上場廃止以外の個別銘柄の全てが含まれている様です。

自分はこれまで取引のない場合は0埋めで利用していたので、この場合は出来高0のTradeDataを追加して利用してみようかと考えています。

4本値自体が正確かどうかまでは面倒なので調べていません。
2019/02/14(木) 08:42:53.40ID:g9ldMBvo0
データダウンロード元ごとにセレクトできる機能もあったら便利かもしれないですね。
2019/02/16(土) 12:42:29.96ID:Fcv+BUgc0
>>258 いろいろと精査、ありがとうございます。
2019/02/16(土) 23:46:30.48ID:DXxl64GW0
無尽蔵、2/12の当日データ。 2503キリンHが2つあるね。
262名無しさん@お腹いっぱい。
垢版 |
2019/02/17(日) 06:36:08.93ID:3yGscUB10
それはコードの25030と25035との2つが切り詰められたせい
2019/02/17(日) 16:10:01.42ID:7MCH8n720
無尽蔵当日の方は銘柄コードに対してユニークでなければならないはずと思ってたんだけど、
Mujinzou.csの中で、株価を格納するのがHashtableで、これって重複したキーのデータを取り込む時は上書きするようで、ちょっと感動した。
264名無しさん@お腹いっぱい。
垢版 |
2019/02/19(火) 13:19:28.12ID:rxhGTWH+0
OmegaChartも随分良くなったがある意味クレクレのおかげでもあるな
265名無しさん@お腹いっぱい。
垢版 |
2019/02/21(木) 15:09:50.20ID:vnJKHizh0
ああちょうせんぼうえいだいじん
266名無しさん@お腹いっぱい。
垢版 |
2019/02/22(金) 11:38:37.58ID:Ur9eo/Tg0
資産300億オーバー
国内44歳以下専業トレーダー首位のBNF氏も
Omegachartで800から1000のチャートを記憶していました
2019/02/22(金) 12:25:28.35ID:eTTw/Kpb0
BNFがomega使うかよ無知
2019/02/22(金) 20:00:13.81ID:6dcCX3Au0
2005年あたりのチャート環境は、Fchartか、OmegaChartかって感じだった。あんまり選択肢なかったな。
Alfaチャートという、いまいちなチャートから乗り換えて、その使用感と拡張性に感動したのがOmegaChartだった。
269名無しさん@お腹いっぱい。
垢版 |
2019/02/23(土) 06:46:45.73ID:ss4c00km0
ブィーエヌエフでーす Omegachartの使い方教えましょか
270名無しさん@お腹いっぱい。
垢版 |
2019/02/24(日) 07:52:42.82ID:LWCvphBG0
アホ〜 何か くれてやろか
271名無しさん@お腹いっぱい。
垢版 |
2019/02/25(月) 08:09:45.69ID:+rj+6hc40
おぉう そんなに利口ならアレくれアレを
272名無しさん@お腹いっぱい。
垢版 |
2019/02/27(水) 17:07:40.85ID:n8K3M/z30
アレて何ですか
273名無しさん@お腹いっぱい。
垢版 |
2019/02/27(水) 20:34:14.93ID:OEl0hTy10
無尽蔵さんで2月20日データ抜けが少しあるようですが
6573,6618、9272、、、まだありそうですかね
2019/02/27(水) 21:39:11.96ID:38kXoanj0
今確認したら、その3つとも取れてますね・・・
275名無しさん@お腹いっぱい。
垢版 |
2019/02/28(木) 08:16:42.13ID:nE5gdjt60
>>273
JPXの日報PDFと無尽蔵を比較しました。
4本値の異常 9793,9900,9956,9966,9969,9982,9987
無尽蔵に存在しない日報銘柄(PROMarket除く) 25935,1475,1476,1477,1478,1654,1773,8686,9399,6697,4875
外国銘柄も含まれています

なぜかとは25935以外は一致している様です
276名無しさん@お腹いっぱい。
垢版 |
2019/03/01(金) 20:03:36.49ID:2s2JexZy0
確認ありがとうございます。
なぜかうちの子は抜け分をDLできないらしいですね。
277名無しさん@お腹いっぱい。
垢版 |
2019/03/02(土) 00:24:15.09ID:HxSHkHkS0
>>276
2/20に限って調べると、無尽蔵3列目の市場番号と10列目の市場名が一致しない銘柄がいくつかあります
(11:T1 12:T2 13:M 91:J 31-33:名古屋)
code 市場番号 市場名 銘柄名 index.txt
1439 13 JAQ 安江工務店 J
1464 12 東証1部 大和J400ダブル T1
3349 12 東証1部 コスモス薬品 T1
3419 13 名証セ アートグリーン なし
5704 13 東証M JMC M
6178 13 東証1部 日本郵政 T1
6190 13 JAQ フェニックス M
9279 11 東証マ ギフト M

Mujinzou.csのCheckMarketのロジックを見る限りでは、5704のJMC以外は取りこぼしていると思います。

対策1 129行からの「CheckMarket」の一部を変更
case MarketType.T1:
return muj == 11 || muj == 12 || muj == 13;
case MarketType.M:
return muj == 21 || muj == 13 || muj == 11;
case MarketType.J:
return muj == 91 || muj == 13;
ただし、これ以外の日に市場番号に別の間違いがあれば取りこぼすと思います。

対策2 93行を以下に変更(市場チェックしない)
if(br!=null) {

4本値の間違いに関しては、他のデータソースを利用するしかないと思われます。
278名無しさん@お腹いっぱい。
垢版 |
2019/03/02(土) 00:39:33.71ID:HxSHkHkS0
>>277 追記
列10の市場名とJPXの日報の市場が一致しない銘柄(ETF、出資証券など除く)もリストアップしてみました

code JPX市場名 無尽蔵市場名 銘柄名 index.txt
3131 JASDAQスタンダード銘柄 東証マ シンデンハイ  J
3143 市場第二部 東証マ オーウイル   T2
3350 JASDAQスタンダード銘柄 東証1部 レッドプラネット J
3560 JASDAQスタンダード銘柄 東証マ ほぼ日   J
3571 市場第一部 東証2部 ソトー   T1
3671 マザーズ銘柄 東証1部 ソフトマックス M
3810 市場第二部 東証マ サイバステ T2
4033 市場第一部 東証2部 日東エフシー T1
6045 マザーズ銘柄 東証2部 レントラックス M
6190 マザーズ銘柄 JAQ フェニックス M
6698 市場第二部 東証マ ヴィスコテク T2
7805 JASDAQスタンダード銘柄 東証マ MTG J
7806 マザーズ銘柄 JAQ プリントネット M
9275 市場第二部 東証マ ナルミヤイン T2
9658 市場第一部 東証2部 ビジ太田昭 T1


これらも一部は取り込められていないと思われます。

なお、7805と7806の銘柄名は逆のようです
ダウンロードせずにプログラムでチェックしているので、目視で確認まではしていません。
もしかするとこちらのプログラムミスかもしれません。
2019/03/02(土) 10:02:42.57ID:oVOxFTJx0
どうもありがとうございます
280名無しさん@お腹いっぱい。
垢版 |
2019/03/04(月) 13:18:44.35ID:LZlgT9og0
まだ DreamVisor から業種別指数取れますね サンプルコードを使わせてもらって○探から個別株と業種別指数は取れる様になった
しかしC#が駄目な上に手抜きの小細工なので_codeQueue.EnqueueにSI_FISHINGなどをを書き足すだけ ちょっと恥ずかしい
33個もあればせめてループさせたいがC#の素人ではソースがよく分からずに困っています Mujinzouからのダウンロードにも対応させるには
多分DowloadOrderの書き換えがいるんだろうが全くの力不足で時間がかかりそう せめて最初のループの所だけでもなんとかしたい
どなたかヒントだけでも結構ですので御教示お願い出来ませんか
281名無しさん@お腹いっぱい。
垢版 |
2019/03/04(月) 22:19:50.48ID:0q1xLtMe0
>>280
現在取得できていて分かりやすければそれでいいと思いますが。

今後のプログラミングの勉強としてforループの例をアドバイスすると、.Enqueueの場所で
for(int code=(int)BuiltInIndex.SI_FISHING;code<=(int)BuiltInIndex.SI_SERVICE;code++)
_codeQueue.Enqueue(code);
と書くことで33業種をまとめて追加できると思います。

また、ウェブページをダウンロードするメソッド内にも、
if(code >= (int)BuiltInIndex.SI_FISHING & code<=(int)BuiltInIndex.SI_SERVICE)
code = [ウェブページの水産コード番号] + code - (int)BuiltInIndex.SI_FISHING;
とするとコードが短くなると思います。
*当然ウェブページのコード番号が連番でなければなりません。

考えたままに書き込んでいるので間違いがあるかもしれません。
■ このスレッドは過去ログ倉庫に格納されています
大学生アイラと影の怪物と戦うリョウが、深夜3時3分の静止した世界で交錯する超常スリラーの概要

ニューススポーツなんでも実況